我想将一个对话框设置成透明的 且可以调节透明度
在程序中用SetLayeredWindowAttributes() 用一个CSlider 来控制其透明度
可是当我滑动滑块时 有时他会根据实际透明度值来调节 但有时 却变得完全不透明
设置透明的函数void CzzszDlg::SetTouMing(void)
{
#define WS_EX_LAYERED 0x00080000
COLORREF maskColor=RGB(0,0,0);
CString fileName=this->m_strCur+_T("\\shezhi.ini");
int pos=::GetPrivateProfileIntW(_T("常规"),_T("透明度"),0,fileName);
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE^WS_EX_LAYERED);
//调用SetLayeredWinowAttributes函数
pos=255-255*pos/100;
SetLayeredWindowAttributes(maskColor,pos,2);
}
在程序中用SetLayeredWindowAttributes() 用一个CSlider 来控制其透明度
可是当我滑动滑块时 有时他会根据实际透明度值来调节 但有时 却变得完全不透明
设置透明的函数void CzzszDlg::SetTouMing(void)
{
#define WS_EX_LAYERED 0x00080000
COLORREF maskColor=RGB(0,0,0);
CString fileName=this->m_strCur+_T("\\shezhi.ini");
int pos=::GetPrivateProfileIntW(_T("常规"),_T("透明度"),0,fileName);
SetWindowLong(this->GetSafeHwnd(), GWL_EXSTYLE, GetWindowLong(GetSafeHwnd(), GWL_EXSTYLE^WS_EX_LAYERED);
//调用SetLayeredWinowAttributes函数
pos=255-255*pos/100;
SetLayeredWindowAttributes(maskColor,pos,2);
}
解决方案 »
- 请教各位高手这个问题如何解决?error LNK2001: unresolved external symbol "long __stdcall WinSunP
- 用MFC写的对话框程序怎么在程序运行时先出现一个界面,再最小化到托盘?
- 有华为西安研究所的朋友吗?进来聊聊,顺便散分
- vc, 我create出来的状态栏,我想在主窗口非最大化时,不要状态栏上最右边显示的那个可以拖动大小的小三角?如何实现
- 请问:这样写法会有内存泄漏吗?
- Win98下如何捕获到左shift和右shift按键消息?
- 怎么将对话框Dialog显示在窗口最顶层,而不管有没有焦点?
- 控件中的方法调用对话框出了问题?在线等待。
- 类里面的的指针变量在进行比较运算时如何表达出来?
- 重金征集:关于IE编程的问题:怎样在IE工具栏上加入自己的工具
- WideCharToMultiByte到底怎么使用啊
- 模态对话框的IPADDRESS控件怎么初始化
void CWaiGuanDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CWnd* pClider=this->GetDlgItem(IDC_TOUMINGDU);
if(pClider==pScrollBar)
{
CString strFileName=m_pDlg->m_strCur+_T("\\shezhi.ini");
int pos=this->m_CtrTouMingDu.GetPos();
CString tem;
tem.Format(_T("%d%%"),pos);
GetDlgItem(IDC_STATIC2)->SetWindowTextW(tem); tem.Format(_T("%d"),pos);
::WritePrivateProfileStringW(_T("常规"),_T("透明度"),tem,strFileName); m_pDlg->SetTouMing(); } CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
HINSTANCE hInst = LoadLibrary("User32.DLL");
if (hInst)
{
typedef BOOL (WINAPI * MYFUNC)(HWND,COLORREF,BYTE,DWORD);
MYFUNC fun = NULL; fun = (MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");
if (fun)
fun(this->GetSafeHwnd(),0,128,2);
FreeLibrary(hInst);
}其中fun(this->GetSafeHwnd(),0,128,2);修改窗口的透明度,值越接近255越不透明。
程序每次启动时是按正确的值设置的
但是当滑动滑块时 他有时是按正确的值设置透明度 但有时是完全不透明的 不确定
我不知道这是怎么回事
m_pDlg->SetTouMing();但是在滑动滑块的过程中 透明度不是连续变化的 一闪一闪的,松开时就正常了…
很郁闷