我是一个C++程序的初学者,最近看了《Visual C++、DirectX9 3D游戏开发导引》,他的程序多是用VC 6.0编写的,而我用的平台是VS2005,所以许多程序需要修改。这是该书第二部分用的程序,以后还会把相应程序上传。请大家指正。
首先创建一个新的Win32 项目,将下述源码输入:
#include <tchar.h>
#include <windows.h>
#include "resource.h"
#define APIENTRY WINAPI
//定义全局变量
HINSTANCE g_hInst;
const TCHAR g_szWndClass[]=_T("Game");
const TCHAR g_szWndTitle[]=_T("窗口示例程序");
WNDCLASSEX g_wcex;
//函数原型声明
ATOM RegWndClass(HINSTANCE hInstance);
BOOL InitWnd(HINSTANCE,int);
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
//函数定义
int APIENTRY WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
MSG msg;
if (!hPrevInstance)
{
RegWndClass(hInstance);
}
if (!InitWnd(hInstance,nCmdShow)){
return FALSE;
}
while (GetMessage(&msg,NULL,0,0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnregisterClass(g_szWndClass,g_wcex.hInstance);
return msg.wParam;
}
ATOM RegWndClass(HINSTANCE hInstance)
{
g_wcex.cbSize =sizeof(WNDCLASSEX);
g_wcex.style =CS_HREDRAW | CS_VREDRAW;
g_wcex.lpfnWndProc =(WNDPROC)WndProc;
g_wcex.cbClsExtra=0;
g_wcex.cbWndExtra=0;
g_wcex.hInstance=hInstance;
g_wcex.hIcon= LoadIcon(hInstance,(LPCTSTR)IDI_ICON1);//需根据“resource.h”修改
g_wcex.hCursor=LoadCursor(NULL,IDC_ARROW);
g_wcex.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
g_wcex.lpszMenuName=0;
g_wcex.lpszClassName=g_szWndClass;
g_wcex.hIconSm =NULL;
return RegisterClassEx(&g_wcex);
}
BOOL InitWnd(HINSTANCE hInstance,int nCmdShow)
{
HWND hWnd;
hWnd=CreateWindow(g_szWndClass,g_szWndTitle,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);
if(!hWnd)
{
return FALSE;
}
ShowWindow(hWnd,nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}
LRESULT CALLBACK WndProc (HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam)
{
TCHAR szTitleMsg[]=_T("用户输入事件提示");
TCHAR szLMouseMsg[]=_T("单击了鼠标左键");
TCHAR szRMouseMsg[]=_T("单击了鼠标右键");
TCHAR szLeftKeyMsg[]=_T("按下←箭头键");
TCHAR szRightKeyMsg[]=_T("按下→箭头键");
TCHAR szUpKeyMsg[]=_T("按下↑箭头键");
TCHAR szDownKeyMsg[]=_T("按下↓箭头键");
switch (message){
case WM_LBUTTONDOWN:
MessageBox(NULL,szLMouseMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
break;
case WM_RBUTTONDOWN:
MessageBox(NULL,szRMouseMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
break;
case WM_KEYDOWN:
if (wParam==VK_LEFT){
MessageBox(NULL,szLeftKeyMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
}
if (wParam==VK_RIGHT){
MessageBox(NULL,szRightKeyMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
}
if (wParam==VK_UP){
MessageBox(NULL,szUpKeyMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
}
if (wParam==VK_DOWN){
MessageBox(NULL,szDownKeyMsg,szTitleMsg,MB_OK|MB_ICONINFORMATION);
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default :
return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}
然后在“资源文件”文件夹图标上点击右键,依次“添加”→“资源”。在打开的“添加资源”对话框中选择“Icon”,然后选择“新建”,随便用鼠标输入一个字符,即可作为程序窗口左上角的图标。
至此,一个简单的Win32就完成了。