首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WinAPI FindWindow

WinAPI FindWindow
EN

Stack Overflow用户
提问于 2013-08-16 21:29:04
回答 2查看 1.4K关注 0票数 0

我正在visual 2012中构建一个win32应用程序。我使用以下代码创建了4个禁用按钮:

代码语言:javascript
复制
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查找并启用第一个按钮,但它没有找到它。我的代码是:

代码语言:javascript
复制
HWND hwB1 = FindWindow(L"BUTTON",L"APP1");
if (hwB1 !=0)   MessageBox(NULL,L"FOUND",L"Button Found",MB_OK);
EnableWindow(hwB1,true);

我做错了什么吗?提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-16 21:32:22

FindWindow()查找顶级窗口,而不是子窗口。

如果您确实希望按名称查找子窗口,则可以使用FindWindowEx()函数,但使用ID通常更有效。

这样做的函数是GetDlgItem()。这将通过您在创建子窗口时提供的ID查找子窗口。

代码语言:javascript
复制
HWND hwB1 = GetDlgItem(hWnd, IDC_BUTTON1);

hWnd是父窗口,IDC_BUTTON1是ID。

另一种选择是简单地存储在创建子窗口时返回的窗口句柄--代码示例中的hWndButton --然后根本不需要查找它。

票数 4
EN

Stack Overflow用户

发布于 2015-10-28 10:54:36

使用FindWindowEx()

代码语言:javascript
复制
HWND hwB1=FindWindowEx(hWnd/*Parent window*/,
                       hWndButton/*Child window*/,
                       "BUTTON"/*Class of the child window*/,
                       "APP1"/*Title of the child window*/);

当控件ID未知时,这是一个更好的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18282390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档