Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++] CDialogBar 09.06.01 04:37 Число просмотров: 1084
Автор: 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(....)
но так лучше, если есть задача - несколько раз прогнать один и тот же код.
вот и все - очень удобный трюк :-)
|
|
|