How to Create Static Controls
The example in this section demonstrates how to create an animated static control.
What you need to know
Technologies
Prerequisites
- C/C++
- Windows User Interface Programming
Instructions
Create a Static Control
The following code example uses a timer and the STM_SETICON message to animate a static icon control in a dialog box.
#define MAXICONS 3
#define HALF_SECOND 500
INT_PTR CALLBACK StaticDlgProc(HWND hDlg, UINT message, WPARAM wParam,
LPARAM lParam)
{
static HICON aIcons[MAXICONS];
static UINT i = 0;
static UINT idTimer = 1;
switch (message)
{
case WM_INITDIALOG:
// Load the icon resources. g_hInst is the global instance handle.
aIcons[i] = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON1));
aIcons[++i] = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON2));
aIcons[++i] = LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_ICON3));
// Reset the array index.
i = 0;
// Set a timer.
SetTimer(hDlg, idTimer, HALF_SECOND, (TIMERPROC) NULL);
return TRUE;
case WM_TIMER:
// Use STM_SETICON to associate a new icon with the static icon
// control whenever a WM_TIMER message is received.
SendDlgItemMessage(hDlg, IDC_STATIC_ICON, STM_SETICON,
(WPARAM) aIcons[i], 0);
// Reset the array index, if necessary.
if (++i == MAXICONS)
i = 0;
return 0;
case WM_COMMAND:
if (wParam == IDOK
|| wParam == IDCANCEL)
{
EndDialog(hDlg, TRUE);
}
return TRUE;
case WM_DESTROY:
KillTimer(hDlg, idTimer);
// Note that it is not necessary to call DestroyIcon here. LoadIcon
// obtains a shared icon, which is valid as long as the module from
// which it was loaded is in memory.
return 0;
}
return FALSE;
UNREFERENCED_PARAMETER(lParam);
}
Remarks
The identifier of the static icon control (IDI_STATIC_ICON) is defined in a global header file, and the icons are loaded from the application resources.
Related topics