为什么我总是不能注册窗口? 程序已经没有问题了,Build都通过了,但是RegisterClass(&wndclass)总是有错,无法注册,是不是我的设置有问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得这个应该没用吧,因为我不是一个程序有此问题,是好几个程序都是这个同样的问题。贴一个上来:#include<windows.h>#include<stdio.h>LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow){ HWND hwnd; MSG Msg; WNDCLASS wndclass; char lpszClassName[]="窗口_鼠标"; char lpszTitle[]="My_Windows"; wndclass.lpfnWndProc=WndProc; wndclass.cbClsExtra=0; wndclass.cbWndExtra=0; wndclass.hInstance=hInstance; wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION); wndclass.hCursor=LoadCursor(NULL,IDC_ARROW); wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName=NULL; wndclass.lpszClassName=lpszClassName; if(!RegisterClass(&wndclass)) { MessageBeep(0); return FALSE; } hwnd=CreateWindow(lpszClassName,lpszTitle,WS_VISIBLE|WS_MINIMIZEBOX,50,50,450,450,NULL,NULL,hInstance,NULL); ShowWindow(hwnd,nCmdShow); UpdateWindow(hwnd); while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return Msg.wParam;}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){ PAINTSTRUCT ps; HDC hdc; TEXTMETRIC tm; HBRUSH hbrush; HPEN hpen; HCURSOR hcursor; char str[15]; static int x,y; switch(message) { case WM_MOUSEMOVE: x=LOWORD(lParam); y=HIWORD(lParam); if(x>50&&x<150&&y>50&&y<150) { hcursor=LoadCursor(NULL,IDC_CROSS); SetCursor(hcursor); } if(x>150&&x<250&&y>50&&y<150) { hcursor=LoadCursor(NULL,IDC_SIZEALL); SetCursor(hcursor); } if(x>250&&x<350&&y>50&&y<150) { hcursor=LoadCursor(NULL,IDC_SIZENESW); SetCursor(hcursor); } if(x>50&&x<150&&y>150&&y<250) { hcursor=LoadCursor(NULL,IDC_IBEAM); SetCursor(hcursor); } if(x>150&&x<250&&y>150&&y<250) { hcursor=LoadCursor(NULL,IDC_WAIT); SetCursor(hcursor); } if(x>250&&x<350&&y>150&&y<250) { hcursor=LoadCursor(NULL,IDC_UPARROW); SetCursor(hcursor); } if(x>50&&x<150&&y>250&&y<350) { hcursor=LoadCursor(NULL,IDC_SIZEWE); SetCursor(hcursor); } if(x>150&&x<250&&y>250&&y<350) { hcursor=LoadCursor(NULL,IDC_SIZENESW); SetCursor(hcursor); } if(x>250&&x<350&&y>250&&y<350) { hcursor=LoadCursor(NULL,IDC_SIZENS); SetCursor(hcursor); } if(x>350||y>350) { hcursor=LoadCursor(NULL,IDC_HELP); SetCursor(hcursor); } if(x<50||y<50) { hcursor=LoadCursor(NULL,IDC_APPSTARTING); SetCursor(hcursor); } hdc=GetDC(hwnd); GetTextMetrics(hdc,&tm); hbrush=(HBRUSH)GetStockObject(WHITE_BRUSH); SelectObject(hdc,hbrush); hpen=(HPEN)GetStockObject(BLACK_PEN); SelectObject(hdc,hpen); Rectangle(hdc,5,5,tm.tmAveCharWidth*8,tm.tmHeight+3); sprintf(str,"%d,%d\0",x,y); TextOut(hdc,5,5,str,lstrlen(str)); EndPaint(hwnd,&ps); break; case WM_PAINT: hdc=BeginPaint(hwnd,&ps); hpen=(HPEN)GetStockObject(BLACK_PEN); SelectObject(hdc,hpen); Rectangle(hdc,50,50,350,350); MoveToEx(hdc,50,250,NULL); LineTo(hdc,50,150); MoveToEx(hdc,50,250,NULL); LineTo(hdc,350,250); MoveToEx(hdc,150,50,NULL); LineTo(hdc,150,350); MoveToEx(hdc,250,50,NULL); LineTo(hdc,250,350); EndPaint(hwnd,&ps); break; case WM_DESTROY: PostQuitMessage(0); default: return DefWindowProc(hwnd,message,wParam,lParam); } return (0);} 没指定style,如:wndclass.style = CS_HREDRAW|CS_VREDRAW; 你是不是多次注册窗口,而且前几次注册成功,后来就不行了?如果是这样,你把char lpszClassName[]="窗口_鼠标";的字符串变断点。因为系统用于保存这些字符的空间是有限的 证书签名控件寻求高手帮助 多线程排序时遇到的问题 求 ATL开发指南(第二版)配套源码 cpp文件转换为c文件的方法 有关于在vc环境下访问一个数据文件的问题 !急! 编译时出现的链接错误,请大家帮我看看!!! 请问:如何利用VC进行串口通讯? 用install vise打包安装程序的问题 BEGIN_INTERFACE_MAP 如何正确来使用 RichEdit中如何设置指定字符串的颜色? 我想在程序中改变光标的形状怎么办啊 XML文件中存储密文的问题,Up有分!!!
因为我不是一个程序有此问题,
是好几个程序都是这个同样的问题。贴一个上来:#include<windows.h>
#include<stdio.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInst,LPSTR lpszCmdLine,int nCmdShow)
{
HWND hwnd;
MSG Msg;
WNDCLASS wndclass; char lpszClassName[]="窗口_鼠标";
char lpszTitle[]="My_Windows"; wndclass.lpfnWndProc=WndProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName=NULL;
wndclass.lpszClassName=lpszClassName;
if(!RegisterClass(&wndclass))
{
MessageBeep(0);
return FALSE;
} hwnd=CreateWindow(lpszClassName,lpszTitle,WS_VISIBLE|WS_MINIMIZEBOX,50,50,450,450,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return Msg.wParam;
}LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
TEXTMETRIC tm;
HBRUSH hbrush;
HPEN hpen;
HCURSOR hcursor;
char str[15];
static int x,y;
switch(message)
{
case WM_MOUSEMOVE:
x=LOWORD(lParam);
y=HIWORD(lParam);
if(x>50&&x<150&&y>50&&y<150)
{
hcursor=LoadCursor(NULL,IDC_CROSS);
SetCursor(hcursor);
}
if(x>150&&x<250&&y>50&&y<150)
{
hcursor=LoadCursor(NULL,IDC_SIZEALL);
SetCursor(hcursor);
}
if(x>250&&x<350&&y>50&&y<150)
{
hcursor=LoadCursor(NULL,IDC_SIZENESW);
SetCursor(hcursor);
}
if(x>50&&x<150&&y>150&&y<250)
{
hcursor=LoadCursor(NULL,IDC_IBEAM);
SetCursor(hcursor);
}
if(x>150&&x<250&&y>150&&y<250)
{
hcursor=LoadCursor(NULL,IDC_WAIT);
SetCursor(hcursor);
}
if(x>250&&x<350&&y>150&&y<250)
{
hcursor=LoadCursor(NULL,IDC_UPARROW);
SetCursor(hcursor);
}
if(x>50&&x<150&&y>250&&y<350)
{
hcursor=LoadCursor(NULL,IDC_SIZEWE);
SetCursor(hcursor);
}
if(x>150&&x<250&&y>250&&y<350)
{
hcursor=LoadCursor(NULL,IDC_SIZENESW);
SetCursor(hcursor);
}
if(x>250&&x<350&&y>250&&y<350)
{
hcursor=LoadCursor(NULL,IDC_SIZENS);
SetCursor(hcursor);
}
if(x>350||y>350)
{
hcursor=LoadCursor(NULL,IDC_HELP);
SetCursor(hcursor);
}
if(x<50||y<50)
{
hcursor=LoadCursor(NULL,IDC_APPSTARTING);
SetCursor(hcursor);
} hdc=GetDC(hwnd);
GetTextMetrics(hdc,&tm);
hbrush=(HBRUSH)GetStockObject(WHITE_BRUSH);
SelectObject(hdc,hbrush);
hpen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hdc,hpen);
Rectangle(hdc,5,5,tm.tmAveCharWidth*8,tm.tmHeight+3);
sprintf(str,"%d,%d\0",x,y);
TextOut(hdc,5,5,str,lstrlen(str));
EndPaint(hwnd,&ps);
break; case WM_PAINT:
hdc=BeginPaint(hwnd,&ps);
hpen=(HPEN)GetStockObject(BLACK_PEN);
SelectObject(hdc,hpen);
Rectangle(hdc,50,50,350,350);
MoveToEx(hdc,50,250,NULL);
LineTo(hdc,50,150);
MoveToEx(hdc,50,250,NULL);
LineTo(hdc,350,250);
MoveToEx(hdc,150,50,NULL);
LineTo(hdc,150,350);
MoveToEx(hdc,250,50,NULL);
LineTo(hdc,250,350);
EndPaint(hwnd,&ps);
break; case WM_DESTROY:
PostQuitMessage(0); default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return (0);
}
wndclass.style = CS_HREDRAW|CS_VREDRAW;
如果是这样,你把char lpszClassName[]="窗口_鼠标";
的字符串变断点。
因为系统用于保存这些字符的空间是有限的