c++ - 无法创建窗口

标签 c++ winapi

#include <Windows.h>
#include <stdlib.h>
#include <tchar.h>

#pragma comment(linker,"\"/manifestdependency:type='win32'name='Microsoft.Windows.Common-Controls'\
                version='6.0.0.0' processorArchitecture='*'\
                publicKeyToken='6595b64144ccf1df' language='*'\"")

LRESULT WINAPI WndProc(HWND hWnd,UINT msg,WPARAM lParam,LPARAM wParam)
{
    return DefWindowProc(hWnd,msg,wParam,lParam);
}

int WinMain(HINSTANCE hInst,HINSTANCE hpInst,LPSTR cmdLine,int cmdshow)
{
    static TCHAR classname[]=_T("SCONF");
    static TCHAR wTitle[]=_T("Server Configurator");

    WNDCLASSEX wClass;
    wClass.cbClsExtra=NULL;
    wClass.cbSize=sizeof(WNDCLASSEX);
    wClass.cbWndExtra=NULL;
    wClass.hbrBackground=(HBRUSH)(CTLCOLOR_SCROLLBAR);
    wClass.hCursor=LoadCursor(NULL,IDC_ARROW);
    wClass.hIcon=LoadIcon(hInst,IDI_APPLICATION);
    wClass.hIconSm=LoadIcon(hInst,IDI_APPLICATION);
    wClass.hInstance=hInst;
    wClass.lpfnWndProc=WndProc;
    wClass.lpszClassName=classname;
    wClass.lpszMenuName=NULL;
    wClass.style=CS_HREDRAW|CS_VREDRAW;
    if(!RegisterClassEx(&wClass))
    {
        MessageBox(NULL,L"Could not register class!", L"ERROR",MB_ICONERROR|MB_OK);
    }
    RECT wr={0,0,200,250};
    AdjustWindowRect(&wr,WS_CAPTION,false);

    HWND hWnd=CreateWindow(
        classname,
        wTitle,
        WS_CAPTION,
        GetSystemMetrics(SM_CXSCREEN)/2-100,
        GetSystemMetrics(SM_CYSCREEN)/2-125,
        wr.right-wr.left,//width
        wr.bottom-wr.top,//height
        NULL,
        NULL,
        hInst,
        NULL);

    if(!hWnd)
    {
        MessageBox(NULL,_T("Could not create window!"),_T("ERROR!"),MB_ICONERROR);
        return 1;
    }
    ShowWindow(hWnd,cmdshow);
    MSG msg;
    while(GetMessage(&msg,0,0,0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return (int)msg.wParam;
}

这是完整的代码,当我尝试编译时,hWnd 总是返回 false...我什至尝试从一个工作程序中复制代码但它没有工作...这是怎么回事?它以前总是有效...

最佳答案

你在 WndProc 函数中扭曲/交叉你的 wParam 和 lParam -

LRESULT WINAPI WndProc(HWND hWnd,UINT msg,WPARAM lParam,LPARAM wParam) 
{
    return DefWindowProc(hWnd,msg,wParam,lParam);
}

LRESULT WINAPI WndProc(HWND hWnd,UINT msg,WPARAM lParam,LPARAM wParam) {
    return DefWindowProc(hWnd,msg,wParam,lParam);
}

我认为这没有帮助。

LRESULT WINAPI WndProc(HWND hWnd,UINT msg,WPARAM lParam,LPARAM wParam) //check your parameter names!!!!!!!!!!!!!!!!!!!!!!!
{
    return DefWindowProc(hWnd,msg,wParam,lParam);
}

关于c++ - 无法创建窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12475131/

相关文章:

c++ - SetPixelFormat() 中的第三个参数对于 OpenGL 上下文创建有什么意义?

c++ - Qt QTextBrowser 如何捕获文本并更改其光标

c++ - CMake check_function_exists 没有

windows - 重置 Windows 中的打开文件对话框位置

c++ - 使用 win32 C++ 和 Hook 从应用程序中的按钮获取文本

c++ - 在 C++ 中使用线程

c++ - 有没有办法使用 win API 获取 HRESULT 值的字符串表示形式?

c++ - 如何通过修改 make 命令覆盖我的 Makefile 中的标志

c++ - 如何在 C++ 中通过 system() 函数使用字符串变量

c++ - Linux/C++ 将字符串复制到剪贴板