效果
新建对话框程序
修改对话框
WindowAlphaSettingDlg.h : 头文件
public: CSliderCtrl m_sld; afx_msg void OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult);
WindowAlphaSettingDlg.cpp : 实现文件
BOOL CWindowAlphaSettingDlg::OnInitDialog()
//窗口置顶 ::SetWindowPos(m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE); //控件范围 m_sld.SetRange(10,255); m_sld.SetPos(128); //窗口样式 SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000); HINSTANCE hInst = LoadLibrary("User32.DLL"); if (hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; //取得SetLayeredWindowAttributes函数指针 fun = (MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); if(fun) fun(this->GetSafeHwnd(),0,128,2); FreeLibrary(hInst); }
void CWindowAlphaSettingDlg::OnNMReleasedcaptureSlider1(NMHDR *pNMHDR, LRESULT *pResult) { // TODO: 在此添加控件通知处理程序代码 BYTE eff = (BYTE)m_sld.GetPos(); HINSTANCE hInst = LoadLibrary("User32.DLL"); if (hInst) { typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD); MYFUNC fun = NULL; //取得SetLayeredWindowAttributes函数指针 fun = (MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes"); if(fun) fun(this->GetSafeHwnd(),0,eff,2); FreeLibrary(hInst); } CString str; str.Format("%d%%",100*eff/255); GetDlgItem(IDC_STATIC1)->SetWindowText(str); *pResult = 0; }