Получение указателя объекта приложения в диалоге сообщений - PullRequest
1 голос
/ 05 октября 2011

Мы можем использовать this в качестве последнего аргумента CreateWindow и получить указатель на объект приложения в WndProc следующим образом:

if(message == WM_CREATE)
{
    CREATESTRUCT* cs = (CREATESTRUCT*)lParam;
    pApp = (DemoApp*)cs->lpCreateParams;
    return 0;
}

Каков наилучший способ получить доступ к этомууказатель в диалоге сообщений?Является ли решение сделать глобальный указатель?

1 Ответ

2 голосов
/ 05 октября 2011

Вы получаете дополнительные данные инициализации с помощью WM_INITDIALOG, см. Сообщение WM_INITDIALOG :

lParam

Дополнительные данные инициализации.Эти данные передаются в систему в качестве параметра lParam при вызове функции CreateDialogIndirectParam, CreateDialogParam, DialogBoxIndirectParam или DialogBoxParam, используемой для создания диалогового окна.Для листов свойств этот параметр является указателем на структуру PROPSHEETPAGE, используемую для создания страницы.Этот параметр равен нулю, если используется любая другая функция создания диалогового окна.

То есть вы можете передать lParam в качестве аргумента с помощью CreateDialogParam, и процедура диалога получит его с помощью WM_INITDIALOGсообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...