首页 > 其他分享 >MFC对话框显示时背景闪烁

MFC对话框显示时背景闪烁

时间:2023-12-10 19:33:23浏览次数:35  
标签:MFC 对话框 WM pWnd tcolor hbr 闪烁 nCtlColor

在显示一个对话框时,可以在WM_PAINT消息处理函数中绘制窗口的背景色。但会出现一种情况,在还未执行完OnPaint函数,对话框已经先显示出白色窗体,如下:

还未绘制窗体,背景色先被显示。

解决办法:

1、添加WM_CTLCOLOR消息。

2、在消息响应函数中添加如下代码:

 1 HBRUSH CZGDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
 2 {
 3     HBRUSH hbr = __super::OnCtlColor(pDC, pWnd, nCtlColor);
 4     if (nCtlColor == CTLCOLOR_DLG)
 5     {
 6         COLORREF tcolor = RGB(39, 147, 255);
 7         hbr = CreateSolidBrush(tcolor);
 8     }
 9     return hbr;
10 }

效果如下:

 

标签:MFC,对话框,WM,pWnd,tcolor,hbr,闪烁,nCtlColor
From: https://www.cnblogs.com/BroccoliFighter/p/17893090.html

相关文章

  • 无涯教程-MFC - 控件管理
    在MFC应用程序中,以可视方式将控件添加到应用程序后,如果要在代码中引用它,则可以基于该控件或与该控件关联来声明变量。MFC库允许您为应用程序中使用的某些控件声明值或控件变量的两种类型的变量。一个变量用于存储在控件中的信息,也称为ControlVariable/Instance.另一个变量称......
  • MFC窗口闪烁问题
    本文引自:《VC窗口闪烁问题的解决》概述一般的windows复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小时候出现闪烁。闪烁产生的原因原因一:如果熟悉显卡原理的话,调用GDI函数向屏幕输出的时候并不是立刻就显示在屏幕上,而是写到了显存里,显卡......
  • 无涯教程-MFC - 对话框
    在本章中,无涯教程将介绍对话框(Dialog),Windows应用程序经常通过对话框与用户通信,CDialog类提供了用于管理对话框的界面,VisualC++对话框编辑器使设计对话框和创建其对话框模板资源变得容易。创建对话3对象是两阶段操作-构造对话框对象。创建对话框窗口。通过创建一个新的W......
  • 无涯教程-MFC - 环境设置
    MicrosoftVisualC++是用于为MicrosoftWindows操作系统创建应用程序的编程环境。要在C++应用程序中使用MFC框架,必须已安装MicrosoftVisualC++或MicrosoftVisualStudio,MicrosoftVisualStudio还包含MicrosoftVisualC++环境。Microsoft提供了VisualStudio的免费版......
  • 无涯教程-MFC - VC++项目
    VisualStudio包括几种VisualC++项目模板,这些模板有助于创建基本程序结构,菜单,工具栏,图标,并包含适合您要创建的项目类型的语句。在MFC中,您可以使用以下项目模板。Sr.No.Remark1MFCApplicationMFC应用程序是基于Microsoft基础类(MFC)库的Windows可执行应用程序,创建MF......
  • 无涯教程-MFC - 简介
    微软基础类库(英语:MicrosoftFoundationClasses,简称MFC)是一个微软公司提供的类库(classlibraries),以C++类的形式封装了WindowsAPI,并且包含一个(也是微软产品的唯一一个)应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件......
  • MFC CStatic 里面加载图片
    ▲效果头文件新增空间指针:private:CStatic*pBMP;BOOLCMFCApplicationBMPDlg::OnInitDialog()里面初始化://TODO:在此添加额外的初始化代码//初始化字段pBMP=(CStatic*)GetDlgItem(IDC_STATIC_BMP);//除了添加控件,还有这种方式获得控件的方式。pBMP->Mod......
  • MFC CListVtrl 控件简单测试
    ▲样式Demo关联控件变量m_CList,在属性中将视图(View)设置成Report(报表)模式。在BOOLCMFCApplication4LlisBoxDlg::OnInitDialog()初始化函数中添加测试代码://TODO:在此添加额外的初始化代码//m_CList.SetView(1);//视图View要改成Report报表模式//设置风格样......
  • Angular 应用里异步打开对话框的技术实现
    constdialog=this.launchDialogService.openDialog();dialog.pipe(take(1)).subscribe();这段代码涉及到Angular中处理对话框(Dialog)的逻辑,其中openDialog方法返回一个Observable对象。我们将分两部分来详细解释这段代码。1.openDialog方法首先,我们来讨论openDial......
  • [MFC]如何将数据保存为CSV格式
    BOOLWriteCsv(CStringstrText){CStringstrPath;strPath.Format(_T("D:\\CSV"));if(!CFileSystemHelper::IsDirectoryExist(strPath))//判断目录存不存在{CFileSystemHelper::CreateDirectory(strPath);//可创建递归目录}CString......