Передача параметров в окно вызова в Windows - PullRequest
2 голосов
/ 22 января 2011

Я новичок в программировании для вызовов Windows и пытаюсь найти способ передачи параметра в функцию lpfnWndProc. У меня есть следующий код:

HWND hwnd;
WNDCLASS wc1 = {0};

wc1.lpszClassName = TEXT( "sample" );
wc1.hInstance     = 0;
wc1.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
wc1.lpfnWndProc   = DepthWndProc;

Обратите внимание на строку wc1.lpfnWndProc = DepthWndProc; Могу ли я передать DepthWndProc параметр? Если да, то как выглядит синтаксис?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 января 2011

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

Необходимость сохранения дополнительного состояния с помощью HWND не является чем-то необычным, например, очень распространенным требованием для оболочки класса C ++ вокруг окна.Вы должны сохранить карту <>, чтобы помочь вам получить объект оболочки из значения дескриптора окна.Использование SetWindowLongPtr () с GWLP_USERDATA также возможно, но менее идеально, если вы не контролируете создание окна.

0 голосов
/ 22 января 2011

Вы можете напрямую вызвать DepthWndProc и передать его параметры, но зачем вам это делать? Это не то, как работает программирование Windows.

Вы даете Windows функцию для вызова всякий раз, когда у нее есть сообщение для отправки в ваше окно.

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