由于本人記性不太好,晚上經常忘記關電腦,白白浪費了很多的電。在網上也找了一些定時關機的軟體,想到最近自己也在學習VC++,就想自己寫一個定時關機的小程式,正好也可以檢驗自己所學的東西。
程式源碼下載下傳位址:點選下載下傳
先來看看效果圖:
寫的比較簡陋,但是隻要能實作功能就好了。
寫Win32應用程式首先要有WinMain函數:
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
g_hInstance = hInstance;
DialogBox(hInstance, (LPCTSTR)IDD_MAIN, NULL, DlgProc);
return 0;
}
在WinMain中調用DailogBox()彈出一個對話框,下面就是對消息的處理。
INT_PTR CALLBACK DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int wmId;
switch(uMsg)
{
case WM_INITDIALOG:
g_hWnd = hWnd;
InitDialog();
break;
case WM_CLOSE:
Shell_NotifyIcon(NIM_DELETE, &g_nidTray);
EndDialog(hWnd, 0);
break;
case WM_TIMER:
ProcessTimer();
break;
case WM_SIZE:
if(wParam == SIZE_MINIMIZED)
{
ShowWindow(g_hWnd, SW_HIDE);
}
break;
case NW_SHELLNOTIFY:
switch(lParam)
{
case WM_LBUTTONDBLCLK:
ShowWindow(g_hWnd, SW_SHOWDEFAULT);
SetForegroundWindow(g_hWnd);
break;
case WM_RBUTTONUP:
{
POINT ptPosition;
GetCursorPos(&ptPosition);
SetForegroundWindow(g_hWnd);
TrackPopupMenu(GetSubMenu(g_hMenu, 0), TPM_LEFTALIGN | TPM_LEFTBUTTON, ptPosition.x, ptPosition.y, 0, g_hWnd, NULL);
}
break;
}
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
switch(wmId)
{
case IDBTN_SHUTDOWN:
DateTime_GetSystemtime(GetDlgItem(g_hWnd, IDDT_TIME), &g_stShutdown);
SetTimer(hWnd, ID_TIMER, 1000, NULL);
ChangeEnable(FALSE);
break;
case IDBTN_CANCEL:
KillTimer(hWnd, ID_TIMER);
UpdateRemainTime(NULL);
ChangeEnable(TRUE);
break;
case IDM_SHOW:
ShowWindow(g_hWnd, SW_SHOWDEFAULT);
SetForegroundWindow(g_hWnd);
break;
case IDM_EXIT:
SendMessage(g_hWnd, WM_CLOSE, 0, 0L);
break;
default:
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
break;
}
return 0;
}
主體部分就是上面的内容,想要完整的程式源碼可以去下載下傳。
程式源碼下載下傳位址:點選下載下傳