win32程序之窗口程序,以及消息机制

本文介绍了Windows窗口程序的基本概念,包括窗口如何响应鼠标点击等交互事件。讲解了窗口编程的步骤,从创建窗口类、注册窗口、创建窗口到处理消息。重点讨论了消息类型,如WM_COMMAND、WM_PAINT和WM_DESTROY,并指出消息处理在窗口程序中的关键作用。文章还提到了调试Windows程序的方法,如使用Sprintf和OutputDebugString API。
摘要由CSDN通过智能技术生成

一丶简介

  通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标点击会有反应.

而我们要怎么实现那. 

  其实鼠标点击是产生了一个消息.  window把这个消息封装成了消息结构体. 发送给了我们的窗口程序.  那么windows怎么知道你点击的那个窗口那?

是这样的. 当我们点击的时候. 会记录点击坐标.消息.等等. windows系统会接受到. 然后遍历内核中的WINOBJ结构. 而这个结构中存储着窗口对象. 窗口对象对应着消息线程.

所以windows一层一层的遍历.则找到了对应的窗口以及窗口对应的线程.然后发送给我们的应用程序. 

上面说的我们需要了解. 要知道消息怎么产生的. 怎么传递的.那么下面编程就明白了.

例如下图:

 

每个应用程序都有一个线程对象. 而这个线程对象如果创建窗口.那么内核中就有这个窗口对象.

如果我们有鼠标点击的消息.键盘消息等等.操作系统都会遍历窗口对象. 而窗口对象也会保存着创建这个窗口对象对应的线程对象. 而这个线程对象中则有消息队列.

这样的话操作系统则会封装消息发送给我们窗口对象.

二丶Wind窗口类结构.创建窗口程序.

1.进行窗口编程需要注意的问题

  在Windows中进行窗口编程.入口点已经改成WinMain了. 有四个参数.

如以下代码所示

复制代码

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,               //窗口的实例句柄 hinstance代表模块意思 HWND代表窗口意思. HANDLE代表内核对象. HDC 设备上下文.
                     _In_opt_ HINSTANCE hPrevInstance,        //父窗口句柄.不需要.
                     _In_ LPWSTR    lpCmdLine,                //命令行参数
                     _In_ int       nCmdShow)                 //命令. 最大化命令.还是最小化命令.
{
  
    return 0;
}
wWinMain  因为有UNICODE跟ASCII区别. 所以我是UNICODE使用wWinMain. A版本就是用WinMain

复制代码

2.进行Windows编程的调试手法

  在Windows中我们调试程序不能简单的使用printf进行调试.或者打印输出了. 我们可以使用两个API进行操作.

1.Sprintf() 格式化字符串. 

2.OutPutDebugString() 输出调试字符串.

具体两个API. 不再累赘.百度搜索即可.

因为OutPutDebugString() 只能打印固定字符串.所以使用sprintf进行格式化字符串.如下面代码.

复制代码

int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
                     _In_opt_ HINSTANCE hPrevInstance,
                     _In_ LPWSTR    lpCmdLine,
                     _In_ int     
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值