Windows API 명령행 인수를 유니코드로 받는 방법
2gether
제가 실험할것은 커맨드 명령어 인수를 받아서 메시지 박스로 띄우는 예제인데요.
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance
,LPSTR lpszCmdParam,int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hInstance=hInstance;
WndClass.lpfnWndProc=(WNDPROC)WndProc;
WndClass.lpszClassName=lpszClass;
WndClass.lpszMenuName=NULL;
WndClass.style=CS_HREDRAW | CS_VREDRAW;
RegisterClass(&WndClass);
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,300,300,
NULL,(HMENU)NULL,hInstance,NULL);
ShowWindow(hWnd,nCmdShow);
MessageBox(hWnd,lpszCmdParam,L알림,MB_OK); OutputDebugStr(lpszCmdParam);
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return Message.wParam;
}
인수로 asdf, qwer를 던졌습니다.
MessageBox 함수 (유니코드 문자열을 받는)로 인수를 받으니..
이런식으로 깨지네요.
명령행 인수는 오직 유니코드밖에 안되나요?
(해결하려면 MessageBoxA 함수를 써야되지만...)
-
가람슬기
그 옛날에 수다님인가? 강좌올린거 본적있는거같은