WINDOWS应用程序设计用到的基本术语Word格式.docx
《WINDOWS应用程序设计用到的基本术语Word格式.docx》由会员分享,可在线阅读,更多相关《WINDOWS应用程序设计用到的基本术语Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
![WINDOWS应用程序设计用到的基本术语Word格式.docx](https://file1.bdocx.com/fileroot1/2022-12/16/c3ea50ed-ce4b-4e07-9335-498a0839d150/c3ea50ed-ce4b-4e07-9335-498a0839d1501.gif)
例子
备注
Lm
Class
LmObject
表示类型本身
不与范围前缀结合使用
I
Interface接口
IUnknown
注:
类名前缀改为Lm,对于非全局的类最好有语义表示其所属模块。
类的实例命名与类名大致相同,只是类名语义表示类的通用含义,而类名表示此实例的具体语义。
如类名LmSketPoint表示草图点的类定义,而它的两个实例_StartPoint,_EndPoint分别代表起点和终点的语义。
类的实例命名带上前缀_。
特殊约定:
a.MouseTool的派生类的前缀为_Mt.
b.对话框类的前缀为CDlg.
c.橡皮条类的前缀为_Rb.
范围前缀:
前缀
g_
全局作用域
g_Servers
m_
成员变量
m_pDoc,
l_
局部作用域
l_strName
少用
编程时尽量少用全程变量,对于全程变量还应在类型前缀后加上如下关键字:
特征模块
:
Fea
草图模块
Sket
装配模块
Asm
工程图模块:
Lay
曲面模块
Surf
界面模块
Ui
常用的一般数据类型的前缀
内存规格描述
ch
char
8-bitcharacter
chGrade
TCHAR
16-bitcharacterif_UNICODEisdefined
chName
b
BOOL
Booleanvalue
bEnabled
n
int
Integer(sizedependentonoperatingsystem)
nLength
UINT
Unsignedvalue(sizedependentonoperatingsystem)
w
WORD
16-bitunsignedvalue
wPos
l
LONG
32-bitsignedinteger
lOffset
dw
DWORD
32-bitunsignedinteger
dwRange
p
*
Ambientmemorymodelpointer
pDoc
lp
FAR*
Farpointer
lpDoc
lpsz
LPSTR
32-bitpointertocharacterstring
lpszName
LPCSTR
32-bitpointertoconstantcharacterstring
LPCTSTR
32-bitpointertoconstantcharacterstringif_UNICODEisdefined
h
handle
HandletoWindowsobject
hWnd
lpfn
(*fn)()
callbackFarpointertoCALLBACKfunction
lpfnAbort
常用Windows对象名称缩写
Windows对象
例子变量
MFC类
例子对象
HWND
hWnd;
CWnd*
pWnd;
HDLG
hDlg;
CDialog*
pDlg;
HDC
hDC;
CDC*
pDC;
HGDIOBJ
hGdiObj;
CGdiObject*
pGdiObj;
HPEN
hPen;
CPen*
pPen;
HBRUSH
hBrush;
CBrush*
pBrush;
HFONT
hFont;
CFont*
pFont;
HBITMAP
hBitmap;
CBitmap*
pBitmap;
HPALETTE
hPalette;
CPalette*
pPalette;
HRGN
hRgn;
CRgn*
pRgn;
HMENU
hMenu;
CMenu*
pMenu;
hCtl;
CStatic*
pStatic;
CButton*
pBtn;
CEdit*
pEdit;
CListBox*
pListBox;
CComboBox*
pComboBox;
Windows应用程序的基本运行机制与HelloWin程序详解
总的来说最基本的Windows应用程序的运行执行顺序总是以如下的基本顺序执行的。
顺序结构:
调用WinMain函数开始执行--à
定义窗口类--à
初始化窗口类--à
窗口的实例化--à
通过消息循环获取消息并将消息发送给消息处理函数做出相应的操作
由于windows应用程序运行的逻辑结构特殊所以代码的详细解释笔者就不把程序于叙述分开了了,这样有利于阅读与分析。
分析代码如下:
//程序作者:
管宁
//站点:
dev-
//所有稿件均有版权,如要转载,请务必注明出处和作者
#include<
windows.h>
#pragmacomment(lib,"
winmm.lib"
)//为了要播放声音,必须导入这个库
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)
HINSTANCE类型的含义为实例句柄。
hInstance事实上就是当前应用程序自身的标识代号,代号通常都是一个32位整数。
hPrevInstance与过去的16位应用程序有关系,表示指向前一个实例的句柄。
PSTR类型的含义是指向以\0结尾的字符串指针。
szCmdLine前面的sz同样是表示指向以\0结尾的字符串指针,这个对象用于保存命令行。
最后iCmdShow是一个整型数据,标记了程序最初的显示状态。
为SW_SHOWNORAML的时候为一般大小显示方式。
为SW_SHOWMAXIMIZED的时候为最大化显示方式。
为SW_SHOWMINNOACTIVE的时候程序将显示在任务栏上。
{
staticcharszAppName[]=TEXT("
HelloWin"
);
//预先定义一个c风格字符串,稍后用于设置窗口类名称。
WNDCLASSwndclass;
//定义窗口类对象
在这里不得不说一下的是,窗口类事实上是struct结构体,内部有10个分量,他们是用来于初始化窗口类对象而用的。
这个结构体在winuser.h头文件中定义,从方式上来说,分为ASCII版的WNDCLASSA和Unicode版的WNDCLASSW两个。
typedefstructtagWNDCLASSA{
UINT
style;
WNDPROC
lpfnWndProc;
int
cbClsExtra;
cbWndExtra;
HINSTANCE
hInstance;
HICON
hIcon;
HCURSOR
hCursor;
HBRUSH
hbrBackground;
LPCSTR
lpszMenuName;
lpszClassName;
}WNDCLASSA,*PWNDCLASSA,NEAR*NPWNDCLASSA,FAR*LPWNDCLASSA;
typedefstructtagWNDCLASSW{
style;
lpfnWndProc;
hInstance;
hIcon;
hbrBackground;
LPCWSTR
lpszMenuName;
lpszClassName;
}WNDCLASSW,*PWNDCLASSW,NEAR*NPWNDCLASSW,FAR*LPWNDCLASSW;
//-------------------------------窗口类对象初始化过程------------------------------------
wndclass.style
=CS_HREDRAW|CS_VREDRAW;
/*
设置窗口类对象的样式风格,CS_HREDRAW|CS_VREDRAW这两个值是通过位运算的与运算结合起来的。
表示了窗口在改变了水平和垂直大小的时候,窗口要强迫刷新。
这些通过define定义的标识,可以在WinUser.h头文件中找到。
#defineCS_VREDRAW
0x0001
#defineCS_HREDRAW
0x0002
#defineCS_DBLCLKS
0x0008
#defineCS_OWNDC
0x0020
#defineCS_CLASSDC
0x0040
#defineCS_PARENTDC
0x0080
#defineCS_NOCLOSE
0x0200
#defineCS_SAVEBITS
0x0800
#defineCS_BYTEALIGNCLIENT
0x1000
#defineCS_BYTEALIGNWINDOW
0x2000
#defineCS_GLOBALCLASS
0x4000
#defineCS_IME
0x00010000
wndclass.lpfnWndProc
=WndProc;
//指定窗口的处理函数为WndProc,WndProc将处理windows消息。
wndclass.cbClsExtra
=0;
//窗口类无扩展
wndclass.cbWndExtra
//窗口实例无扩展
wndclass.hInstance
=hInstance;
//指定当前应用程序实例句柄,也就是程序当前的标识号。
wndclass.hIcon
=LoadIcon(NULL,IDI_APPLICATION);
通过LoadIcon函数设置应用程序窗口标题的icon图标。
HICONLoadIcon(HINSTANCEhInstance,LPCTSTRlpIconName);
函数返回HICON类型的图标句柄。
第一个参数表示当前应用程序的窗口句柄,第二个参数表示图标。
默认状态下,第一个参数为NULL,第二个为IDI_APPLICATION,表示使用系统默认提供的图标,可以在WinUser.h头文件中找到。
#defineIDI_APPLICATION
32512
*/
wndclass.hCursor
=LoadCursor(NULL,IDC_ARROW);
通过LoadCursor函数设置应用程序窗口光标样式。
HCURSORLoadCursor(HINSTANCEhInstance,LPCTSTRlpCursorName);
函数返回HCURSOR类型的光标句柄。
第一个参数表示当前应用程序的窗口句柄,第二个参数表示光标。
默认状态下,第一个参数为NULL,第二个为IDC_ARROW,表示使用系统默认提供的光标,可以在WinUser.h头文件中找到。
#defineIDC_ARROW
MAKEINTRESOURCE(32512)
wndclass.hbrBackground
=
(HBRUSH)GetStockObject(WHITE_BRUSH);
通过GetStockObject函数设置应用程序窗口的背景颜色。
HGDIOBJGetStockObject(intfnObject);
函数返回HCURSOR类型的GDI对象句柄,为了程序能够正确执行,必须把HGDIOBJ类型强制转换成HBRUSH画刷句柄。
参数表示当前使用的画刷颜色。
这些常量的定义可以在WinGDI.h头文件中找到。
#defineWHITE_BRUSH
0
#defineLTGRAY_BRUSH
1
#defineGRAY_BRUSH
2
#defineDKGRAY_BRUSH
3
#defineBLACK_BRUSH
4
#defineNULL_BRUSH
5
#defineHOLLOW_BRUSH
NULL_BRUSH
wndclass.lpszMenuName
=NULL;
wndclass.lpszClassName=szAppName;
//窗口类对象的名称
//-----------------------------------------------------------------------------------------
RegisterClass(&
wndclass);
注册窗口类,参数为窗口类对象的指针。
函数原形为:
ATOMRegisterClass(CONSTWNDCLASS*lpWndClass);
//--------------------------
实例化过程
-------------------------------------------------
HWND
hwnd;
//创建用于保存窗口句柄的对象,窗口句柄是系统识别不同窗口的依据,它只是个代号。
hwnd=CreateWindow(
szAppName,
//窗口类名称
"
你好世界"
//窗口标题
WS_OVERLAPPEDWINDOW,
//窗口样式
CW_USEDEFAULT,
//初始的窗口x轴位置
//初始的窗口y轴位置
//初始的窗口x轴大小
//初始的窗口y轴大小
NULL,
//父窗口句柄