`
lovecontry
  • 浏览: 1037352 次
文章分类
社区版块
存档分类
最新评论

VC学习笔记之——GetMessage函数

 
阅读更多

在GetMessage函数的第二个参数是一个窗口句柄,我们知道通常情况下是设为NULL,用于接收属于调用线程的所有窗口的窗口信息,但是如果把他设为创建窗口时返回的那个窗口句柄,那么就会出现CPU占用率为100%的现象,至于为什么呢,先看下面的代码

在什么的代码中,GetMessage函数的第二个参数,是窗口创建时返回的句柄,当我关闭窗口后 ,去资源浏览器看,是下面的结果

CPU占用率达到100%.原因如下:

GetMessage函数接收到除了WM_QUIT以外的信息均返回非零值,当hWnd参数是无效窗口句柄或者lpMsg参数是无效指针时,会返回-1、当我们关闭窗口时,调用了DestroyWindows来销毁窗口,由于窗口被销毁了,窗口句柄当然就是无效句柄了,那个GetMessage返回-1,在C/C++中非0即真,由于窗口被销毁,GetMessage总是返回-1,所以循环的条件总是为真,于是就形成了死循环,所以CPU使用率会达到100%.

分享到:
评论

相关推荐

    钩子函数大全WORD版

    函数功能: 该函数处理过程是应用程序或库定义的回调函数, 它与函数SetWindowsHookEx搭配使用,每当函数GetMessage从应用程序的消息队列中获得了一个消息时,系统就调用此函数,在将此获得的消息传送给相应窗口处理过程...

    VC6.0 Win32 数字时钟

    VC6.0下通过,基于SDK的数字时钟int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MSG msg; LoadString(hInstance, IDC_CLOCK, szWindowClass, MAX_...

    C/C++笔试题

    应用程序在消息循环中调用GetMessage函数从消息队列中取出一条一条的消息,取出消息后,应用程序可以对消息进行一些预处理。 C. 应用程序调用DispatchMessage,将消息回传给操作系统。 D. 系统利用WNDCLASS结构体的...

    RandRect.rar_getMessage

    随机矩形生成器。可用来查看peekmessage与getmessage的区别

    钩子函数的使用,有例子

    WH_GETMESSAGE:每次当你的应用程序调用一个GetMessage()或者一个PeekMessage()为了去从应用程序的消息队列中要求一个消息时,WINDOWS都会调用你的钩子函数。 而钩子函数可以改变和丢弃这个消息。 II:释放钩子 钩子...

    VC ChatRoom聊天室(客户端 服务端).rar

    VC 聊天室(客户端 服务端)...聊天窗口通过调主对话框的成员函数GetMessage来显示聊天信息,当用户数增加时,播放欢迎音乐,当用户数减少时播放离开音乐。  源代码部分,请参照源码目录中命名的文件夹,查看对应功能。

    Win32编程常用函数

    Win32编程常用函数结构整理 WNDCLASSEX GetStockObject CreateWindow MessageBox CreatePen GetClientRect SelectObject DeleteObject MoveToEx LineTo SetPixel GetPixel CreateSolidBrush CreateHatchBrush ...

    vc数据可视化编程

    该代码是基于vc的数据可视化功能 #include #include LRESULT CALLBACK WangProc( HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam ); int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE ...

    Hook API mingw DLL WH_MOUSE

    WH_HARDWARE 线程、系统 每当调用GetMessage或PeekMessage函数时,如果从消息队列中得到的是非鼠标和键盘消息,则调用钩子函数 WH_JOURNALRECORD 系统 日志记录钩子,用来记录发送给系统消息队列的所有消息 WH_...

    c# 钩子学习笔记

    代码如下: public class SetHook { public class HookTypes { /// <summary> /// 钩子类型 /// </summary> public enum HookType { WH_JOURNALRECORD = 0,//对寄送至消息队列的输入消息进行记录 WH_GETMESSAGE = 3,...

    用API编写简单的Windows程序

    (4) 进行消息循环,用GetMessage(…) 取出消息,分别用TranslateMessage(…) 和DispatchMessage(…) 进行消息的转换和分发。注意消息的格式(MSG结构体) (5) 对窗口函数进行编写(窗口函数是一个回调(CALLBACK)函数...

    Applet实例 ——实时曲线

    JOptionPane.showMessageDialog(null, e.getMessage()); } MyList_copy.add(p); MyList.add(p); Color c = g.getColor(); for(int i=0;i();i++) //遍历整个ArrayList,读出里面所有的Points ...

    钩子技术HOOK使用教程

    钩子函数实际上是一个处理消息的程序段,每当一个应用程序调用函数GetMessage或PeekMessage而恰有一个消息即将被处理时,系统调用钩子函数。也就是说,当特定的息发出,在没有到达目的窗口前,钩子函数先捕获消息,亦...

    在win32工程下做计算器

    WM_QUIT,则GetMessage函数返回FALSE,整 WndProc 注册: 程序设计中有许许多多的结构体。其中 是用于注册窗口类的。 窗口类型 窗口处理函数 窗口扩展 窗口实例扩展 实例句柄 窗口的最小化图标 窗口鼠标...

    MFC的程序框架剖析

    (3)但是,当C++窗口类对象销毁时,与之相关的窗口也将销毁,因为它们之间的纽带m_hWnd已经断了 3、示例---在窗口中显示按钮 (1)CButton按钮类继承于CWnd (2)对于一个CButton对象,在定义之后就可以使用了;但是,...

    中文API支持库(1.0-0

    这个函数返回的是当前线程的指针——不能获取其他应用程序的指针。 _寻找窗口() 寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类...

    API 帮助大全

    ApiHelp CHM格式 包含有如下内容: 1、WindowsR3函数部分收目前收集的API数量有800多个(有常用的,也有部分极少用到和未公开的) ...备注:用于GetMessage函数的消息 -----------------------------------------

    Windows API一日一练TXT版

    Windows API 一日一练(11)GetMessage 函数----------------------------------------------------24 Windows API 一日一练(12)TranslateAccelerator 函数-----------------------------------26 Windows API 一日...

    最全的WinAPI手册

    WINAPI,WinAPI手册,最全的WINAPI函数手册,WINAPI开发必备 目录 1 内容简介 14 前言 14 第一章 Win32 API概论 14 为什么使用 Wiu32 API 14 Win32 API 简介 15 第二章 窗口管理函数 16 第一节 易用特性函数...

    c语言贪吃蛇源码(带注释)

    while (GetMessage(&msg, NULL, 0, 0))//GetMessage函数从消息队列中得到消息,填充msg。如果msg.message等于WM_QUIT,返回0,否则返回非0 { TranslateMessage(&msg);//将msg返回给windows已进行某些键盘消息的...

Global site tag (gtag.js) - Google Analytics