天天加油 - 助您成才
Win32编程基础知识
您正在看的经验技巧是:Win32编程基础知识。

上面的LoadIcon()、LoadCursor()、GetStockObject()都是Windows的API函数,它们的用法可以参看VC的帮助,这里就不多介绍了。

lpszMenuName成员的值我们给它NULL,表示该窗口将没有菜单。如果你想让你的窗口拥有菜单,就把lpszMenuName成员赋值为标志菜单资源的字符串。

WNDCLASS结构的最后一个成员lpszClassName是让你给这个窗口类起一个唯一的名称,因为Windows操作系统中有许许多多的窗口类,必须用一个独一无二的名称来代表它们。通常,你可以用你的程序名来命名这个窗口类的名称。这个名称将在创建窗口的CreateWindow()函数中用到。

填充完毕后,对于WNDCLASS结构,调用RegisterClass()函数进行注册;对于WNDCLASSEX结构,调用RegisterClassEx()函数进行注册,它们的原型分别如下:

ATOM RegisterClass( CONST WNDCLASS *lpWndClass );

ATOM RegisterClassEx( CONST WNDCLASSEX *lpwcx );

该函数如调用成功,则返回一个非0值,表明系统中已经注册了一个名为EasyWin的窗口类。如果失败,则返回0。

创建窗口

当窗口类注册完毕之后,并不会有窗口显示出来,因为注册的过程仅仅是为创建窗口所做的准备工作。实际创建一个窗口的是通过调用CreateWindow()函数完成的。窗口类中已经预先定义了窗口的一般属性,而CreateWindow()中的参数可以进一步指定一个窗口的更具体的属性,在EasyWin程序中,是如下调用CreateWindow()函数来创建窗口的:

hwnd = CreateWindow(

"EasyWin", //创建窗口所用的窗口类的名称*

"一个基本的Win32程序", //窗口标题

WS_OVERLAPPEDWINDOW, //窗口风格,定义为普通型*

100, //窗口位置的x坐标

100, //窗口位置的y坐标

400, //窗口的宽度

300, //窗口的高度

NULL, //父窗口句柄

NULL, //菜单句柄

hInstance, //应用程序实例句柄*

NULL ); //一般都为NULL

CreateWindow()函数的参数的含义在上面的注释中已有介绍,注释后打了星号标记的参数应该着重注意,其它的参数都很简单,不多做介绍,可参看VC的帮助。

第一个参数是创建该窗口所使用的窗口类的名称,注意这个名称应与前面所注册的窗口类的名称一致。

第三个参数为创建的窗口的风格,下表列出了常用的窗口风格:

风格 含义 WS_OVERLAPPEDWINDOW 创建一个层叠式窗口,有边框、标题栏、系统菜单、最大最小化按钮,是以下几种风格的集合:WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, WS_THICKFRAME, WS_MINIMIZEBOX, WS_MAXIMIZEBOX WS_POPUPWINDOW 创建一个弹出式窗口,是以下几种风格的集合: WS_BORDER,WS_POPUP,WS_SYSMENU。WS_CAPTION与WS_POPUPWINDOW风格必须一起使用才能使窗口菜单可见 WS_OVERLAPPED 创建一个层叠式窗口,它有标题栏和边框,与WS_TILED风格一样 WS_POPUP 该窗口为弹出式窗口,不能与WS_CHILD同时使用 WS_BORDER 窗口有单线边框 WS_CAPTION 窗口有标题栏 WS_CHILD 该窗口为子窗口,不能与WS_POPUP同时使用 WS_DISABLED 该窗口为无效,即对用户操作不产生任何反应 WS_HSCROLL 窗口有水平滚动条 WS_ICONIC 窗口初始化为最小化 WS_MAXIMIZE 窗口初始化为最大化 WS_MAXIMIZEBOX 窗口有最大化按钮 WS_MINIMIZE 与WS_MAXIMIZE一样 WS_MINIMIZEBOX 窗口有最小化按钮 WS_SIZEBOX 边框可进行大小控制的窗口 WS_SYSMENU 创建一个有系统菜单的窗口,必须与WS_CAPTION风格同时使用 WS_THICKFRAME 创建一个大小可控制的窗口,与WS_SIZEBOX 风格一样. WS_TILED 创建一个层叠式窗口,有标题栏 WS_VISIBLE 窗口为可见 WS_VSCROLL 窗口有垂直滚动条

