리소스의 마지막으로 String Table에 대해서 살펴보자.
string table의 모습,
바뀐 소스의 모습만 삽입 하도록 하겠다.
LRESULT CALLBACK WndProc( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
// string table을 사용하기 위한 str
TCHAR str[256];
switch( iMessage )
{
// 메뉴에 대한 행동들을 관리하는 WM_COMMAND:
case WM_COMMAND:
// wParam의 LOWORD는 메뉴의 ID를 가지고 있다.
switch( LOWORD( wParam ) )
{
// FILE->OPEN을 선택했으면,
case ID_FILE_OPEN40001:
// string Table을 사용하여 출력하였다.
LoadString( g_hInst, IDS_STRING106, str, 256 );
MessageBox( hWnd, TEXT("FILE OPEN"), str, MB_OK );
break;
case ID_FILE_CLOSE40002: // close면
LoadString( g_hInst, IDS_STRING106, str, 256 );
MessageBox( hWnd, TEXT("FILE CLOSE"), str, MB_OK );
break;
case ID_FILE_EXIT: // exit면
DestroyWindow( hWnd ); // exit를 해주게 되면,
// DestroyWindow를 함으로써 윈도우 종료를 하게 된다.
// PostQuitMessage(0); 를 직접적으로 사용해서는 안된다.
break;
case ID_EDIT_EDIT1:
LoadString( g_hInst, IDS_STRING107, str, 256 );
MessageBox( hWnd, TEXT("EDIT1"), str, MB_OK );
break;
case ID_EDIT_EDIT2:
LoadString( g_hInst, IDS_STRING107, str, 256 );
MessageBox( hWnd, TEXT("EDIT2"), str, MB_OK );
break;
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return( DefWindowProc( hWnd, iMessage, wParam, lParam));
}
소스를 보면 LoadString라는 함수를 사용해서 저장 되어 있는 string을 불러 오게 된다.
loadstring함수는 g_hinst가 가지고 있는 IDS_STRING___를 str에 256바아트 만큼 가져 온다는 의미이다.
// 실행 화면
메뉴를 선택 했을 때 나오는 글자는 string table에 정의되어 있는 문자열이다.
최종적으로 지금까지 했던 모든 내용들에 대한 실행파일과, 소스파일을 첨부한다.
'프로그래밍 > API' 카테고리의 다른 글
API-RopMode (0) | 2010.04.24 |
---|---|
API-GdiObject (0) | 2010.04.22 |
API-resource(2) (0) | 2010.04.21 |
API-resource(1) (0) | 2010.04.21 |
API-작업 영역 (0) | 2010.04.21 |