Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |
error 09.06.01 17:53 Число просмотров: 830
Автор: Sandy <Alexander Stepanov> Статус: Elderman
|
> при отладке вылеезает вот чо : > { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, > message, wParam, lParam); }
Это значит, что m_hWnd к моменту выполнения функции не является хэндлом окна, скорее всего ::Create по каким-то причинам не создал диалог.
|
<programming>
|
[C++] CDialogBar 08.06.01 22:49
Автор: myrmidon Статус: Незарегистрированный пользователь
|
Сделал диалог бар, хочю вставить код, который бы при выполнялся при появлении этого диалог бара,
Сам диалог бар сделан на основе CDialog, пытался запихнуть код в OnInitDialog, но чото он нифига не выполняется! Чо делать?
|
 |
[C++] CDialogBar 09.06.01 04:37
Автор: kabanchik Статус: Незарегистрированный пользователь
|
> Сделал диалог бар, хочю вставить код, который бы при > выполнялся при появлении этого диалог бара, > Сам диалог бар сделан на основе CDialog, пытался запихнуть > код в OnInitDialog, но чото он нифига не выполняется! Чо > делать?
поэтому делаешь так, т.к. класс твой, то добавляешь в него свой собственный мессаг, и он будет работать не только когда создется, а когда тебе удобно.
// *.h - file
#define WM_MY_MESSAGE (WM_USER + 1)
class SMyDialogBar : public XXXXParentClass
{
...........................................
//{{AFX_MSG(CMyDialogBar)
...................................
afx_msg LRESULT OnMyMessage(WPARAM wParam, LPARAM lParam);
..................................
//}}AFX_MSG
}
// *.cpp file
BEGIN_MESSAGE_MAP(CMyDialogBar, XXXXParentClass)
//{{AFX_MSG_MAP(CMyDialogBar)
..............................
ON_MESSAGE(WM_MY_MESSAGE, OnMyMessage)
............................
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
LRESULT CMyDialogBar::OnMyMessage(WPARAM wparam, LPARAM lParam)
{
// Here is my desired code
// !!!! ПИШИ СВОЙ КОД ЗДЕСЬ !!!!!
..............................
return 0;
}
код "заставляешь" работать так ( но ТЫ ДОЛЖЕН БЫТЬ УВЕРЕН, ЧТО ТВОЙ ДИАЛОГ БАР УЖЕ СУЩЕСТВУЕТ !!!! т.е. CMyDialogBar::m_hWnd != NULL !!!!) :
CMyDialogBar bar;
bar.Create(); // тут уже твой бар создан
// теперь могу вызвать, когда захочу !
bar.SendMessage(WM_MY_MESSAGE, 0, 0);
а еще можешь вызвать, во время WM_CREATE - т.е. ф-ия OnCreate(....)
но так лучше, если есть задача - несколько раз прогнать один и тот же код.
вот и все - очень удобный трюк :-)
|
 |  |
error 09.06.01 15:30
Автор: myrmidon Статус: Незарегистрированный пользователь
|
при отладке вылеезает вот чо :
{ ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, message, wParam, lParam); }
|
 |  |  |
error 09.06.01 17:53
Автор: Sandy <Alexander Stepanov> Статус: Elderman
|
> при отладке вылеезает вот чо : > { ASSERT(::IsWindow(m_hWnd)); return ::SendMessage(m_hWnd, > message, wParam, lParam); }
Это значит, что m_hWnd к моменту выполнения функции не является хэндлом окна, скорее всего ::Create по каким-то причинам не создал диалог.
|
|
|