정적 컨트롤을 만드는 방법
이 섹션의 예제에서는 애니메이션 정적 컨트롤을 만드는 방법을 보여 줍니다.
알아야 하는 작업
기술
필수 구성 요소
- C/C++
- Windows 사용자 인터페이스 프로그래밍
지침
정적 컨트롤 만들기
다음 코드 예제에서는 타이머 및 STM_SETICON 메시지를 사용하여 대화 상자에서 정적 아이콘 컨트롤에 애니메이션 효과를 줍니다.
#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);
}
설명
정적 아이콘 컨트롤(IDI_STATIC_ICON)의 식별자는 전역 헤더 파일에 정의되며 아이콘은 애플리케이션 리소스에서 로드됩니다.
관련 항목