Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Wtl :)

292
19 сентября 2005 года
Matush
726 / / 14.01.2004
Сегодня у меня был первый день знакомства с ВТЛ.
Вкачестве литературы исользывался RSDN.ru и семплы ВТЛ (BMPView, MDIDocVw).
Есть ряд вопросов.
1. Почему в ВТЛовских семплах реализация методов находится внутри класса?
2. Где есть еще какая инфа?
3
19 сентября 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Matush
1. Почему в ВТЛовских семплах реализация методов находится внутри класса?


Несколько правильных вариантов:

1) WTL построена на шаблонах, как известно шаблоны нельзя разносить по .h и .cpp файлам (современные компиляторы не поддерживают export).
Поэтому и по-аналогии и нешаблонные классы пишут так же с реализацией.

2) примеры вообще удобнее писать в таком порядке, определение + реализация.

Но мой совет: там, где реализацию и определение можно разнести, - разноси. Это и удобнее для просмотра кода и быстрее компилится.
Но, конечно, без фанатизма. Например гетеры и сетеры в большинстве случаев разносить на определение и реализацию не стоит.

Цитата:
Originally posted by Matush
2. Где есть еще какая инфа?


google.com :)
Ну и здесь на форуме ни раз приводились интересные ссылки.

292
21 сентября 2005 года
Matush
726 / / 14.01.2004
При компиляции получаю эррор
#if (_WIN32_IE < 0x0300)
#error WTL requires IE version 3.0 or higher
#endif

хотя ИЕ у меня 6.
что можете посоветовать?
3
21 сентября 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Matush
При компиляции получаю эррор
#if (_WIN32_IE < 0x0300)
#error WTL requires IE version 3.0 or higher
#endif

хотя ИЕ у меня 6.
что можете посоветовать?


А студия какая?
Попробуй отыскать место, где определяется макрос (я навскидку не помню), и поправить там.
Либо вообще задать прямо в главном заголовочном файле проекта (а-ля stdafx.h) этот макрос другим значением.

292
21 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Green
А студия какая?
Попробуй отыскать место, где определяется макрос (я навскидку не помню), и поправить там.
Либо вообще задать прямо в главном заголовочном файле проекта (а-ля stdafx.h) этот макрос другим значением.



Цитата:
Originally posted by Green
А студия какая?
Попробуй отыскать место, где определяется макрос (я навскидку не помню), и поправить там.
Либо вообще задать прямо в главном заголовочном файле проекта (а-ля stdafx.h) этот макрос другим значением.



VC 6.0.
эрор находиться в atlapp.h (походу и в других АТЛовских *.h, есть такое условие).
На счет поправить вручную, тогда компилится.

Хотелось бы узнать откуда вообще берется значение версии ИЕ, и почему оно оибочно.

И еще, что меня сбило с толку и я даже подумал что этот глюк из-за того что я вручную еррор поправил - смотри аттач. Это файл с РСДН.ру демонстрирующий использывание карты масштабирования (полезнейшая вещь, столько гемороя пропадает). Так вот, у меня окошко не рсайзится. Или они криво написали, или ???

406
21 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Еще бы хотелось задать здесь вопрос касательно технологии MS VisualStudio 2002 (VC++ 7.0) IntelliSense. Как cделать так чтобы допустим после обявления класса CCommandBarCtrl m_CCmdBar;
после нажатия операторов доступа к членам .,-> вылазил бы список с членами данного класса?
А то фигово как то изучать данную библиотеку каждый раз обращяясь за именем и описанием нужного члена класса в соответствующий хедер и дописывать ее вручную.
В качестве своего первого примера я использовал по умолчанию созданый дефолтный SDI проект. Там есть данный класс,и все компилится на ура,вот только эта неприятность отсутствие всплывающего списка огорчает.

PS: Использую WTL 7.5
3
21 сентября 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by vitaly2003s

На счет поправить вручную, тогда компилится.


Надеюсь, ты правил не файли WTL, а свои.

Цитата:
Originally posted by vitaly2003s

Хотелось бы узнать откуда вообще берется значение версии ИЕ, и почему оно оибочно.


Навскидку не помню, отвечу позднее.

Цитата:
Originally posted by vitaly2003s

И еще, что меня сбило с толку и я даже подумал что этот глюк из-за того что я вручную еррор поправил - смотри аттач. Это файл с РСДН.ру демонстрирующий использывание карты масштабирования (полезнейшая вещь, столько гемороя пропадает). Так вот, у меня окошко не рсайзится. Или они криво написали, или ???


Не вижу аттачмента.

Цитата:
Originally posted by vitaly2003s
Еще бы хотелось задать здесь вопрос касательно технологии MS VisualStudio 2002 (VC++ 7.0) IntelliSense. Как cделать так чтобы допустим после обявления класса CCommandBarCtrl m_CCmdBar;
после нажатия операторов доступа к членам .,-> вылазил бы список с членами данного класса?
А то фигово как то изучать данную библиотеку каждый раз обращяясь за именем и описанием нужного члена класса в соответствующий хедер и дописывать ее вручную.
В качестве своего первого примера я использовал по умолчанию созданый дефолтный SDI проект. Там есть данный класс,и все компилится на ура,вот только эта неприятность отсутствие всплывающего списка огорчает.


