windows函数入口和数据类型

1、windows函数入口
我们之前控制台编程的主函数都是int main();但是windows编程需要另一个主函数WinMain()函数:

#include <windows.h>
#include <tchar.h>

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,  LPSTR lpCmdLine,  INT nCmdShow)
{

	MessageBox(NULL, _T("FIRSTAPP"), _T("title"), MB_OK);
	return 0;

}

我用的是vs2019,我们要注意在项目属性里面把系统选项从控制台变成窗口。
WINAPI我们转到定义其实发现就是——stdcall,确定一种调用方式,参数从右往左压入栈。
首先分析一下里面的参数;
HINSTANCE:指的是句柄,实质是一个跟踪资源的指针。
hPrevInstance:父程序的句柄;
lpCmdLine:相当于main里面的参数argv,argc.
ncmdshow—— 最后一个参数是启动期间传递给应用程序的一个整数,指出如何打开程序的窗口.
看起来比较复杂,用的多了就知道了;

2、MessageBox()函数
这是一个很常用的函数,用于创建一个模式对话框。
参数说明:
第一个参数:要创建的消息框的所有者窗口的句柄。如果此参数为NULL,则消息框没有所有者窗口。
第二个:对话框内容;
第三个:标题;
第四个:按钮。MB形式,OK就是确定,还有其他形式可以自己试试。

3、宽窄字符转换
我们默认的unicode字符就是宽字符,一个字符两个字节,ASCII编码就是窄字符。我们在程序中加入了tchar.h头文件,其实就是编译器可以自动实现宽窄字符的转换。比如messagebox是一个中型的函数,_T可以根据字符集选择不同的字符形式。其实messageboxa代表窄字符作为参数,messageboxw表示宽字符作为参数。

4、windows常见数据类型
虽然c++定义了很多数据类型,但是为了程序移植的方便(在WIN98中int 和short int一样都是两字节,但是在win7中int四个字节),windows定义了自己的数据类型(用typedef a int的形式)。
举一些例子:
HINSTANCE:比如这种H开头的代表句柄;
INT,WORD,DWORD,STR等代表和C一样的数据类型,只是大小写不同。
LPSTR:P,LP开头的代表一个指针。这里就是字符串指针;
nCmdShow:C开头的代表常量,比如这里就是int类型的常量;
这样我们看到这些奇怪的数据类型就不怕了,只要查看定义就可以轻易知道意思。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值