我根据 TabControl 文档的示例创建
HWND DoCreateTabControl(HWND hwndParent)
{
INITCOMMONCONTROLSEX icex;
TCITEM tie;
TCHAR image[] = L"Image";
TCHAR contour[] = L"Сontour";
TCHAR square[] = L"Square";
TCHAR hatch[] = L"Hatch";
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_TAB_CLASSES;
InitCommonControlsEx(&icex);
hwndTab = CreateWindow(WC_TABCONTROL, global::drawwz,WS_CHILD | WS_CLIPSIBLINGS | WS_VISIBLE,0,45, WS_MAXIMIZE, WS_MAXIMIZE, global::hwnd,(HMENU)IDM_TABCONTROL,global::hInst, NULL);
tie.mask = TCIF_TEXT;// | TCIF_IMAGE;
tie.iImage = -1;
tie.pszText = image;
TabCtrl_InsertItem(hwndTab, 0, &tie);
tie.pszText = contour;
TabCtrl_InsertItem(hwndTab, 1, &tie);
tie.pszText = square;
TabCtrl_InsertItem(hwndTab, 2, &tie);
tie.pszText = hatch;
TabCtrl_InsertItem(hwndTab, 3, &tie);
return hwndTab;
}
HWND DoCreateDisplayWindow(HWND hwndTab)// Окно внутри Tab
{
HWND hwndStatic = CreateWindow(WC_STATIC, L"",WS_CHILD | WS_VISIBLE | WS_BORDER,30,30, global::DisplayWidht, global::Displayheigth, hwndTab, NULL,global::hInst, NULL);
return hwndStatic;
}
//Две кнопки внутри этого окна
CreateWindowW(L"BUTTON", L"Open Proect", WS_CHILD | WS_VISIBLE, (global::DisplayWidht / 2) - 200, (global::Displayheigth / 2) - 100, 420, 50, arg, (HMENU)IDM_FILE_OPEN, global::hInst, NULL);
CreateWindowW(L"BUTTON", L"Open Image", WS_CHILD | WS_VISIBLE, (global::DisplayWidht / 2) - 200, (global::Displayheigth / 2), 420, 50, arg, (HMENU)IDM_FILE_OPEN, global::hInst, NULL);
问题是按钮不起作用。不要创建任何事件,尽管它们已显示。如何使按钮起作用?
据我了解,您创建了一个按钮,将 hwndStatic 指定为父级,因此来自按钮的消息不会到达您的窗口,而是到达 hwndStatic 窗口。您应该从其父窗口的 WndProc 中的按钮中捕获消息。
选项:
使用您自己的 WndProc 过程注册您自己的窗口类。基于这个类创建一个子窗口。把按钮放在上面。
根据资源中的对话框创建一个子窗口,在其上放置按钮,并在DialogProc中处理按钮点击。
同时,建议选项卡控件页面不要位于选项卡控件本身,而是位于父窗口上。