【Chapter 1】入门

来源:互联网 发布:otc机器人编程教材 编辑:程序博客网 时间:2024/05/18 01:38

刚写了一半的blog

结果不小心backspace的时候浏览器后退了

伤心到爆。

动力大减QAQ

但是日子还是要过

Blog还是要写TAT[啜泣]

 

本该上学期就应该开始学的东西被我拖拖拉拉到现在才开始学

求一个黄色or蓝色类型人监督

红色类型人容易自我放弃TAT

 

以前用c++/c写出来的总是小黑窗

毫无美感可言

现在开始学习怎么写出图形界面的程序

[ 话说你写这么多序是没有人会看的! ]

 

 

====================================================================

 

【Windows基础与GDI游戏】

 

一、一个简单的窗口函数至少包含两个函数

1)  WinMain函数

2)  窗口过程函数

 

1) WinMain函数

int WINAPI WinMain(

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTRlpCmdLine,

intnCmdShow

)

 

//在 Visual Studio 2005下则为int APIENTRY WinMain...

//在 Visual Studio 2012下则为int CALLBACK WinMain...

 

(1)参数:

hInstance:应用程序当前实例的句柄。

hPrevlnstance:应用程序的先前实例的句柄。

对于同一个程序打开两次,出现两个窗口第一次打开的窗口就是先前实例的窗口。对于一个32位程序,该参数总为NULL

如果需要检测另外一个实例是否已经存在,则使用CreateMutex函数创建一个独一无二的名字。即使互斥名已经存在,CreateMutex函数也是成功的,但是GetLastError函数将返回 ERROR_ALREADY_EXISTS,这就表明应用程序有另外一个实例存在,因为它首先创建了互斥名。

lpCmdLine:指向应用程序命令行的字符串的指针,不包括执行文件名。获得整个命令行,参看GetCommandLine

第三个参数lpCmdLine是一个以空终止的字符串,指定传递给应用程序的命令行参数。

例如:在D盘下有一个sunxin.txt文件,当我们用鼠标双击这个文件时将启动记事本程序(notepad.exe),此时系统会将D:\sunxin.txt作为命令行参数传递给记事本程序的WinMain函数,记事本程序在得到这个文件的全路径名后,就在窗口中显示该文件的内容。要在VC++开发环境中向应用程序传递参数,可以单击菜单【Project】→【Settings】,选择“Debug”选项卡,在“Program arguments”编辑框中输入你想传递给应用程序的参数。

nCmdShow:指明窗口如何显示。[详见附录1]

 

(2)WINAP的含义

# define WINAPI__stdcall;

表明参数都是从右向左通过堆栈传递的

 

(3)WinMain函数主要做了四件事

-注册窗口类

-创建窗口

-显示窗口

-消息循环

 

2)  窗口过程函数

[程序的大部分编码工作]

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAMwParam, LPARAM lParam);

 

(1)LRESULT是一个数据类型,  
MSDN: 32-bit value returned from a window procedure or callback function  
指的是从窗口程序或者回调函数返回的32位值 

 

(2)CALLBACK的含义:

#define CALLBACK__stdcall;

 

(3)四个参数的作用:
hwnd:窗口句柄
message:消息的类型
wParam和lParam:消息的附加信息

 

(4)窗口过程的作用:就是对各种用户动作(或者系统事件)进行处理。

(5)窗口过程的写法:通常是用一个switch语句判断message参数,对不同类型的消息进行不同的处理。

 

 

接下来会用实例来说明啦~

早起好精神好开心yeah~

 

========================================================

附录1:

nCmdShow:指明窗口如何显示。该参数可以是下列值之一:


SW_HIDE:隐藏窗口并且激活另外一个窗口。
SW_MINIMIZE:最小化指定的窗口,并且激活在系统表中的顶层窗口。
SW_RESTORE:激活并显示窗口。如果窗口已经最小化或最大化,系统将以恢复到原来的尺寸和位置显示窗口(与SW_SHOWNORMAL相同)。
SW_SHOW:激活一个窗口并以原来的尺寸和位置显示窗口。
SW_SHOWMAXIMIZED:激活窗口并且将其最大化。
SW_SHOWMINIMIZED:激活窗口并将其最小化(以图标显示)。
SW_SHOWMINNOACTIVE:将一个窗口显示为图标。激活窗口维持活动状态。
SW_SHOWNA:以窗口的当前状态显示窗口。激活窗口保持活动状态。
SW_SHOWNOACTIVATE:以窗口的最近一次的尺寸和位置显示窗口。激活窗口维持激活状态。
SW_SHOWNORMAL:激活并显示窗口。如果窗口最大化或最小化,系统将其恢复到原来的尺寸和位置(与SW_RESTORE相同)。

原创粉丝点击