окно без wndproc - PullRequest
       1

окно без wndproc

1 голос
/ 10 февраля 2011

Мне любопытно, что можно создать окно без использования WndProc.

Итак, я хотел бы зарегистрировать класс окна с полем lpfnWndProc, установленным в NULL; И используя msg (который дает TranslateMessage (& msg)) по-своему.

Есть ли у этого недостатки?

Спасибо, извините за мою грамматику.

Редактировать # 1: Окей, у меня есть окно, но я где-то ошибаюсь.

 MSG msg;
    while(PeekMessage(&msg,NULL,NULL,NULL,PM_REMOVE)) {
        if (msg.message == WM_QUIT) return false;
        else {
                TranslateMessage(&msg);
                switch (msg.message) {
                case WM_CREATE:
                    createContext();
                    break;
                default:
                    DispatchMessage(&msg);
                    break;
                }
        }
    } 
    return true;

createContext не вызывается. Зачем? Где я не прав? Да, может быть, сообщение WM_CREATE должно быть отправлено в WndProc (теперь DefWindowProc), но есть ли способ получить его снаружи от WndProc?

Ответы [ 3 ]

7 голосов
/ 11 февраля 2011

AFAIK, вы не можете установить его на NULL.Однако вы заметите, что подпись DefWindowProc соответствует подписи обратного вызова WindowProc.Просто дайте ему DefWindowProc, если вы хотите разумное значение по умолчанию.

2 голосов
/ 11 февраля 2011

Нет, вы сломаете SendMessage ().Только PostMessage () может работать.Требуется поддержка SendMessage.

2 голосов
/ 11 февраля 2011

Извините, что не имеет смысла.Без wndproc как вы можете получить это сообщение?

Окно без proc окна не окно!

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