Как узнать, когда была вызвана функция CWnd Create? - PullRequest
1 голос
/ 13 декабря 2011

Я написал класс, обертывающий элементы управления сеткой. Я хочу инициализировать пользовательский класс сетки, когда он создается путем вызова функции Create.

Есть ли способ, которым я могу поймать событие?

1 Ответ

8 голосов
/ 13 декабря 2011

Да, если используется CWnd: Create или Cwd: CreateEx, можно перехватить событие Win32 с помощью:

afx_msg int OnCreate(
   LPCREATESTRUCT lpCreateStruct 
);

См. CWnd :: OnCreate

При соответствующем отображении:

BEGIN_MESSAGE_MAP(MyGrid, CWnd)
ON_WM_CREATE()
END_MESSAGE_MAP()

Внимание: если ваш элемент управления добавлен дизайнером непосредственно в шаблон диалога (т. Е. С использованием DDX), функция CWnd: .OnCreate () не вызывается.

Во всех случаях после создания вызывается следующая функция после инициализации Hwnd (дескриптора окна):

virtual void PreSubclassWindow( );

См. PreSubclassWindow

С наилучшими пожеланиями, Алена

...