用VS创建一个win32窗口,编译运行都可以,但那个窗口没有显示出来
RT代码如下:#include<windows.h>#include<tchar.h>LRESULTCALLBACKWindowProc(HWNDhwnd,UINTuMs...
RT
代码如下:
#include<windows.h>
#include<tchar.h>
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WindowProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=0;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName=0;
wndclass.lpszClassName=_T("我的窗体");
if(RegisterClass(&wndclass)==0){
MessageBox(0,_T("注册窗口类失败"),_T("我的窗体"),MB_OK);
return 0;
}
HWND hWnd=CreateWindow(_T("我的窗口"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,0,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg){
case WM_CLOSE:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
但是可以在进程中看到那个程序在运行 展开
代码如下:
#include<windows.h>
#include<tchar.h>
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
WNDCLASS wndclass;
wndclass.style=CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc=WindowProc;
wndclass.cbClsExtra=0;
wndclass.cbWndExtra=0;
wndclass.hInstance=hInstance;
wndclass.hIcon=0;
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wndclass.lpszMenuName=0;
wndclass.lpszClassName=_T("我的窗体");
if(RegisterClass(&wndclass)==0){
MessageBox(0,_T("注册窗口类失败"),_T("我的窗体"),MB_OK);
return 0;
}
HWND hWnd=CreateWindow(_T("我的窗口"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);
ShowWindow(hWnd,SW_SHOW);
UpdateWindow(hWnd);
MSG msg;
while(GetMessage(&msg,0,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
)
{
switch(uMsg){
case WM_CLOSE:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
但是可以在进程中看到那个程序在运行 展开
2个回答
展开全部
我用编译器是vs2010,将wndclass.lpszClassName=_T("我的窗体");中的“我的窗体”改成英文的比如mywindow,然后再将CreateWindow(_T("我的窗口"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);中的“我的窗体”也改成mywindow之后问题解决!这主要原因是因为lpszClassName是一个类的名称,好像不能用中文字符!
展开全部
将类名改为英文字符串
wndclass.lpszClassName=_T("我的窗体");->wndclass.lpszClassName=_T("MyWindows");
HWND hWnd=CreateWindow(_T("我的窗口"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);->
HWND hWnd=CreateWindow(_T("MyWindow"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);
wndclass.lpszClassName=_T("我的窗体");->wndclass.lpszClassName=_T("MyWindows");
HWND hWnd=CreateWindow(_T("我的窗口"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);->
HWND hWnd=CreateWindow(_T("MyWindow"),_T("我的第一个窗体"),WS_OVERLAPPEDWINDOW,200,200,500,400,0,0,hInstance,0);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询