`
daojin
  • 浏览: 697996 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于BeginPaint和WM_ERASEBKGND

MFC 
阅读更多

1。当操作系统意识到无效区域的时候,会向窗口发送WM_PAINT消息。必须调用Beginpaint(),BeginPaint用来为DC获得一个无效区域。以后的绘制只会在这无效区域里面绘制。

 

2。同时,如果是默认情况下,会发WM_ERASEBKGND消息,这样就会有重新刷新背景的机会。

MFC如果指定了Brush,默认的DefaultWinProc会擦除背景一次。要想只擦除一次背景,则必须在WM_ERASEBKGND直接返回FALSE,表示自己没有刷新背景。

 

3。如果使用InvalidatRect,那么就会产生无效区域,最后一个参数默认为false,也就是说只发送WM_Paint消息,为TRUE则在BEginPaint的时候,发送WM_ERASEBKGND消息。

分享到:
评论

相关推荐

    系统 WM_ 消息列表及说明

    当窗口需要重绘时发送,此时窗口过程应调用`BeginPaint`和`EndPaint`函数来绘制窗口内容。 #### WM_CLOSE (0x0010) 当用户尝试关闭窗口时发送,如点击窗口右上角的“×”按钮,程序有机会处理关闭前的清理工作。 #...

    改变树控件背景颜色的VC源代码

    4. **在OnPaint中绘制**:虽然`WM_ERASEBKGND`可以处理大部分情况,但在某些特殊情况下(如滚动或重绘),可能还需要在`OnPaint`消息处理函数中使用`BeginPaint`和`EndPaint`进行绘制。 以下是一个简单的示例代码,...

    vc++ 窗体透明

    当涉及到透明效果时,关键在于处理WM_PAINT和WM_ERASEBKGND消息。默认情况下,这两个消息会填充窗体背景并绘制边框,但为了实现透明,我们需要自定义这些处理过程。 1. **创建透明窗体**: 在创建窗体时,可以通过...

    win32环境下的按钮重绘

    处理此消息时,我们需要使用`BeginPaint`和`EndPaint`函数来获取和释放画笔和画刷,然后在`PAINTSTRUCT`结构的`hdc`设备上下文句柄上进行绘图。 3. **WM_ERASEBKGND消息**:在窗口背景需要清除时发送,我们可以在此...

    Windows_Gdi_应用-入门篇1

    在CStatusBarNew中,我们需要重写两个消息处理函数:WM_PAINT和WM_ERASEBKGND。WM_ERASEBKGND用于在背景被擦除时填充颜色,WM_PAINT则是用于实际的绘制操作。 在OnEraseBkgnd中,我们使用CRect获取状态栏的窗口矩形...

    原生的复选框(checkbox button)和单选按钮(radio button)实现透明背景效果解决方案

    在重写的OnPaint方法中,我们需要使用CPaintDC类来获取设备上下文(DC),然后调用BeginPaint和EndPaint函数。接着,我们可以使用CDC类的FillSolidRect方法填充透明颜色(通常是RGB(0, 0, 0, 0)即完全透明)。然后...

    求教关于视窗中滚动条 滚动后 擦除和重绘的问题

    开发者需要实现窗口过程函数,处理`WM_PAINT`消息,调用`BeginPaint`和`EndPaint`函数来创建一个画笔环境,并使用`FillRect`、`DrawText`等函数绘制新的内容。 **滚动条操作与擦除重绘的关系** 滚动条的操作会触发...

    vc绘制按钮

    3. **`WM_LBUTTONDOWN`和`WM_LBUTTONUP`**:分别对应鼠标左键按下和释放,我们可以在这两个消息中处理按钮的按下和弹起状态,改变按钮的外观以反馈用户操作。 在实现自定义按钮时,我们可能还需要考虑边框的绘制、...

    有背景图片的richedit

    6. **处理WM_ERASEBKGND消息**:通常,系统会发送`WM_ERASEBKGND`消息来擦除控件的背景。为了防止重复绘制背景图片,你需要在该消息处理函数中返回`TRUE`,表明背景已经被正确处理了。 7. **调整透明度**:如果需要...

    Windows Message ID 常量列表

    应用程序应该在此消息的处理程序中调用BeginPaint和EndPaint函数,并在其间实现绘图代码。 11. **WM_CLOSE (0x0010)**:当用户尝试关闭窗口时(例如,通过点击窗口右上角的“关闭”按钮),此消息被发送。应用程序...

    WIN32消息大全

    例如,对于`WM_PAINT`消息,窗口过程可能需要调用`BeginPaint`和`EndPaint`函数来重绘窗口。 #### 五、总结 理解Windows消息机制是开发Windows应用程序的基础。通过处理不同种类的消息,我们可以使应用程序对用户的...

    VC++中的所有WM消息.doc

    - **处理方式**: 在窗口过程函数中处理此消息时,可以通过调用`BeginPaint`和`EndPaint`函数来控制绘制过程。 #### WM_CLOSE (0x0010) - **定义**: 当窗口或应用程序将要关闭时发送的消息。 - **参数**: - `wParam...

    GDIPlus例子,透明窗口

    procedure WM_ERASEBKGND(var Message: TWMEraseBkgnd); message WM_ERASEBKGND; procedure WM_PAINT(var Message: TMessage); message WM_PAINT; public property TransparentColor: TColor read ...

    用 Win API 实现自绘按钮类

    自绘按钮的核心就在于响应这个消息,用`BeginPaint`和`EndPaint`函数获取和释放画图环境,然后使用GDI(Graphics Device Interface)函数如`FillRect`、`DrawText`等进行绘制。 3. **DC(Device Context)**:设备...

    MFC函数的用法&&MFC函数的用法

    它还可能发送WM_ERASEBKGND消息来擦除背景。BeginPaint与EndPaint成对使用,每次BeginPaint后都需要调用EndPaint来结束绘画请求并释放资源。 举例来说,当处理WM_PAINT消息时,我们可以使用BeginPaint获取一个用于...

    PNG透明窗体全攻略(控件不透明)可实现不规则窗体.

    这通常涉及处理控件的消息,如WM_PAINT和WM_ERASEBKGND,然后使用GDI+或GDI来绘制控件。 ```cpp case WM_ERASEBKGND: return TRUE; // 阻止父窗口的背景清除 case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = ...

    SDK 自绘窗体 标题栏

    这通常需要重写窗口过程(WndProc)消息处理函数,以便拦截和处理WM_PAINT消息,以及可能的其他与绘图相关的消息,如WM_ERASEBKGND和WM_NCPAINT。开发者需要对Windows消息机制有深入理解,并掌握GDI函数,如...

    半透明窗体

    在处理WM_ERASEBKGND消息时返回TRUE,防止系统默认的背景清除操作,以免影响透明效果: ```cpp case WM_ERASEBKGND: return TRUE; ``` 通过这些步骤,你就可以在VC++中创建一个能够调整透明度的半透明窗体了。...

    c++实现半透明风格

    此外,为了使窗口的更新更流畅,你可能还需要处理`WM_ERASEBKGND`消息,返回`TRUE`以防止系统默认的背景擦除,这样可以提高性能: ```cpp case WM_ERASEBKGND: return TRUE; ``` 最后,别忘了在程序结束时释放GDI...

    MFC背景和字体的不断刷新

    这可以通过使用CDC类的BeginPaint和EndPaint函数来限定绘制区域,以及使用PAINTSTRUCT结构获取需要更新的矩形。 4. 利用RedrawWindow:当仅需更新特定区域时,使用CWnd::RedrawWindow函数并指定更新的矩形,这样...

Global site tag (gtag.js) - Google Analytics