图片按钮 鼠标捕获 界面透明 滑块
一、图片按钮 1 类中定义变量CControlButton m_ctrlOK; 2 数据交换 DDX_Control(pDX, IDC_LOGIN, m_ctrlOK); 3 使用方法 GetDlgItem(IDC_LOGIN)->MoveWindow(1,100,80,40); m_ctrlOK.SetBitmapId(".\\admin\\登录1.bmp",".\\admin\\登录.bmp", ".\\admin\\登录2.bmp",".\\admin\\登录.bmp"); 二、 // 装入棒形光标 HINSTANCE hInstResource = AfxFindResourceHandle(MAKEINTRESOURCE(IDC_SIZEALL), RT_GROUP_CURSOR); ::SetCursor(m_hCursor); // 将光标改为棒形 三 设置鼠标捕获 SetCapture(); //鼠标捕获设置到指定的窗口。在鼠标按钮按下的时候,这个窗口会为 //当前应用程序或整个系统接收所有鼠标输入 //释放鼠标捕获 ReleaseCapture(); Dlg::OnMouseMove(UINT nFlags, CPoint point) { if (m_bTracking) { // 获取鼠标位置 ClientToScreen(&point); // 获取鼠标下面所在的窗口句柄 m_hCurrWnd = ::WindowFromPoint(point); HMODULE hUser32 = GetModuleHandle("user32"); if (!hUser32) return; SwitchToThisWindow = (PROCSWITCHTOTHISWINDOW) GetProcAddress(hUser32,"SwitchToThisWindow"); if (!SwitchToThisWindow) return; SwitchToThisWindow(m_hCurrWnd,TRUE); //切换鼠标下的窗口 // 显示该窗口的类、标题等信息… } CDialog::OnMouseMove(nFlags, point); //lbuttonUp 四 界面透明 //获取句柄 HMODULE hUser32 = GetModuleHandle(_T("USER32.DLL")); //获取函数地址 g_pSetLayeredWindowAttributes = (lpfn)GetProcAddress(hUser32, "SetLayeredWindowAttributes"); if (g_pSetLayeredWindowAttributes == NULL) AfxMessageBox ("Layering is not supported in this version of Windows", MB_ICONEXCLAMATION); //设置透明度 ::SetWindowLong(m_hCurrWnd, GWL_EXSTYLE, GetWindowLong(m_hCurrWnd, GWL_EXSTYLE) ^ /*WS_EX_LAYERED*/0x00080000); g_pSetLayeredWindowAttributes(m_hCurrWnd, 0, (BYTE)m_slider.GetPos(), /*LWA_ALPHA*/2); ::RedrawWindow(m_hCurrWnd, NULL, NULL,RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN); 五滑块使用 1、rc文件添加资源 CONTROL "Slider1",IDC_SLIDER1,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,16,16,110,15 #define IDC_SLIDER1 1000 2、定义变量 CSliderCtrl m_slider; 3、数据交换 DDX_Control(pDX, IDC_SLIDER1, m_slider); 4 使用 m_slider.GetPos()