Win32窗口开发(c++)
Win32编程:Windows API 编程,不仅仅使用于32位应用程序,同样适用与64位应用程序。
API:应用程序编程接口(Applcation Progamma Interface)
1.API函数,命名非常规范,单词的组合,首字母大写
2.MSDN手册。(在线版本,离线版本) msdn6.0=> vc6.0。
SDK:Software Development Kits(软件开发包)
什么是窗口:一般包含标题栏,菜单栏,系统菜单,最小化框,最大化框,边框,滚动条。
窗口又分为:客户区和非客户区
句柄:用来标识系统资源。
入口函数:WinMain
main:控制台应用程序的是入口函数(CUI)。
WinMain:窗口应用程序入口函数(GUI) 严格区分大小写。
HINSTANCE:应用程序实例句柄类型,
hInstance:当前应用程序实例句柄,(实例:活生生的程序)
hPreInstance:当前应用程序前一个实例句柄(废弃,16位应用程序上面的一个参数,32位,64位,0)
LPSTR:char*
typedef char CHAR;
typedef char *LPSTR;
lpCmdLine: 命令行参数
nCmdShow: 窗口的显示方式,最大化,最小化,隐藏
函数的调用约定:
WINAPI
#define CALLBACK __stdcall
#define WINAPI __stdcall
#define WINAPIV __cdecl
#define APIENTRY WINAPI
#define APIPRIVATE __stdcall
#define PASCAL __stdcall
Windows 程序遵循一种调用 __stdcall 约定,显示的加上C语言库函数都有默认的调用约定 __cdecl。
__stdcall 和 __cdecl:区别
约定了函数参数的入栈方式,从右向左入栈。
HINSTANCE:详细的讲解,刨根究底
指向结构体的指针
下面展示一些 内联代码片
。
DECLARE_HANDLE(HINSTANCE);
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
#define DECLARE_HANDLE(HINSTANCE)
struct HINSTANCE__
{
int unused;
};
typedef struct HINSTANCE__* HINSTANCE
//HWND:窗口句柄类型, 代表窗口的唯一标记
DECLARE_HANDLE (HWND);
struct HWND__
{
int unused;
};
typedef struct HWND__* HWND
下面来举例一下如何弹出一消息提示框。
#include <Windows.h>
int __stdcall WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine, int nCmdShow)
{
//工程选用的编码为Unicode编码,代表我们调用的API都是采用Unicode版本的函数
//工程选用的编码为多字节编码,代表我们调用的API都是采用多字节(ANSI)版本的函数
//弹出一个消息提示框
//第一个参数:父窗口句柄,NULL,没有父窗口
//第二个参数:消息显示文本 L是告诉编译器我这里采用的是款字符字符串,
//第三个参数:消息提示框的标题,
//第四个参数:按钮与图标的组合 MB:MessageBox,注意:图标与图标不能组合,按钮与按钮不能组合。
//提示框的句法:
/*int MessageBox(
HWND hWnd,
LPCTSTR lpText,
LPCTSTR lpCaption,
UINT uType
);
*/
//MB_YESNOCANCEL,0x00000003L,该消息框包含三个按钮:是,否和取消。
//MB_ICONEXCLAMATION,0x00000030L,消息框中会出现一个感叹号图标。
int nFirst=MessageBox(NULL,L"这是我的第一个Win32应用程序",L"提示",MB_YESNOCANCEL|MB_ICONEXCLAMATION);
if(nFirst==IDCANCEL)
{
MessageBox(NULL,L"你点了取消按钮",L"提示",MB_OK);
}
else if(nFirst==IDYES)
{
MessageBox(NULL,L"你点了是按钮",L"提示",MB_OK);
}
else if(nFirst==IDNO)
{
MessageBox(NULL,L"你点了否按钮",L"提示",MB_OK);
}
return 0;
}
运行程序就可以看到以下按钮和图标的显示了,你学会了吗。