程序中使用了WS_OVERLAPPEDWINDOW标志,它是创建一个普通窗口常用的标志。而在DirectX编程中,我们常用的是WS_POPUP,用这个标志创建的窗口没有标题栏和系统菜单,如果设定窗口为最大化,客户区可以占满整个屏幕,以满足DirectX编程的需要。

CreateWindow()函数后面的参数中,仍用到了该应用程序的实例句柄hInstance。

如果窗口创建成功,返回值是新窗口的句柄,否则返回NULL。

显示和更新窗口

窗口创建后,并不会在屏幕上显示出来,要真正把窗口显示在屏幕上,还得使用ShowWindow()函数,其原型如下:

BOOL ShowWindow( HWND hWnd, int nCmdShow );

参数hWnd指定要显示得窗口的句柄,nCmdShow表示窗口的显示方式,这里指定为从WinMain()函数的nCmdShow所传递而来的值。

由于ShowWindow()函数的执行优先级不高,所以当系统正忙着执行其它的任务时,窗口不会立即显示出来,此时,调用UpdateWindow()函数以可以立即显示窗口。其函数原型如下:

BOOL UpdateWindow( HWND hWnd );

消息循环

在Win32编程中,消息循环是相当重要的一个概念,看似很难,但是使用起来却是非常简单。在WinMain()函数中,调用InitWindow()函数成功的创建了应用程序主窗口之后,就要启动消息循环,其代码如下:

while (GetMessage(&msg, NULL, 0, 0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

上一页  1 2 3 4 5 6 下一页

排行

  1. Windows Vista SP1截图曝光
  2. Windows Vista:透视未来桌面远景
  3. 不同:Windows Vista的关机组合快
  4. 如何恢复Windows Vista/XP双启动
  5. Vista系列技巧:Vista侧边栏安装
  6. Vista解惑之防火墙10个注意事项
  7. 官方谈Vista OEM盗版激活 承认破
  8. 仅需三分钟 便可轻松破解Vista登
  9. 浅述单核CPU跑Vista 占用率高的原
  10. Vista Areo界面全攻略
  11. 从1.01到Vista Windows启动画面图
  12. 新手不用慌:Vista官方驱动程序大
  13. 切勿病急乱投医Vista疑难杂症诊解
  14. 再谈WindowVista如何调整硬盘分区
  15. 找回WindowsVista系统自带的游戏
  16. 低配置电脑安装WindowsVista后优
  1. Winodws下Apache+PHP+MySQL的安装
  2. 快照 RegSnap
  3. HKEY_USER 根键(一)
  4. 20:8!超宽屏Vista截图抢鲜
  5. Vista服务优化攻略
  6. Windows Vista:透视未来桌面远景
  7. 不同:Windows Vista的关机组合快
  8. 如何恢复Windows Vista/XP双启动
  9. 用Vista工具箱手动优化WindowsVi
  10. Vista系列技巧:Vista下输入法的
  11. Vista系列技巧:Vista侧边栏安装
  12. 在Vista的多重启动中设置默认系统
  13. 高效管理时间 用好Vista系统日历
  14. Vista解惑之防火墙10个注意事项
  15. 官方谈Vista OEM盗版激活 承认破
  16. 轻松玩Vista!常用FTP工具兼容测
  1. Winodws下Apache+PHP+MySQL的安装
  2. 20:8!超宽屏Vista截图抢鲜
  3. Vista服务优化攻略
  4. 妙用Windows9x的Desktop.ini文件
  5. Windows Vista:透视未来桌面远景
  6. 不同:Windows Vista的关机组合快
  7. 如何恢复Windows Vista/XP双启动
  8. Vista系列技巧:常遇系统故障解决
  9. Vista系列技巧:Vista侧边栏安装
  10. Vista解惑之防火墙10个注意事项
  11. 官方谈Vista OEM盗版激活 承认破
  12. 仅需三分钟 便可轻松破解Vista登
  13. 浅述单核CPU跑Vista 占用率高的原
  14. Vista Areo界面全攻略
  15. 从1.01到Vista Windows启动画面图
  16. 新手不用慌:Vista官方驱动程序大

最近更新

  • 推荐阅读
  • 经验技巧《Win32编程基础知识》Win32编程基础知识
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM