1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "resource.h"
HINSTANCE hInst = NULL;
UINT_PTR timerId = 0;
int helloIdx = 0;
const UINT_PTR timerStartId = 1000;
const UINT timerElapseTime = 100; // milliseconds
// TODO Rework this to be more elegant!
void sayHello(HWND hwndDlg)
{
HWND handle = GetDlgItem(hwndDlg, ID_CONTROLSTATIC);
switch(helloIdx % 5)
{
case 0: SetWindowText(handle, "Hello1"); break;
case 1: SetWindowText(handle, "Hello2"); break;
case 2: SetWindowText(handle, "Hello3"); break;
case 3: SetWindowText(handle, "Hello4"); break;
case 4: SetWindowText(handle, "Hello5"); break;
default: SetWindowText(handle, "??????"); // should never reach here
}
++helloIdx;
}
INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch(uMsg)
{
case WM_INITDIALOG:
return TRUE;
case WM_DESTROY:
PostQuitMessage(0);
return TRUE;
case WM_CLOSE:
if(0 != timerId)
{
KillTimer(hwndDlg, timerId);
timerId = 0;
}
DestroyWindow(hwndDlg);
return TRUE;
case WM_TIMER:
sayHello(hwndDlg);
return TRUE;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDC_BTN_QUIT:
DestroyWindow(hwndDlg);
return TRUE;
case IDC_BTN_TEST:
if(0 == timerId)
{
timerId = SetTimer(hwndDlg, timerStartId, timerElapseTime, NULL);
}
else
{
KillTimer(hwndDlg, timerId);
timerId = 0;
}
return TRUE;
}
}
return FALSE;
}
// This is the latest approved signature, see:
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms633559%28v=vs.85%29.aspx
int CALLBACK WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
{
hInst = hInstance;
HWND hWnd = CreateDialog( hInstance,
MAKEINTRESOURCE(DLG_MAIN),
NULL,
DialogProc );
MSG msg = {0};
while(GetMessage(&msg, NULL, 0, 0))
{
if(!IsDialogMessage(hWnd, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
}
|