本文毫无看点,完全是把系统自动生成的win32代码拷贝过来,而已。
#include "stdafx.h"
#include "game01.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// 函数的声明
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);//宏,对为引用的对象进行处理,消除警告
UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: Place code here.
MSG msg;
HACCEL hAccelTable;
// 配置到全局配置中,在.rc中进行配置
//hInstance应用程序实例句柄,IDS_APP_TITLE 资源中的字符串编号,szTitle 资源文件里面的内容会先拷贝到这个里面,MAX_LOADSTRING是szTitle的大小
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_GAME01, szWindowClass, MAX_LOADSTRING);
//1.注册window类
MyRegisterClass(hInstance);
//2.初始化window窗体
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_GAME01));
// 消息循环,这种方式如果没有处理完当前消息,需要进行等待直到做完
while (PeekMessage(&msg, NULL, 0, 0,PM_REMOVE)) //PM_REMOVE 处理完后,消息从队列里面移走
{
if(msg.message == WM_QUIT){
break;
}
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//TODO
}
//// 消息循环,这种方式如果没有处理完当前消息,需要进行等待直到做完
//while (GetMessage(&msg, NULL, 0, 0))
//{
// if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
// {
// TranslateMessage(&msg);
// DispatchMessage(&msg);
// }
//}
return (int) msg.wParam;
}
/**
注册一个window对象
*/
ATOM MyRegisterClass(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX); //当前类的大小
wcex.style = CS_HREDRAW | CS_VREDRAW; //窗口的类型,意思为横向纵向移动的时候,窗口刷新。
wcex.lpfnWndProc = WndProc; //一个函数指针,这个函数主要用于处理事件。
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance; //当前实例句柄,由winmain传入
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_GAME01));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); //背景颜色,这个地方获取的是画刷对象
wcex.lpszMenuName = NULL;//MAKEINTRESOURCE(IDC_GAME01);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex);
}
/**
初始化,创建窗体并运行
*/
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;
hInst = hInstance; // 把实例句柄存储为全局变量
//创建window窗体,同一个实例句柄可以创建多个窗体并返回它们的句柄,
//所有窗体的事件都是在同一个回调函数里面处理的
hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
if (!hWnd)
{
return FALSE;
}
//显示和刷新window窗体
ShowWindow(hWnd, nCmdShow); //nCmdShow 打开窗体的方式
UpdateWindow(hWnd);
return TRUE;
}
/**
回调函数,处理事件
*/
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps); //hWnd是绘制的窗口的句柄,ps是区域。
// TODO: Add any drawing code here...
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0); //系统停止消息
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam); //使用默认的事件处理函数进行处理
}
return 0;
}
分享到:
相关推荐
Win32 Windows编程基础实例+源代码,内容涉及如下要点: 1 Windows编程基础 2 Windows文字的编码 3 窗口程序 4 窗口消息 5 菜单和加速键 6 绘图 7 对话框 8 基本控件 8个实例文件夹分别...
定时器 progress32 12. 剪贴簿 21. 动态链接库 9. 子窗口控件 setup 13. 使用打印机 22. 声音与音乐 demoBig5 snowfall 14. 位图和Bitblt 23. 领略Internet enumDemo splitter 15. 与设备无关的位图 2. Unicode简介...
MFC相关API, 只是基础的描述, 如果是大虾, 可以不用看了。
一个最简单的Win32程序,作为学习d3d11的开始。
阅读对象:希望学习Win32编程的人员。 目的:如果需要理解MFC框架,或者需要使用Win32技术编程的人员,那么可以仔细阅读该示例。本人注释非常详细,当然因为我是一个专业的Java程序员,所以书写风格在遵守Windows...
第2~5章通过实例阐明Win32下多线程的几种不同实现形式及多进程的实现机制,这是本书介绍的重点内容,也是读者学习后面几章内容所必须掌握的基础知识;第6~8章介绍了多线程技术在网络、图形处理和数据库中的应用。 ...
Iczelion的WIN32汇编基础教程有很好的实例分析,大家可以用编译器编译,我把资源整合了下,以方便打印,如果您觉的好请跟贴,发表下您的意见,我的QQ:471838370
《Win32多线程程序设计》中文版(第1部分) 侯捷 侯俊杰 英文名《multiThreading applications in Win32》 c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The ...
《Win32多线程程序设计》(第2部分)中文版 侯捷 侯俊杰 英文名《multiThreading applications in Win32》 c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The ...
比较全面的介绍了win32汇编的基础和技巧,还有很多实例
Win32 串口编程,介绍串口编程的基础和实例
IN32汇编基础教程有很好的实例分析,大家可以用编译器编译
是windows下网络的基础实例,相信对入门的你会一定的帮助
本书在介绍 Windows XP 注册表基本知识与结构的基础上,详细 地讲解了注册表的使用技巧、 设置与应用实例。 内容涉及 Windows XP 注册表的基本知识、结构分析、使用与管理、注册表在计算机各个方 面的常用设置和高级...
第2~5章通过实例阐明Win32下多线程的几种不同实现形式及多进程的实现机制,这是本书介绍的重点内容,也是读者学习后面几章内容所必须掌握的基础知识;第6~8章介绍了多线程技术在网络、图形处理和数据库中的应用。 ...
本书含有大量的实例,详细讲解和演示了Win32平台的特点和Visual C"6.0的使用技巧,方便读者模拟实践。在书中讲解MFC类库使用方法的同时,还将MFC和SDK以及基本API进行了对照,使读者在掌握方法的同时,能深入地理解...
很多人都跟我一样学习了c/c++ 基础之后就不知道该干嘛了吧,学API吧 不管学什么,只要你做东西,都要用的API函数。