WINAPIを使用してライブラリを作成しています。親ウィンドウのWinProc関数のWC_TABCONTROLクラスウィンドウからWM_NOTIFYメッセージを受信する際に問題が発生しました。「debugprints」で子の親が正しく設定されていることを確認します。WM_COMMANDメッセージを受信し、一部の関数で正しく受信します。何が原因なのかわかりません。ウィンドウのタブコントロールは見栄えがよく、マウスクリックに応答して視覚的なタブアイテムの選択を変更します。
たとえば、選択されていないタブをクリックすると、次のメッセージが表示されますhttp://pastie.org/6571509
私のWINProc関数はhttp://goo.gl/knJ4Zの346行目で確認できます。
タブコントロールを作成します。
ps_ext->d_handle = CreateWindowExW(0, // no extended styles
WC_TABCONTROL, // class name
L"", // default text
WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE, // overlapped window
CW_USEDEFAULT, // default horizontal position
CW_USEDEFAULT, // default vertical position
CW_USEDEFAULT, // default width
CW_USEDEFAULT, // default height
HWND_MESSAGE, // no parent or owner window
(HMENU)WINSEM_Window_NextComponentID(), // class menu used
WINSEM_Window_hInstance,// instance handle
(LPVOID)&ps_ext->s_window); // no window creation data
その後、SetParent関数呼び出しで正しい親を設定します。タブのサイズは次のように変更されます。
uFlags = SWP_NOOWNERZORDER | SWP_NOZORDER;
if (SetWindowPos(ps_window->d_handle, NULL, s0_x, s0_y, s0_w, s0_h, uFlags)==0)
{
DWORD dErr;
dErr = GetLastError();
HaveWinLastError_Error(ps_pack, WINSEM_WINDOW_fromerror_windowPos+0, dErr, dErr);
break;
}
また、ウィンドウを表示してタブコントロールをクリックしても、親ウィンドウのwinProc関数が受信したWM_NOTIFYメッセージは生成されません。
これは私のメッセージ受信コードです:
bRet = PeekMessage( &msg, NULL, 0, 0, PM_REMOVE);
if (bRet==FALSE)
{
// no messages received
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
この問題について誰か考えがありますか?アイデアと時間をありがとう。