![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| Евгений |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 14.6.2006 Где: г. Невинномысск Репутация: нет Всего: 1 |
Help если сможете!
Имеется сласс: class DialogGraph { public: HWND hWndDlg; bool Cheked; public: DialogGraph(); BOOL CreateDlgGraph(HINSTANCE hInstance,LPCTSTR lpTemplate,HWND hWndParent); BOOL DialogDlgGraph(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); protected: static BOOL CALLBACK DialogDlg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); }; Функция CreateDlgGraph создает диалоговое окно из файла ресурсов. Как сделать так чтобы сообщения передавались от функции DialogDlg, к функции DialogDlgGraph. Так чтобы потом в Функции DialogDlgGraph можно было изменять переменные класса. Попробовал так: BOOL CALLBACK DialogGraph::DialogDlg(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { DialogGraph *pWindow; if ( uMsg==WM_INITDIALOG) { pWindow = (DialogGraph *) (GetWindowLong(hWnd,DWL_DLGPROC)); SetWindowLong(hWnd, DWL_USER, (LONG) pWindow); } else pWindow=(DialogGraph *)GetWindowLong(hWnd, DWL_USER); if ( pWindow ) return pWindow->DialogDlgGraph(hWnd, uMsg, wParam, lParam); else return DefWindowProc(hWnd, uMsg, wParam, lParam); } Работает только, вот переменную Cheked не разрешает изменять, выдает ошибку. |
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
А что значит "передавать сообщение "?
|
|||
|
||||
| Aleksandor |
|
|||
|
Практик ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 22.11.2005 Где: россия, зеленогра д Репутация: 10 Всего: 12 |
Как то очень наворочено. Может SendDlgItemMessage поможет? А вообще непонятно куда и зачем слать сообщение. Диалоговая процедура шлет сообщение другой диалоговой поцедуре?
-------------------- Call out Gouranga be happy!!! Gouranga Gouranga Gouranga .... That which brings the highest happiness!! |
|||
|
||||
| Евгений |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 14.6.2006 Где: г. Невинномысск Репутация: нет Всего: 1 |
Дело в том что я создаю диалоговое в классе, а функция
BOOL CALLBACK DialogDlg(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam); обязательно должна быть статической, иначе не работает. Мне надо чтобы эта функция к примеру вызывала другу функцию у меня это BOOL DialogDlgGraph(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); и передавала ей параметры, хотябы WPARAM wParam, LPARAM lParam. Я пробовал такой вариант и он не работает: DialogGraph Dialog; Dialog.DialogDlgGraph(hwndDlg, uMsg, wParam, lParam); Пробовал ещё вариант который предложил выше, он работает только не разрешает присваивать допустим public переменным (Cheked) какое либо значение, а мне надо наоборот! Ну кто нибудь осилит? |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Тебе надо связать hWnd и экземпляр класса (объект). Способов много, разной степени извратности.
Можно засовывать указатель на экземпляр класса в расширенные данные окна. Можно создать статическое (глобальное) отображение (map) hWnd->экземляр класса, как это делает MFC. И т.д. После того, как выберешь способ установления объекта по hWnd, все просто: в статической оконной процедуре получаешь указатель на объект и вызываешь функцию для него. -------------------- ... |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |