【发布时间】:2009-04-04 23:25:35
【问题描述】:
我应该使用这种形式的 switch 语句:
switch(msg)
{
case WM_LBUTTONDOWN:
{
char szFileName[MAX_PATH];
HINSTANCE hInstance = GetModuleHandle(NULL);
GetModuleFileName(hInstance, (LPWCH)szFileName, MAX_PATH);
MessageBox(hwnd, (LPCWSTR)szFileName, L"This program is:", MB_OK | MB_ICONINFORMATION);
}
break;
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
或者为第一个 case 常量创建一个函数?
【问题讨论】:
-
不要将 char (szFileName) 转换为 WCHAR(将其传递给 MessageBox)。这会导致坏事发生!
-
同意@jeff,请将 szFileName 声明为 'WCHAR szFileName[MAX_PATH];'并摆脱这两种类型转换。