设为首页 收藏本站
查看: 637|回复: 0

[经验分享] Windows核心编程(1)

[复制链接]

尚未签到

发表于 2018-6-15 10:12:31 | 显示全部楼层 |阅读模式
  一、创建过程 消息循环
  1.WinMain首先调用Api函数RegisterClass注册一个窗口类,这个类定义
  了窗口重要属性,如窗口过程地址, 默认背景色, 图标. 通过WNDCLASS结构字段
  来定义,  程序生成一个窗口时,必须制定窗口类, 在类被使用之前,必须先对其进行注册,
  这就是为什么RegisterClass在程序的开始即被调用的原因,
  2.一旦WNDCLASS被注册,WinMain讲调用最重要的CreateWindow函数生成应用程序
  3.一个MFC程序你看不到WinMain函数,他也不调用RegisterClass或CreateWIndow
  由于生成没有WS_VISIBLE所以在CreateWIndow之后要调用ShowWindow
  它是窗口可见,并确保WM_PAINT消息处理程序立刻执行。
  4.接下来就是消息循环,为了检索并调度消息,WinMain执行一个简单的反复调用
  GetMessage,TranslateMessage,和DispatchMessage这3个API讲函数的while循环语句
  GetMessage检查消息队列,如果某个消息是有效的,则讲它从队列删除并复制到msg
  否则GetMessage将停留到消息队列上知道消息有效, msg是MSG的一个实例
  其知道保包含相关的消息参数,
  例如消息ID和消息被放置在队列中的时间,  TranslateMessage函数将一个指示字符键的键盘
  消息转换成容易使用的WM_CHAR消息,DispatchMessage函数则讲消息发送给窗口过程,
  5.消息循环一直循环到GetMessage函数返回0值时结束, 这个只有WM_QUIT消息从消息队列中
  被检索到时才发生,.这是WinMain结束,程序终止.
  6.由DispatchMessage函数调度的消息将生产对窗口过程WinProc的调用, 其他没有被处理
  的消息传递给了DefWindowProc函数进行默认处理,
  7.窗口类是Windows系统的数据结构, 窗口类包含窗口重要信息,如窗口风格,窗口消息处理WndProc
  窗口的光标等
  二、应用程序对象

  •   MFC应用核心是基于CWinApp类对象,CWinApp提供了消息循环并来检索消息,
  并将消息调度给应用程序窗口
  2.覆盖ExitInstance在应用程序终止后调用,是释放资源的完美地方,覆盖要确保调用基类
  三、框架窗口对象
  1.MFC的CWnd类机器派生类为窗口或应用程序创建的窗口提供面向对象接口
  窗口类是从CMainWindow是从CFrameWnd类派生的,后者又是从CWnd派生
  CFrameWnd模仿框窗口的行为,
  2.客户区和非客户区
  窗口的非客户区包含标题栏.菜单栏,窗口边框
  客户区指除非客户区之外的区域,都是客户区
  3.窗口样式 是影响窗口外观和行为的一组属性集合
  采用WS为前缀的宏定义
  WS_BORDER创建有边框的窗口
  WS_CAPTION创建有标题栏的窗口
  WS_CHILD创建一个子窗口 等等...
  4.窗口扩展样  一般用WS_EX_为前缀的宏定义
  WS_EX_CLIENTEDGE指明窗口具有3D外观
  WS_EX_APPWINDOW当窗口可见时,将窗口放置在任务栏
  WS_EX_CONTROLPARENT允许用户TAB键遍历子窗口 ...
  四、窗口的Z-Order与桌面窗口

  •   窗口Z-Order的概念
  屏幕一般X轴Y轴表示平面位置,而以Z轴表示前后位置,X轴从左向右
  Z轴从屏幕内指向屏幕外,Z-Order值表示窗口的前后顺序,Z-Order值越大,在屏幕显示越靠近用户
  2.桌面窗口
  桌面窗口就是系统桌面对应的窗口,桌面窗口与其它的关系是,桌面窗口在最底层,其它窗口
  在它之上,所有它的Z-Order值最小。
  五、父窗口和所有者窗口

  •   父窗口与所有者窗口的名次
  窗口之间有两种关系, 一种是owner-owner关系 和 parent-child关系
  前者是所有/被所有关系, 后者是父/子关系, owner称为所有窗口,parent为父窗口
  2.父窗口与子窗口的关系
  子窗口是嵌在父窗口上面的,就像是钉在父窗口上面的感觉,子窗口显示区域不能超过
  父窗口的显示区域,超出的不显示,当父窗口被隐藏时,它的所有子窗口也被隐藏,
  当父窗口销毁时,它拥有所有子窗口都被销毁.
  3.所有者窗口与被所有者窗口的关系
  被所有的窗口永远显示在所有者窗口之上,当所有者窗口最小化时,被所有窗口会自动隐藏
  当所有窗口销毁时,被所有的窗口就会被销毁, 当所有者窗口移动时,被所有的窗口不一起移动,
  被所有窗口可以在所有者窗口区域之外的位置显示.

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-524071-1-1.html 上篇帖子: 端口转发(Linux/Windows) 下篇帖子: Windows Server 2008 Server Core管理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表