Windows API一日一练(6)CreateWindow函数

一个窗口要显示,先要把它创建出来。那就需要调用 API 函数 CreateWindow 了,所以在注册窗口后的第二步,就需要调用创建窗口函数。
 
函数声明如下:
WINUSERAPI
HWND
WINAPI
CreateWindowExA(
    __in DWORD dwExStyle,
    __in_opt LPCSTR lpClassName,
    __in_opt LPCSTR lpWindowName,
    __in DWORD dwStyle,
    __in int X,
    __in int Y,
    __in int nWidth,
    __in int nHeight,
    __in_opt HWND hWndParent,
    __in_opt HMENU hMenu,
    __in_opt HINSTANCE hInstance,
    __in_opt LPVOID lpParam);
WINUSERAPI
HWND
WINAPI
CreateWindowExW(
    __in DWORD dwExStyle,
    __in_opt LPCWSTR lpClassName,
    __in_opt LPCWSTR lpWindowName,
    __in DWORD dwStyle,
    __in int X,
    __in int Y,
    __in int nWidth,
    __in int nHeight,
    __in_opt HWND hWndParent,
    __in_opt HMENU hMenu,
    __in_opt HINSTANCE hInstance,
    __in_opt LPVOID lpParam);
#ifdef UNICODE
#define CreateWindowEx CreateWindowExW
#else
#define CreateWindowEx CreateWindowExA
#endif // !UNICODE
 
#define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)/
CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#define CreateWindowW(lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)/
CreateWindowExW(0L, lpClassName, lpWindowName, dwStyle, x, y,/
nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
#ifdef UNICODE
#define CreateWindow CreateWindowW
#else
#define CreateWindow CreateWindowA
#endif // !UNICODE
 
dwExStyle 是扩展的窗口类型。
lpClassName 是注册的窗口类型名称。
lpWindowName 是窗口名称。
dwStyle 是窗口类型。
X 是窗口左上角位置。
Y 是窗口左上角位置。
nWidth 是窗口的宽度。
nHeight 是窗口的高度。
hWndParent 是父窗口。
hMenu 是主菜单。
hInstance 是应用程序实例句柄。
lpParam 是传送给窗口的自定义参数。
 
调用这个函数的实例如下:
#001 //
#002 //   函数 : InitInstance(HINSTANCE, int)
#003 //
#004 //   目的 : 保存程序实例句柄,并创建窗口显示。
#005 //
#006 //  蔡军生  2007/07/12
#007 //
#008 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
#009 {
#010  HWND hWnd;
#011 
#012  hInst = hInstance; // 保存实例句柄到全局变量里。
#013 
#014  hWnd = CreateWindow(szWindowClass,
#015         szTitle,
#016         WS_OVERLAPPEDWINDOW,
#017         CW_USEDEFAULT,
#018         0,
#019         CW_USEDEFAULT,
#020         0,
#021         NULL,
#022         NULL,
#023         hInstance,
#024         NULL);
#025 
#026  if (!hWnd)
#027  {
#028         return FALSE;
#029  }
#030 
#031  ShowWindow(hWnd, nCmdShow);
#032  UpdateWindow(hWnd);
#033 
#034  return TRUE;
#035 }
14 行里就是调用创建窗口函数。 szWindowClass 是窗口注册名称,前面已经介绍过注册的。
15 行的 szTitle 是窗口显示的标题。
16 行是窗口显示类型。
17 行是缺省的左上角坐标。
18 行是窗口左上角坐标,由于 X 坐标设置为缺省的坐标了,所以会忽略这里的所有设置的值。
19 行是设置窗口的宽度。使用缺省值。
20 行同样忽略窗口的高度。
21 行是没有父窗口。
22 行是没有主菜单。
23 行是窗口当前实例句柄。
24 行是传递给窗口的自定义参数为空。
 
如果窗口创建成功就会返回这个窗口的句柄,否则返回空值。
通过这样设置,就可以创建各种各样的窗口,只要你自己喜欢的,就可以改变它。
  
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1. 声明两个变量:int n1 = 10, n2 = 20;要求将两个变量交换,最后输出n1为20,n2为10。扩展(*):不使用第三个变量如何交换? 2. 用方法来实现:将上题封装一个方法来做,方法有两个参数分别为num1,num2,将num1与num2交换。提示:方法有两个参数n1,n2,在方法中将n1与n2进行交换,使用ref。(*) 3. 请用户输入一个字符串,计算字符串中的字符个数,并输出。 4. 用方法来实现:计算两个数的最大值。思考:方法的参数?返回值?扩展(*):计算任意多个数间的最大值(提示:使用可变参数,params)。 5. 用方法来实现:计算1-100之间的所有整数的和。 6. 用方法来实现:计算1-100之间的所有奇数的和。 7. 用方法来实现:判断一个给定的整数是否为“质数”。 8. 用方法来实现:计算1-100之间的所有质数(素数)的和。 9. 用方法来实现:有一个整数数组:{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 },找出其中最大值,并输出。不能调用数组的Max()方法。 10. 用方法来实现:有一个字符串数组:{ "马龙", "迈克尔乔丹", "雷吉米勒", "蒂姆邓肯", "科比布莱恩特" },请输出最长的字符串。 11. 用方法来实现:请计算出一个整型数组的平均值。{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }。要求:计算结果如果有小数,则显示小数点后两位(四舍五入)。Math.Round() 12. 请通过冒泡排序法对整数数组{ 1, 3, 5, 7, 90, 2, 4, 6, 8, 10 }实现升序排序。 13. 有如下字符串:【"患者:“大夫,我咳嗽得很重。” 大夫:“你多大年记?” 患者:“七十五岁。” 大夫:“二十岁咳嗽吗”患者:“不咳嗽。” 大夫:“四十岁时咳嗽吗?” 患者:“也不咳嗽。” 大夫:“那现在不咳嗽,还要等到什么时咳嗽?”"】。需求:①请统计出该字符中“咳嗽”二字的出现次数,以及每次“咳嗽”出现的索引位置。②扩展(*):统计出每个字符的出现次数。 14. 将字符串" hello world,你 好 世界 ! "两端空格去掉,并且将其中的所有其他空格都替换成一个空格,输出结果为:"hello world,你 好 世界 !"。 15. 制作一个控制台小程序。要求:用户可以在控制台录入每个学生的姓名,当用户输入quit(不区分大小写)时,程序停止接受用户的输入,并且显示出用户输入的学生的个数,以及每个学生的姓名。效果如图:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值