windows编程入门笔记(1)

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;
}

运行程序就可以看到以下按钮和图标的显示了,你学会了吗。
程序运行
点了是按钮

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丿雨落轻尘丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值