C++ CreateWindow不工作

C++ CreateWindow不工作,c++,visual-c++,hwnd,qdialog,createwindow,C++,Visual C++,Hwnd,Qdialog,Createwindow,我的项目是一个返回DLL的控制台应用程序。我还在另一个项目中使用它 该项目正在使用WFS方法。在其中一种方法中,我需要将HWND作为参数传递。原因是每当一个方法想要发送消息(在我的例子中是事件)时,它都会使用这个HWND 首先,我尝试了这个: LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) { case WFS_EXECUTE_EVENT:

我的项目是一个返回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
方法将发送的消息?

我发现了一个问题:

当我想创建窗口时,类名必须相同

WNDCLASS Wclass;

...

Wclass.lpszClassName = TEXT("Device_Manager_Class_Name");

...

HWND gHwnd = NULL;

gHwnd = CreateWindow(TEXT("Device_Manager_Class_Name")

...

特别感谢Jonathan Potter,他引导我来到这里。

你真的注册了一个名为
DM\u class\u Name
的窗口类吗?您有一个半填充的
WNDCLASSEX
结构,具有不同的类名,并且我无法看到对
RegisterClassEx()的调用。
类名没问题,我应该在这里更改它,反正我使用了RegisterClassEx,还是一样的问题,还有其他建议吗?!PS:我在createwindow()之前和之后都使用了它,但仍然没有结果。