以下示例使用定时器和STM_SETIMAGE消息在对话框中为图标设置动画。图标处理和图标标识符(IDI_ICON)在全局头文件中定义。
LRESULT APIENTRY StaticProc(hDlg,message,wParam,lParam)
HWND hDlg; /* window handle of dialog box */
UINT message; /* type of message */
UINT wParam; /* message-specific information */
LONG lParam;
{
UINT idTimer = 1;
static UINT i;
static HICON aIcons[11];
switch(message){
case WM_INITDIALOG: /* initialize dialog box */
i = 0;
/ *加载图标(“hinst”全局定义)。*/
hiconOne = LoadIcon(hinst, "OneIco");
aIcons[i] = hiconOne;
hiconTwo = LoadIcon(hinst, "TwoIco");
aIcons[++i] = hiconTwo;
.
./ *继续剩下的图标。*/
.
i = 0;
/*
*使用STM_SETIMAGE将图标与
* IDI_ICON识别。
*/
SendDlgItemMessage(hDlg,/ *对话框窗口句柄* /
IDI_ICON,/ *图标标识符* /
STM_SETIMAGE,/ *短信发送* /
(WPARAM)IMAGE_ICON,/ *图像类型* /
(LPARAM) aIcons[i++]); /* icon handle */
/ *设置定时器为50毫秒的间隔。*/
SetTimer(hDlg, idTimer, 50, (TIMERPROC) NULL);
return TRUE;
case WM_TIMER:
/*
*使用STM_SETIMAGE将新图标关联
*每当WM_TIMER时,IDI_ICON标识符
*消息被接收。
*/
SendDlgItemMessage(hDlg,/ *对话框窗口句柄* /
IDI_ICON,/ *图标标识符* /
STM_SETIMAGE,/ *短信发送* /
(WPARAM)IMAGE_ICON,/ *图像类型* /
(LPARAM) aIcons[i++]); /* new icon handle */
if (i == 10)
i = 0;
break;
case WM_COMMAND:
if (wParam == IDOK
|| wParam == IDCANCEL) {
EndDialog(hDlg, TRUE);
return TRUE;
}
return 0;
case WM_DESTROY: /* clean up */
KillTimer(hDlg, idTimer);
DeleteObject(hiconOne);
DeleteObject(hiconTwo);
.
./ *继续剩下的图标。*/
.
return 0;
}
return FALSE;
UNREFERENCED_PARAMETER(lParam);
}