【转】Win32 Slider Control的用法
?
2.1?獲得控件的窗口句柄。
slider control也是一個窗口,是對話框的子窗口,因此,要用GetDlgItem來實現:
backlight_wnd = GetDlgItem(hDlg, IDC_SLIDER_BACKLIGHT); ?//注意下面示例中藍色標出的區別
2.2?設置slider control的區間,是給slider control發TBM_SETRANGE消息,比如我設置0到100就是:
SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(0,100));
2.3?設置滑塊的初始位置是發送TBM_SETPOS消息來實現的:
???SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,(LPARAM)BacklightPercentage);
2.4 slider control和用戶的交互,則是通過WM_HSCROLL消息來實現的,需要在WM_HSCROLL的響應函數里面發送TBM_GETPOS消息得到當前滑塊的位置:
BacklightPercentage = (unsigned char)SendMessage(backlight_wnd,TBM_GETPOS,0,0);
2.5?旁邊的一個當前刻度的數字的說明,需要先設定一個Static text文本控件,然后動態給該控件發送WM_SETTEXT消息來實現動態的更新數字:
SendMessage(GetDlgItem(hDlg, IDC_STATIC_BACKLIGHT_VALUE), WM_SETTEXT, 0, LPARAM(szBacklightPercentage));
最后面的那個參數,szBacklightPercentage是一個字符串。
?
?
?
INT_PTR WINAPI DlgProcTouMingSet(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {PAINTSTRUCT ps;HDC hdcAbout;int EscKeyID=1000;int ReturnID=1001;HWND backlight_wnd;switch (uMsg){case WM_INITDIALOG:{RegisterHotKey(hwnd,EscKeyID,0,VK_ESCAPE);RegisterHotKey(hwnd,ReturnID,0,VK_RETURN);backlight_wnd = GetDlgItem(hwnd,IDC_SLIDER_TouMing);//2.2 設置slider control的區間,是給slider control發TBM_SETRANGE消息,比如我設置0到100就是:SendMessage(backlight_wnd,TBM_SETRANGE, (WPARAM)1,(LPARAM)MAKELONG(15,255));int TouMingChuShi= GetPrivateProfileInt(_T("SkinChoose"),_T("TouMing"),150,defaultFullFullPath);SendMessage(backlight_wnd,TBM_SETPOS, (WPARAM)1,TouMingChuShi); //讀取初始透明度}break;case WM_HSCROLL:{int nScrollCode = (int) LOWORD(wParam); // scroll bar value //int nPos = (int) HIWORD(wParam); // scroll box position HWND hwndScrollBar = (HWND) lParam; // handle to scroll bar lParam一般表示窗口句柄 int nPos=200;nPos=SendMessage(hwndScrollBar,TBM_GETPOS,0,0); TCHAR TouMing[10];switch(nScrollCode){case SB_THUMBTRACK: //用戶拖動滾動框。此消息被重復發送,直到用戶釋放鼠標按鈕。{nPos=SendMessage(hwndScrollBar,TBM_GETPOS,0,0); _itow_s( nPos, TouMing, 10, 10);WritePrivateProfileString(_T("SkinChoose"),_T("TouMing"),TouMing,defaultFullFullPath);SetLayeredWindowAttributes(hwnd1,RGB(0,0,0), //表示與此顏色相同的顏色將會透明 nPos, //表示透明度0是全透明,255是全顯示LWA_ALPHA|LWA_COLORKEY //LWA_ALPHA|LWA_COLORKEY:這樣crKey的地方將變為全透明,而其它地方根據bAlpha參數確定透明度。); }break;case SB_ENDSCROLL:{nPos=SendMessage(hwndScrollBar,TBM_GETPOS,0,0);WritePrivateProfileString(_T("SkinChoose"),_T("Skin"),_T("1"),defaultFullFullPath);SetLayeredWindowAttributes(hwnd1,RGB(0,0,0), //表示與此顏色相同的顏色將會透明 nPos, //表示透明度0是全透明,255是全顯示LWA_ALPHA|LWA_COLORKEY //LWA_ALPHA|LWA_COLORKEY:這樣crKey的地方將變為全透明,而其它地方根據bAlpha參數確定透明度。); break;}}}break; case WM_HOTKEY:{switch (wParam){case 1000:{EndDialog(hwnd, LOWORD(wParam));UnregisterHotKey(hwnd,1000);}break;case 1001:{EndDialog(hwnd, LOWORD(wParam));UnregisterHotKey(hwnd,1001);}break;}}break;case WM_LBUTTONDOWN:{EndDialog(hwnd, LOWORD(wParam));return (INT_PTR)TRUE;}break;case WM_COMMAND:{UINT wmId = LOWORD(wParam);UINT wmEvent = HIWORD(wParam);switch (wmId){case IDOK: //獲取生日時間并賦值給全局變量case IDCANCEL:{EndDialog(hwnd, LOWORD(wParam));}return (INT_PTR)TRUE;}}}return (INT_PTR)FALSE; }?
?
?
轉載于:https://my.oschina.net/ypimgt/blog/81390
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的【转】Win32 Slider Control的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017交通银行信用卡违约金怎么算
- 下一篇: 长江养老安稳366收益怎么算?一年收益多