C++ 无法创建窗口 #包括 #包括 #包括 #pragma注释(链接器“\”/manifestdependency:type='win32'name='Microsoft.Windows.Common控件'\ version='6.0.0.0'processorArchitecture='*'\ publicKeyToken='6595b64144ccf1df'语言='*'\“”) LRESULT WINAPI WndProc(HWND HWND、UINT msg、WPARAM lParam、lParam WPARAM) { 返回DefWindowProc(hWnd、msg、wParam、lParam); } int-WinMain(HINSTANCE-hInst、HINSTANCE-hpInst、LPSTR-cmdLine、int-cmdshow) { 静态TCHAR类名称[]=_T(“SCONF”); 静态TCHAR wTitle[]=“服务器配置程序”); WNDCLASSEX WCLASSE; wClass.cbClsExtra=NULL; wClass.cbSize=sizeof(WNDCLASSEX); wClass.cbWndExtra=NULL; wClass.hbrBackground=(HBRUSH)(CTLCOLOR_滚动条); wClass.hCursor=LoadCursor(空,IDC_箭头); wClass.hIcon=LoadIcon(hInst,IDI_应用程序); wClass.hIconSm=LoadIcon(hInst,IDI_应用程序); wClass.hInstance=hInst; wClass.lpfnWndProc=WndProc; wClass.lpszClassName=classname; wClass.lpszMenuName=NULL; wClass.style=CS|HREDRAW | CS|VREDRAW; 如果(!RegisterClass(&wClass)) { MessageBox(NULL,L“无法注册类!”,L“错误”,MB|U ICONROR | MB|U OK); } RECT wr={0,0200250}; AdjustWindowRect(&wr,WS_标题,false); HWND HWND=CreateWindow( 类名, wTitle, 标题:, GetSystemMetrics(SM_CXSCREEN)/2-100, GetSystemMetrics(SM_CYSCREEN)/2-125, wr.right wr.left,//宽度 wr.底部wr.顶部,//高度 无效的 无效的 欣斯特, 无效); 如果(!hWnd) { MessageBox(NULL、_T(“无法创建窗口!”)、_T(“错误!”)、MB_ICONERROR); 返回1; } ShowWindow(hWnd、cmdshow); 味精; while(GetMessage(&msg,0,0,0)) { 翻译信息(&msg); 发送消息(&msg); } 返回(int)msg.wParam; }
这是完整的代码,当我试图编译时,hWnd总是返回false…我甚至试图从一个工作程序复制代码,但它没有工作…这里发生了什么?它总是在…之前工作。您正在WndProc函数中扭曲/交叉wParam和lParam-C++ 无法创建窗口 #包括 #包括 #包括 #pragma注释(链接器“\”/manifestdependency:type='win32'name='Microsoft.Windows.Common控件'\ version='6.0.0.0'processorArchitecture='*'\ publicKeyToken='6595b64144ccf1df'语言='*'\“”) LRESULT WINAPI WndProc(HWND HWND、UINT msg、WPARAM lParam、lParam WPARAM) { 返回DefWindowProc(hWnd、msg、wParam、lParam); } int-WinMain(HINSTANCE-hInst、HINSTANCE-hpInst、LPSTR-cmdLine、int-cmdshow) { 静态TCHAR类名称[]=_T(“SCONF”); 静态TCHAR wTitle[]=“服务器配置程序”); WNDCLASSEX WCLASSE; wClass.cbClsExtra=NULL; wClass.cbSize=sizeof(WNDCLASSEX); wClass.cbWndExtra=NULL; wClass.hbrBackground=(HBRUSH)(CTLCOLOR_滚动条); wClass.hCursor=LoadCursor(空,IDC_箭头); wClass.hIcon=LoadIcon(hInst,IDI_应用程序); wClass.hIconSm=LoadIcon(hInst,IDI_应用程序); wClass.hInstance=hInst; wClass.lpfnWndProc=WndProc; wClass.lpszClassName=classname; wClass.lpszMenuName=NULL; wClass.style=CS|HREDRAW | CS|VREDRAW; 如果(!RegisterClass(&wClass)) { MessageBox(NULL,L“无法注册类!”,L“错误”,MB|U ICONROR | MB|U OK); } RECT wr={0,0200250}; AdjustWindowRect(&wr,WS_标题,false); HWND HWND=CreateWindow( 类名, wTitle, 标题:, GetSystemMetrics(SM_CXSCREEN)/2-100, GetSystemMetrics(SM_CYSCREEN)/2-125, wr.right wr.left,//宽度 wr.底部wr.顶部,//高度 无效的 无效的 欣斯特, 无效); 如果(!hWnd) { MessageBox(NULL、_T(“无法创建窗口!”)、_T(“错误!”)、MB_ICONERROR); 返回1; } ShowWindow(hWnd、cmdshow); 味精; while(GetMessage(&msg,0,0,0)) { 翻译信息(&msg); 发送消息(&msg); } 返回(int)msg.wParam; },c++,winapi,C++,Winapi,这是完整的代码,当我试图编译时,hWnd总是返回false…我甚至试图从一个工作程序复制代码,但它没有工作…这里发生了什么?它总是在…之前工作。您正在WndProc函数中扭曲/交叉wParam和lParam- #include <Windows.h> #include <stdlib.h> #include <tchar.h> #pragma comment(linker,"\"/manifestdependency:type='win32'name='Mi
#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;
}
我认为这没有帮助
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);
}
您没有GetLastError()和FormatMessage()。哪个函数返回
FALSE
或NULL
?如果有错误,请检查的结果以获取错误代码。为了澄清,您的意思是CreateWindow
总是返回false,因为它存储在hWnd
中?
LRESULT WINAPI WndProc(HWND hWnd,UINT msg,WPARAM lParam,LPARAM wParam) //check your parameter names!!!!!!!!!!!!!!!!!!!!!!!
{
return DefWindowProc(hWnd,msg,wParam,lParam);
}