能执行就已经产生了EXE,在你的程序文件夹内有个DEBUG文件夹,你的EXE就在里面。
“如果我想要编出一个游戏的那种窗口、不是win32的控制台窗口要怎幺弄?”
你可以建立一个Win32Application工程,选择“典型的HelloWorld”,向导就能给你生成。
建立窗口的步骤:
1:注册窗口类。
2:创建窗口。
3:显示窗口。
4:进入消息循环。
详解:
1:注册窗口类:这一步能够让Windows了解你需要建立的窗口的基本属性。你事先就要定义好你的窗口类名,把它定义到全局变量。这是关键。比如:
TCHARMyWindowClass[255]=TEXT(\"MYCLASS\");
//接着定义我们的窗口句柄:
HWNDMyhWnd=NULL;
//最重要的:消息处理函数的声明
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
然后就是WinMain里面的语句:
WNDCLASSEXwcex={0};
wcex.cbSize=sizeof(WNDCLASSEX);
wcex.lpfnWndProc =(WNDPROC)WndProc;//消息处理函数地址。
wcex.hInstance =hInstance;//进程句柄。
wcex.hIcon =LoadIcon(hInstance,(LPCTSTR)IDI_GAME2););//载入图标,如果你的资源文件里有图标。没有图标的话,就把这句删掉:
wcex.hCursor =LoadCursor(NULL,IDC_ARROW);//使用系统默认鼠标指针形态:箭头
wcex.hbrBackground =(HBRUSH)(COLOR_WINDOW1);//背景色:白色。
wcex.lpszClassName =MyWindowClass;//窗口类名。
wcex.hIconSm =LoadIcon(hInstance,(LPCTSTR)IDI_SMALL);//载入小图标,如果你的资源文件里有图标。没有图标的话,就把这句删掉:
RegisterClassEx(//这一步注册窗口类。
2:创建窗口:
MyhWnd=CreateWindowEx(0,MyWindowClass,TEXT(\"标题栏文本\"),WS_OVERLAPPEDWINDOW/*这是类型,详见MSDN*/,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
//如果创建失败:
if(!MyhWnd)return;
3:显示窗口:
ShowWindow(MyhWnd,nCmdShow);
UpdateWindow(MyhWnd);
4:进入消息循环:
这一步是来处理系统消息的。神马叫系统消息?比如:鼠标滑过这个窗体,系统就发送“鼠标滑过”这个消息给你的窗体,你的窗体才能知道“鼠标刚刚划过我的肚子”
MSGmsg;//定义消息结构体
while(msg.message!=WM_QUIT)
{
if(PeekMessage(
DispatchMessage(
}
else
{
//绘制游戏场景
}
}
我们需要定义消息处理函数:WndProc
LRESULTCALLBACKWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)
{
switch(message)
{
caseWM_DESTROY:
PostQuitMessage(0);
break;
caseWM_PAINT:
//当窗口需要重新绘制时,请输入绘制函数。
break;
default:
returnDefWindowProc(hWnd,message,wParam,lParam);
}
return0;
}
好了,窗体定义成功,绘图的例子:
HDChdc=GetDC(MyhWnd);//获取绘图句柄
SetPixel(hdc,500,200,RGB(255,128,0));//在坐标(500,200)处画一个点,颜色为橘红色
MoveToEx(hdc,300,300,NULL);//把笔尖放在(300,300)处,为划线做准备。
LineTo(hdc,500,500);//画直线,从刚才的笔尖画到(500,500)处。
ReleaseDC(MyhWnd,hdc);//释放绘图句柄 |