Win32 API 应用程序示例

我是一个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就完成了。

你可能感兴趣的:(游戏,api,null,UP,callback,平台)