首页 > 编程知识 正文

createwindow函数返回值,CreateWindow函数可以创建什么?返回值是什么类型?

时间:2023-05-03 06:38:57 阅读:218623 作者:4194

在学习Windows开发期间,遇到的问题。

写了一个GUI项目,运行之后,没有反应。调试后发现,CreateWindow函数返回NULL。大概的代码如下:

#include "main.h"#include<algorithm>#include<iostream>char szFilePath[MAX_PATH] = { 0 };char szResult[4096];CQueue<QueueElement> queue;TCHAR* szMutex = _T("__mutex__l32__");int WINAPI _tWinMain(HINSTANCE hThis, HINSTANCE hPrev, LPTSTR szCommandLine, int iCmdShow){UNREFERENCED_PARAMETER(hPrev);UNREFERENCED_PARAMETER(szCommandLine);TCHAR* szWindowClass = _T("__concurrent_operation__");WNDCLASSEX wndEx;wndEx.cbSize = sizeof(WNDCLASSEX);wndEx.style = CS_HREDRAW | CS_VREDRAW;wndEx.lpfnWndProc = WindowProcedure;wndEx.cbClsExtra = 0;wndEx.cbWndExtra = 0;wndEx.hInstance = hThis;wndEx.hIcon = LoadIcon(wndEx.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));wndEx.hIconSm = LoadIcon(wndEx.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));wndEx.hCursor = LoadCursor(nullptr, IDC_ARROW);wndEx.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);wndEx.lpszMenuName = NULL;wndEx.lpszClassName = _T("__concurrent_operation__");if (!RegisterClassEx(&wndEx)){return 1;}InitCommonControls();HWND hWnd = CreateWindow(szWindowClass, _T("Concurrent operation"),WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, 50, 50, 305, 250,NULL, NULL, wndEx.hInstance, NULL);if (!hWnd){return 1;}ShowWindow(hWnd, SW_SHOW);HANDLE hMutex = CreateMutex(NULL, FALSE, szMutex);MSG msg;while (GetMessage(&msg, 0, 0, 0)){TranslateMessage(&msg);DispatchMessage(&msg);}CloseHandle(hMutex);UnregisterClass(wndEx.lpszClassName, wndEx.hInstance);return (int)msg.wParam;}

经过查找网络,终于发现 问题在于 

wndEx.lpszClassName = _T("__concurrent_operation__");

 和 

CreateWindow(szWindowClass, _T("Concurrent operation"),
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, 50, 50, 305, 250,
NULL, NULL, wndEx.hInstance, NULL);

中的第一个参数不一致。虽然都是同一个字符串,但这样也不行。 

后来改为 wndEx.lpszClassName = szWindowClass; 顺利通过




版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。