MFC 对话框程序控件局部刷新方法!

MFC 对话框程序控件局部刷新方法!

初学mfc编程的小伙伴通常会遇到控件透明制作,小白就来讲一下“基于对话框程序控件透明”的方法:

1、打开类向导(ClassWizard),VC6.0快捷键Ctrl + W, VS2010快捷键Ctrl + Shift + X。

2、重载OnCtlColor,添加如下函数:

if (nCtlColor == CTLCOLOR_STATIC) {

CRect rc; pWnd->GetWindowRect(&rc); ScreenToClient(&rc); CDC* dc = GetDC(); pDC->BitBlt(0, 0, rc.Width(), rc.Height(), dc, rc.left, rc.top, SRCCOPY); //把父窗口背景图片先画到按钮上 ReleaseDC(dc); pDC->SetTextColor(RGB(255, 255, 255));//设置字体颜色 pDC->SetBkMode(TRANSPARENT);//设置透明控件 hbr = (HBRUSH) ::GetStockObject(NULL_BRUSH); }

return hbr;

至此,Static控件已经实现透明效果了!

2.在透明的static上改变文字显示时会出现文字重叠现象,需调用函数 Invalidate(true); 即可,但这样是对所有的控件进行刷新,会造成屏幕闪烁现象,最好的办法就是对控件进行局部刷新,这样就可以保证只刷新单一控件,解决不断闪屏的问题:

二、 局部刷新透明控件:

我们需要自己定义一个函数,再 xxxxDlg.h中的 public:下添加自定义函数

void RefreshIndividualControl(UINT uCtlID);

在xxxxDlg.cpp中实现函数:

相关创意

2025有趣的宝宝益智小游戏有哪些 有意思的宝宝游戏大全
宜信贷款公司靠谱吗?贷款产品优势解析+避坑指南
365bet平台总代

宜信贷款公司靠谱吗?贷款产品优势解析+避坑指南

📅 10-28 👁️ 7565
阿里外包背后的现实与挑战
beat365手机中文官方网站

阿里外包背后的现实与挑战

📅 08-05 👁️ 3795
有能!日本最新世界排名第16,创森保一执教期间最高世界排名
[高清组图]德国拍摄官方照 穆勒振臂怒吼
365bet平台总代

[高清组图]德国拍摄官方照 穆勒振臂怒吼

📅 09-03 👁️ 2805
欢乐颂3剧情介绍
beat365手机中文官方网站

欢乐颂3剧情介绍

📅 07-18 👁️ 7236
LOL孤胆英豪嘉文四世皮肤展示
365bet平台总代

LOL孤胆英豪嘉文四世皮肤展示

📅 07-25 👁️ 6461
房祖名为什么姓房,带你揭秘其背后的真实原因
365bet平台总代

房祖名为什么姓房,带你揭秘其背后的真实原因

📅 08-06 👁️ 4353