昨天使用ImageFromIDResource加载PNG图片,UpdateClockDisplay刷新背景之后出现个问题,控件全部被覆盖了。
本来是好事,可以隐藏控件仍可点击按钮。但关系到一些需要实时回显的数据就不行了,如输入框和文本框等。
今天看了为大侠的帖子,解决办法是:创建两个窗口A跟B,A来显示背景,B就直接显示空间并且加上透明色使得界面全透明。
因为在家里,就根据自己的工程把步骤记录下来,以便不时之需。
是建立在昨天的博客帖子:即已经做好A窗口,可以加载PNG作为背景图片开始:
A窗口要保证stdafx.h里面具有以下两行
#include <gdiplus.h> //新加的 GDI+
using namespace Gdiplus;
1-在资源处添加资源新建一个对话框B,在对话框右键添加类,取名为OnWindow 确定之后便会多出一个OnWindow .h跟一个OnWindow .cpp文件
2-进入OnWindow .h文件,在public添加如下画刷,是用在一个信号上的。这个窗口基本不需要设置太多。
public:
CBrush m_brush; //背景画刷
CBitmapButton m_ok;
CBitmapButton m_cancel;
3-进去OnWindow .cpp文件在类向导中添加初始化虚函数 ::OnInitDialog()并且在里面添加如下代码:
BOOL COnWindow::OnInitDialog()
{
m_brush.CreateSolidBrush(RGB(255,0,255)); //背景设置为粉红色
//改为层级窗体:
//SetWindowsLong将窗体设置为层级窗体
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);