Мне нужно найти HWND для контекстного меню. Я создаю контекстное меню, как в этом учебнике, но без подменю. Я могу использовать функцию FindWindow следующим образом:
HWND hWndMenu = FindWindow(TEXT("#32768"), NULL);
Я также могу использовать хук WH_CBT. Вот процедура ловушки:
LRESULT CALLBACK HookProc(int code, WPARAM wParam, LPARAM lParam)
{
if (code == HCBT_CREATEWND)
{
HWND hwnd = (HWND)wParam;
WCHAR name[1024] = { 0 };
GetClassName(hwnd, name, sizeof(name));
if (wcscmp(name, L"#32768"))
{
HWND hwndMenu = FindWindow(TEXT("#32768"), NULL);
std::cout << "HCBT_CREATEWND hwnd: " << hwnd << std::endl;
std::cout << "FindWindow hwnd: " << hwndMenu << std::endl;
}
}
return code < 0 ? CallNextHookEx(myHook, code, wParam, lParam) : 0;
}
Когда я открываю контекстное меню, я получаю два разных hwnd. Я не понимаю почему. Не могли бы вы объяснить это?