Думаю, Visual Assist тебе поможет.

406
21 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Что за Visual Assist? Можно поподробней. И как он поможет?
292
22 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Green
Надеюсь, ты правил не файли WTL, а свои.

Не вижу аттачмента.


На счет правки файла, то я подправил АТЛовский (на время)
На счет аттача, то вот собственно файл http://www.rsdn.ru/article/wtl/wtl-2/WTLSizeDlg.zip

406
22 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by vitaly2003s
Что за Visual Assist? Можно поподробней. И как он поможет?



Все нашел.Действительно помогло.

3
22 сентября 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by Matush
На счет правки файла, то я подправил АТЛовский (на время)


Совсем-совсем неправильно.
Библиотечные файлы - это типа святое и непосягаемое. Хотя я их тоже иногда правлю, но это связано с фиксом библиотечных багов. Думаю, с этим ты ещё долго не столкнешся, т.к. они весьма специфичны.

В твоем случае лучше было вставить строчку
#define _WIN32_IE 0x0501
в файле StdAfx.h перед инклудом
#include <atlbase.h>
т.к. он в свою очередь тянет
#include <shlwapi.h>
а в нем есть запись:
#ifndef _WIN32_IE
#define _WIN32_IE 0x0501
видимо у тебя тут прописана др. версия.

Цитата:
Originally posted by Matush

На счет аттача, то вот собственно файл http://www.rsdn.ru/article/wtl/wtl-2/WTLSizeDlg.zip


Посмотрел. Всё банально... :)
У тебя диалог в ресурсах имеет бордер Dialog Frame, а надо Resizing, чтоб ресайзилось.

299
26 сентября 2005 года
3D Bob
885 / / 18.04.2005
Cкачал сегодня WTL
Блин, ребят? Он кажется OpenSource=))) Гы Класс...%)
Сегодня буду пытаться его с билдером скрестить.
292
26 сентября 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by Green
Совсем-совсем неправильно.
Библиотечные файлы - это типа святое и непосягаемое. Хотя я их тоже иногда правлю, но это связано с фиксом библиотечных багов. Думаю, с этим ты ещё долго не столкнешся, т.к. они весьма специфичны.

В твоем случае лучше было вставить строчку
#define _WIN32_IE 0x0501
в файле StdAfx.h перед инклудом
#include <atlbase.h>
т.к. он в свою очередь тянет
#include <shlwapi.h>
а в нем есть запись:
#ifndef _WIN32_IE
#define _WIN32_IE 0x0501
видимо у тебя тут прописана др. версия.


Посмотрел. Всё банально... :)
У тебя диалог в ресурсах имеет бордер Dialog Frame, а надо Resizing, чтоб ресайзилось.


Немного с опозданием пишу.
Спасибо. На счет диалога, так я раньше никогда диалогу Resizing не ставил, ка-то небыло потребности, потому даже не мог предположить... сейчас все ок.

На счет #define _WIN32_IE 0x0501 .Если ставить 0x0501, то у меня вылазит еще 6 эррорров, зато все норм, елси ставить 0x0401

292
26 сентября 2005 года
Matush
726 / / 14.01.2004
Есть у меня простое окно с менюшкой.
Есть класс окна:
class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
{
BEGIN_MSG_MAP(CMainWindow)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
};

Все чудненько, Теперь я хочу, чтобы когда в меню кликают по пункту ID_EXIT, окно закрывалось. Вписываю следующее

class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
{
BEGIN_MSG_MAP(CMainWindow)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
[COLOR=red]COMMAND_ID_HANDLER(ID_EXIT, OnExit)[/COLOR]
END_MSG_MAP()
[COLOR=red]
LRESULT OnExit(WORD, WORD, HWND hWnd, BOOL)
{
DestroyWindow(hWnd);
return 0;
}
[/COLOR]
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
};

Получаю эррор 'DestroyWindow' : function does not take 1 parameters
406
26 сентября 2005 года
vitaly2003s
481 / / 27.07.2004
Цитата:
Originally posted by Matush
Есть у меня простое окно с менюшкой.
Есть класс окна:
class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
{
BEGIN_MSG_MAP(CMainWindow)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
END_MSG_MAP()
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
};

Все чудненько, Теперь я хочу, чтобы когда в меню кликают по пункту ID_EXIT, окно закрывалось. Вписываю следующее

class CMainWindow : public CWindowImpl<CMainWindow, CWindow, CFrameWinTraits>
{
BEGIN_MSG_MAP(CMainWindow)
MESSAGE_HANDLER(WM_DESTROY, OnDestroy)
[COLOR=red]COMMAND_ID_HANDLER(ID_EXIT, OnExit)[/COLOR]
END_MSG_MAP()
[COLOR=red]
LRESULT OnExit(WORD, WORD, HWND hWnd, BOOL)
{
DestroyWindow(hWnd);
return 0;
}
[/COLOR]
LRESULT OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
PostQuitMessage(0);
return 0;
}
};

Получаю эррор 'DestroyWindow' : function does not take 1 parameters



Ну так пиши либо так

::DestroyWindow(hWnd);//вызов winapi

или так:

DestroyWindow();//вызов метода базового класса для твоего класса

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог