摘要:while (TRUE) { Sleep(50); if (PeekMessage(&msg, progress->m_hWnd, 0, 0, PM_REMOVE) != 0) { if (msg.message == WM_QUIT) break ; TranslateMessage (&msg) ; DispatchMessage (&msg) ; } else{ //break; } }你可以在任何窗口内放置这么一个循环, 于是你会发现很多东西.1. MFC主线程有1个总消息循环, 所有窗口消息经由总循环分发到窗口做处理.2. 消息如何分发,,看情况了, 有
阅读全文
摘要:计算用户区 大小和位置framework 调用这个函数, 在client area的size 和position 需要被计算时。注释:处理这个消息, 应用程序 可以控制 客户区的内容 当size 或 position改变时。huluebCalcValidRects, 第2个参数包含 窗口位置信息, 如果是子控件:则是相对父亲窗口的。如果是顶层窗口:位置是相对整个屏幕的。应用程序需要 设置 rgrc[0]的矩形,来决定client的新位置。rgrc[1]和rgrc[2]只有在第一个参数是true时有效。 分别记录改变前 windows的位置, client的位置。
阅读全文
摘要:1. 别忘记Invalidate() 使窗口无效。
阅读全文
摘要:1.尝试在 各种消息可是 进行画面更新, 看有没有改善。例如: 树控件 竟然在 TVN_ITEMEXPANDING时更新 会改善画面更新速度。2.围绕相关 内容进行试验。 比如展开时慢, 那就在展开时的各个消息进行更新。 下手要直接。
阅读全文
摘要:孩子窗口是 具有WS_CHILD或WS_CHILDWINDOW类型的窗口。想其他窗口一样, 孩子窗口通过接收WM_PAINT消息,重新绘制窗口。每个孩子窗口都有一个更新区域, 可能是整个系统 或 特定区域。孩子窗口的 更新和可见区域 受父窗口影响。 而其他窗口不具备这样的属性。 系统经常设置还子窗口的更新区域 当设置了父窗口更新区域的时候, 当父亲窗口接收到WM_PAINT的时候,同样会使孩子窗口接收到WM_PAINT.系统限制孩子窗口的可见区域为 在父亲窗口内的部分, 而在父亲窗口外的部分则被剪切掉了(不显示)。1种更新情况系统设置孩子的区域进行更新,在任何父亲要更新的区域涵盖孩子部分区域的
阅读全文
摘要:WM_PAINT发送的时机:1.当系统和另一个应用程序请求 重画应用程序一部分的时候2.当UpdateWindow和RedrawWindow使用时3.通过DispatchMessage转送时Return Value如果程序处理了这个消息, 那么应该返回0。RemarksWM_PAINT消息由系统产生, 而不能由应用程序SendMessage!!强迫一个窗口绘制 一个dc, 要使用WM_PRINT, WM_PRINTCLIENT消息。注意:这需要目标窗口支持WM_PRINTCLIENT消息。 多数控件支持WM_PRINTCLIENT消息。DefWindowProc使得更新区域无效。 如果你要重绘
阅读全文
摘要:设置滚动条状态信息当一个窗口的滚动条被操作时,发往该窗口。ParameterswParamHIWORD 在SB_THUMBPOSITION or SB_THUMBTRACK时,记录位置LOWORD记录是因为什么发送的消息lParamscrollbar 的 hwnd
阅读全文
摘要:typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt;} MSG, *PMSG, *LPMSG;About Messages and Message Queues不是程序主动调用, 而是等待系统传入参数唤醒。顶层窗口不响应时, 系统隐藏窗口并且用一个ghost window替换它?Windows Messages系统和窗口处理函数,通过message交流。系统和应用程序都产生消息。一个应用程序 可以直接发送消息 给他自己的窗口 去执行。或者和在其他应
阅读全文