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);
} 展开
窗口背景透明的代码: 在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);
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询