程序下载地址:https://pan.baidu.com/s/1nG4Q4FVuRyriiB2jEK2RZQ(提取码:ea86)
【程序代码】
main.c:
#define COBJMACROS
#include
#include
#include
#include
#include "resource.h"
// 必须启用XP风格
// 否则窗口显示后需要等待几秒钟动画才开始播放
#pragma comment(lib, "comctl32.lib")
#pragma comment(linker,"\"/manifestdependency:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
const int nPos[] = {25, 50, 75, 90, 100};
const int nMoney[] = {1500, 1000, 500, 200, 0};
int nStep = 0;
BOOL bPaused = FALSE;
HINSTANCE hinstMain;
HWND hwndAnimate;
ITaskbarList3 *pTaskbar; // Win7任务栏进度条
void taskbar_progress_init(void)
{
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
CoCreateInstance(&CLSID_TaskbarList, NULL, CLSCTX_INPROC_SERVER, &IID_ITaskbarList3, &pTaskbar);
if (pTaskbar != NULL)
ITaskbarList3_HrInit(pTaskbar);
}
void taskbar_progress_deinit(void)
{
if (pTaskbar != NULL)
{
ITaskbarList3_Release(pTaskbar);
pTaskbar = NULL;
}
CoUninitialize();
}
void CALLBACK TimerProc(HWND hDlg, UINT uMsg, UINT iTimerID, DWORD dwTime)
{
TCHAR str[20];
if (bPaused)
return;
_sntprintf_s(str, _countof(str), _countof(str), TEXT("剩余%d块"), nMoney[nStep]);
SetDlgItemText(hDlg, IDC_TEXT2, str);
SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, nPos[nStep], 0);
if (pTaskbar != NULL)
ITaskbarList3_SetProgressValue(pTaskbar, hDlg, nPos[nStep], 100);
if (nStep == 3)
{
bPaused = TRUE;
if (MessageBox(hDlg, TEXT("确定要上缴所有钱钱, 不留零花钱吗?"), TEXT("工资上缴"), MB_ICONQUESTION | MB_YESNO) == IDYES)
{
nStep = 4;
bPaused = FALSE;
}
else
EndDialog(hDlg, IDNO);
}
else if (nStep == 4)
{
SetDlgItemText(hDlg, IDC_TEXT1, TEXT("上缴完毕! 你是世上最诚实的男人!"));
SetDlgItemText(hDlg, IDCANCEL, TEXT("完成"));
KillTimer(hDlg, IDT_TIMER1);
}
else
nStep++;
}
INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int wmId;
HICON hIcon;
switch (uMsg)
{
case WM_COMMAND:
/* 响应窗口命令 */
wmId = LOWORD(wParam);
switch (wmId)
{
case IDOK:
case IDCANCEL:
KillTimer(hDlg, IDT_TIMER1);
EndDialog(hDlg, wmId);
break;
}
break;
case WM_INITDIALOG:
/* 初始化窗口 */
// 设置窗口图标
hIcon = (HICON)LoadImage(hinstMain, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, GetSystemMetrics(SM_CXICON), GetSystemMetrics(SM_CYICON), LR_DEFAULTCOLOR);
SendMessage(hDlg, WM_SETICON, ICON_BIG, (LPARAM)hIcon);
hIcon = (HICON)LoadImage(hinstMain, MAKEINTRESOURCE(IDI_ICON1), IMAGE_ICON, GetSystemMetrics(SM_CXSMICON), GetSystemMetrics(SM_CYSMICON), LR_DEFAULTCOLOR);
SendMessage(hDlg, WM_SETICON, ICON_SMALL, (LPARAM)hIcon);
// 初始化进度条
SendDlgItemMessage(hDlg, IDC_PROGRESS1, PBM_SETPOS, 4, 0);
if (pTaskbar != NULL)
{
ITaskbarList3_SetProgressState(pTaskbar, hDlg, TBPF_NORMAL);
ITaskbarList3_SetProgressValue(pTaskbar, hDlg, 4, 100);
}
// 初始化动画
hwndAnimate = GetDlgItem(hDlg, IDC_ANIMATE1);
Animate_Open(hwndAnimate, MAKEINTRESOURCE(IDR_AVI1));
SetTimer(hDlg, IDT_TIMER1, 1000, TimerProc);
break;
}
return FALSE;
}
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
hinstMain = hInstance;
InitCommonControls();
taskbar_progress_init();
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DlgProc);
taskbar_progress_deinit();
return 0;
}