首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateWindow不工作

CreateWindow不工作
EN

Stack Overflow用户
提问于 2013-09-24 21:47:43
回答 1查看 2.8K关注 0票数 1

我的项目是一个返回DLL的控制台应用程序。我还在另一个项目中使用它。

此项目正在使用WFS方法。在其中一个方法中,我需要将HWND作为参数传递。原因是,每当一个方法想要发送一条消息(在我的例子中是事件)时,它将使用这个HWND

首先,我尝试了一下:

代码语言:javascript
复制
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

代码语言:javascript
复制
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

我调用下面的代码行来获取它:

代码语言:javascript
复制
windows_handle = FindWindow(0, TEXT("Device Manager"));

如果我想使用qdialog,我如何将WndProc赋值给qdialogwidget,这样我才能获得WFS方法将发送的消息?

EN

回答 1

Stack Overflow用户

发布于 2013-09-25 14:41:56

我发现了一个问题:

当我想要创建窗口时,类名必须是相同的。

代码语言:javascript
复制
WNDCLASS Wclass;

...

Wclass.lpszClassName = TEXT("Device_Manager_Class_Name");

...

HWND gHwnd = NULL;

gHwnd = CreateWindow(TEXT("Device_Manager_Class_Name")

...

特别感谢乔纳森·波特,是他指引我来到这里。

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

https://stackoverflow.com/questions/18983464

复制
相关文章

相似问题

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