CreateWindow не работает

Мой проект — консольное приложение, которое возвращает DLL. Я также использую это в другом проекте.

Этот проект использует WFS методы. В одном из этих методов мне нужно пройти HWND в качестве параметра. Причина в том, что всякий раз, когда метод хочет отправить сообщение (событие в моем случае), он будет использовать это HWND,

Сначала я попробовал это:

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WFS_EXECUTE_EVENT:
case WFS_SERVICE_EVENT:
case WFS_USER_EVENT:
case WFS_SYSTEM_EVENT:
return S_OK;
}
return DefWindowProc(hWnd, msg, wParam, lParam );
}HWND create(HWND parent)
{
HINSTANCE inst =  GetModuleHandle (0);
WNDCLASSEX wincl;

wincl.hInstance = inst;
wincl.lpszClassName = TEXT("ConsoleClass");
wincl.lpfnWndProc = WndProc;

HWND mainWindow = CreateWindow(
TEXT("DM_Class_Name"),
TEXT("DM_Title"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND) NULL,
(HMENU) NULL,
inst,
(LPVOID) NULL);

ShowWindow(mainWindow,1);

return mainWindow;

}

Это не работает по какой-то причине. Окна не отображаются и HWND всегда NULL,

Почему это не работает?

После нескольких часов поиска я попробовал QDialog:

QDialog dialog;
dialog.setObjectName("Device_Manager_Dialog");
dialog.setWindowTitle("Device Manager");
dialog.setFixedWidth(10);
dialog.setFixedHeight(10);
dialog.show();
dialog.setVisible(false);
QWidget * widget = dialog.window();
HWND windows_handle = widget->effectiveWinId();

Это работает таким образом. Я создал окно и HWND и в классе мне нужно использовать это HWND,

Я вызываю следующую строку, чтобы получить это:

windows_handle = FindWindow(0, TEXT("Device Manager"));

Если я хочу использовать qdialogкак я могу назначить WndProc в qdialog или же widget так что я могу получить сообщения о том, что WFS метод отправит?

0

Решение

Я нашел проблем.

Имя класса должно быть таким же, когда я хочу создать окно.

WNDCLASS Wclass;

...

Wclass.lpszClassName = TEXT("Device_Manager_Class_Name");

...

HWND gHwnd = NULL;

gHwnd = CreateWindow(TEXT("Device_Manager_Class_Name")

...

Особая благодарность Джонатану Поттеру, который привел меня к этому.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]