我正在visual 2012中构建一个win32应用程序。我使用以下代码创建了4个禁用按钮:
HWND hWndButton=CreateWindowEx(NULL,
L"BUTTON",
L"APP1",
WS_TABSTOP|WS_VISIBLE|WS_CHILD|BS_DEFPUSHBUTTON|WS_DISABLED|BS_ICON,
40,
40,
180,
140,
hWnd,
(HMENU)IDC_BUTTON1,
GetModuleHandle(NULL),
NULL);我想要做的是在应用程序运行时启用按钮。我尝试使用findwindow查找并启用第一个按钮,但它没有找到它。我的代码是:
HWND hwB1 = FindWindow(L"BUTTON",L"APP1");
if (hwB1 !=0) MessageBox(NULL,L"FOUND",L"Button Found",MB_OK);
EnableWindow(hwB1,true);我做错了什么吗?提前谢谢你。
发布于 2013-08-16 21:32:22
FindWindow()查找顶级窗口,而不是子窗口。
如果您确实希望按名称查找子窗口,则可以使用FindWindowEx()函数,但使用ID通常更有效。
这样做的函数是GetDlgItem()。这将通过您在创建子窗口时提供的ID查找子窗口。
HWND hwB1 = GetDlgItem(hWnd, IDC_BUTTON1);hWnd是父窗口,IDC_BUTTON1是ID。
另一种选择是简单地存储在创建子窗口时返回的窗口句柄--代码示例中的hWndButton --然后根本不需要查找它。
发布于 2015-10-28 10:54:36
HWND hwB1=FindWindowEx(hWnd/*Parent window*/,
hWndButton/*Child window*/,
"BUTTON"/*Class of the child window*/,
"APP1"/*Title of the child window*/);当控件ID未知时,这是一个更好的方法。
https://stackoverflow.com/questions/18282390
复制相似问题