WM_INITDIALOG和WM_NOTIFY代碼段。如何在Tab控件中顯示子對話框?
HWND hTabCtrl = nullptr;
HWND hCurrentTab = nullptr;
HWND hTab1 = nullptr;
LRESULT CALLBACK WINPROC(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
hTabCtrl = GetDlgItem(hWnd, IDC_TAB1);
g_hWnd = hWnd;
ShowWindow(hTab1, SW_SHOW);
switch(uMsg)
{
case WM_INITDIALOG:
{
//hInstance = 0; // Useless?
INITCOMMONCONTROLSEX ix;
ix.dwSize = sizeof(INITCOMMONCONTROLSEX);
ix.dwICC = ICC_TAB_CLASSES|ICC_UPDOWN_CLASS;
InitCommonControlsEx(&ix);
//ShowWindow(hTabCtrl, SW_SHOW);
TCITEM ti;
memset(&ti, 0, sizeof(ti));
ti.mask = TCIF_TEXT;
ti.pszText = L"Basic Options";
ti.cchTextMax = 255;
TabCtrl_InsertItem(hTabCtrl,0,&ti); //
ti.pszText = L"Antis";
TabCtrl_InsertItem(hTabCtrl,1,&ti);
TabCtrl_SetCurSel(hTabCtrl,0);
hTab1 = CreateDialog(GetModuleHandle(NULL), MAKEINTRESOURCE(IDD_DLG2), /*handle of the tab control*/ hTabCtrl, (DLGPROC)GeneralDlgPrc);
break;
}
// Macro so you don't need the crazy styled cast.
case WM_NOTIFY:
{
switch(((LPNMHDR) lParam) -> code)
{
case TCN_SELCHANGE:
{
if(TabCtrl_GetCurSel(((LPNMHDR) lParam) -> hwndFrom) == 0)
{
ShowWindow(hTab1, SW_SHOW);
}
else
{
}
break;
}
}
}
我試過這樣,它沒有顯示出來。它覆蓋了一個選項卡邊框,因此它應該存在,但它在窗體控件上不可見。
以下是截圖:http://puu.sh/1yt1b
編輯:它的工作原理,但位置錯了,我應該手動設置的位置?