#include <Windows.h>#include <windowsx.h>#include <CommCtrl.h>#include "resource.h"#ifdef _UNICODE#if defined _M_IX86#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")#elif defined _M_X64#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")#else#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")#endif#endif// 对话框的回调函数,消息处理了返回 TRUE,没有处理返回 FALSEINT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam){ switch (uMsg) { // 当用户点击了关闭按钮时产生的消息,对话框要求必须使用 EndDialog 退出 case WM_CLOSE: { EndDialog(hDlg, 0); break; } // 对话框的初始化消息是 WM_INITDIALOG,常用于进行控件的初始化 case WM_INITDIALOG: { // 1. 获取进度条控件和滑块控件的句柄 HWND hSlider = GetDlgItem(hDlg, IDC_SLIDER1); HWND hProgress = GetDlgItem(hDlg, IDC_PROGRESS1); // 2. 设置两个控件的数值表示范围 SendMessage(hSlider, TBM_SETRANGE, TRUE, MAKELPARAM(0, 1000)); SendMessage(hProgress, PBM_SETRANGE, 0, MAKELPARAM(0, 1000)); // 3. 设置两个控件默认的位置 SendMessage(hSlider, TBM_SETPOS, TRUE, 50); SendMessage(hProgress, PBM_SETPOS, 50, 0); break; } //滑块控件响应的是滚动条消息,分为 WM_HCROLL \ WM_VSCROLL case WM_HSCROLL: { HWND hSlider = (HWND)lParam; // 通过发送消息的形式,知道滑块的位置 int nPos = SendMessage(hSlider, TBM_GETPOS, 0, 0); // 将新的位置设置到进度条上 SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, nPos, 0); break; } default: { return FALSE; } } return TRUE;}int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){ // 1. 是实例的句柄,用于标识资源所在的位置 // 2. 资源的ID,大多数时候会使用 MAKEINTRESOUERCE 进行转换 // 3. 对话框的父窗口,NULL 表示桌面 // 4. 回调函数,用于响应对话框产生的所有消息 DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc); return 0;}
