GetOpenFileName函数的问题
代码如下
CString OpenFile (HWND hwndP)
{
TCHAR szFile[MAX_PATH];
OPENFILENAME OFName;
ZeroMemory(&OFName, sizeof(OPENFILENAME));
OFName.lStructSize = sizeof (OPENFILENAME);
OFName.hwndOwner = hwndP;
OFName.hInstance = hinst;
OFName.lpstrFilter = _T("All/0*.*/0Text/0*.TXT/0");
OFName.lpstrCustomFilter = NULL;
OFName.nFilterIndex = NULL;
OFName.lpstrFile = szFile;
OFName.nMaxFile = sizeof (szFile);
OFName.lpstrInitialDir = NULL;
OFName.Flags = OFN_EXPLORER;
GetOpenFileName (&OFName);
return OFName.lpstrFile;
}
LRESULT CALLBACK MainWndProc (HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)//消息处理函数
{
switch (uMsg)
{
case WM_COMMAND:
switch (LOWORD(wParam))
{
case ID_40004:
lpFileName = OpenFile (hwnd);
break;
default:
break;
}
case WM_DESTROY://窗口消失函数
ExitThread (0);//线程终止
break;
default:
return DefWindowProc (hwnd, uMsg, wParam, lParam);//系统默认消息处理函数
}
UpdateWindow (hwnd);
}
visual studio 2010编译未报错,点击菜单打开按钮直接消失,没有弹出文件选择对话框
求解
[解决办法]
因为你那嵌套的两层switch,里面的那层即便break;也只是退出了1层,外面那层也需要break;
也就是说,在case WM_DESTROY:这句话上面加一句break;就好了..