MFC DLL 窗口背景透明和字体颜色问题

写了一个MFCDLL,加载了一个dialog资源窗口背景透明的代码:在OnInilit窗口初始化里面添加为何窗口背景透明了连上面的控件也透明了。。。。怎么解决啊。SetW... 写了一个MFC DLL ,加载了一个dialog 资源

窗口背景透明的代码: 在OnInilit窗口初始化里面添加
为何窗口背景透明了 连上面的控件也透明了。。。。怎么解决啊。
SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);
SetLayeredWindowAttributes(0,100,LWA_ALPHA);

颜色也没法改变,这是CStatic 控件字体颜色
外部代码传递参数给我们改变颜色,RGB(255,0,0) 传递进来后还是黑色的,没变成红色
BOOL CDlg_ScreenPrint::ScreenPrint_Set_Color(COLORREF dwColorRef)
{
m_ColorRef = dwColorRef;
return TRUE;
}
消息处理代码
HBRUSH CDlg_ScreenPrint::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: 在此更改 DC 的任何特性
if (pWnd->GetDlgCtrlID() == IDC_STATIC_SCREEN_PRINT) //是一个静态控件ID是这个,只改变这个控件的字体颜色
{
pDC->SetTextColor(m_ColorRef);
}

// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}

加载方式:
extern "C" __declspec(dllexport) void __stdcall IIMC_ScreenPrint_Init()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
m_ScreenPrint.Create(IDD_DIALOG1);
}
展开
 我来答
归悦欣cf
2014-04-23 · TA获得超过1444个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1336万
展开全部
连控件也透明要解决的话需要指定关键色透明方式。传进字体颜色不变是因为传进之后需要更新对话框界面才有效。
追问
能否指导下,我UPDATAWINDOW 没效果。。。怎么解决控件透明这个问题?
追答
使对话框无效后字体原色就会有有效果,把对话框背景色设为某一颜色,然后使这种原色透明(通过设置关键色,关键色就是希望透明的颜色),主要透明的颜色不能等于控件或文字的颜色。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式