基本上,我尝试使用OPENFILENAME打开txt文件,但它会输出文件的目录。我希望它输出txt文件的内容。
我的代码存在问题;这是:
OPENFILENAME ofn;
char szFile[100];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&ofn);
std::string line = " ";
fstream infile;
infile.open(ofn.lpstrFile);
Print(ofn.lpstrFile);
所有帮助将不胜感激,谢谢。
std::string line = " ";
fstream infile;
infile.open(ofn.lpstrFile);
Print(ofn.lpstrFile);
是问题。
编辑:
LRESULT CALLBACK DLLWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_COMMAND:
switch (wParam)
{
case MYMENU_OPENSCRIPT:
OPENFILENAME ofn;
char szFile[100];
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = NULL;
ofn.lpstrFile = szFile;
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile);
ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
GetOpenFileName(&ofn);
std::string line = " ";
fstream infile;
infile.open(ofn.lpstrFile);
Print(ofn.lpstrFile);
break;
答案 0 :(得分:1)
为了在switch
语句的一个案例中包含局部变量,您需要创建一个新块。
在下文中,y
仍在case 1
标签后的范围内,因此当x
为1时,将绕过y
的初始化。这是不允许的;在C ++中,应该已经初始化了范围内的变量。
switch (x) {
case 0:
int y = 42;
// ...
case 1:
// ...
}
要解决此问题,请添加额外的大括号,以便case 0
拥有自己的范围,y
中无法显示case 1
。
switch (x) {
case 0: {
int y = 42;
// ...
}
case 1: {
// ...
}
}