使用FindWindowExA()找不到子窗口

时间:2011-03-13 21:41:11

标签: c++ winapi

尝试在窗口计算器的表单上获取按钮的句柄。 Spy ++显示以下树:

(“计算器”; CalcFrame) - >

(“”; CalcFrame) - >

(“”;#32770 Dialog),... anather child windows - >

(“”;按钮),...另一个儿童窗口

//(“窗口标题”;窗口类) // - >下一个孩子等级

我使用FindWindowExA();

捕获主窗口并深入了解
#define wndName "Calculator"
...
    HWND calcHwnd = ::FindWindowA(0, wndName);
    HWND frameHwnd = ::FindWindowExA(calcHwnd, 0, 0, 0);
    HWND contentHwnd = ::FindWindowExA(calcHwnd, 0, "#32770 (Dialog)", 0);
    DWORD er = GetLastError();

我可以多次使用:: FindWindowExA(calcHwnd,0,0,0)来获得我需要的HWND(在那个级别有几个子窗口)。但我想使用我需要的窗口具有类“#32770(对话框)”的条件获得HWND。 但是:: FindWindowExA(calcHwnd,0,“#32770(Dialog)”,0) - 返回NULL。 GetLastError返回0.有什么问题?

1 个答案:

答案 0 :(得分:2)

#32770实际上是一个类原子。尝试:

HWND contentHwnd = ::FindWindowExA(calcHwnd, NULL, MAKEINTRESOURCE(32770), NULL);