C语言实现工资上缴

程序下载地址:https://pan.baidu.com/s/1nG4Q4FVuRyriiB2jEK2RZQ(提取码:ea86)

C语言实现工资上缴_第1张图片

C语言实现工资上缴_第2张图片

C语言实现工资上缴_第3张图片

【程序代码】

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;
}

 

你可能感兴趣的:(Win32)