2017-01-12 21 views
1

基本的に、私はOPENFILENAMEを使ってtxtファイルを開くようにしていますが、ファイルのディレクトリを出力します。私はそれがtxtファイルの内容を出力したい。コントロールの転送は、次の初期化をバイパスします。

私のコードに問題があります。ここにある:
error

すべてのヘルプは理解されるであろう、ありがとう:エラーが発生します

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); 

。 The

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; 

答えて

1

switch文の例1内のローカル変数を持つために、あなたは新しいブロックを作成する必要があります。以下で

ycase 1ラベル後の範囲のままであるので、xが1である場合、yの初期化がバイパスされます。これは許可されていません。 C++では、スコープ内にある変数が初期化されているはずです。

switch (x) { 
    case 0: 
    int y = 42; 
    // ... 
    case 1: 
    // ... 
} 

case 0は独自のスコープを持ち、ycase 1に表示されないように、余分な括弧を追加し、この問題を解決するには。

switch (x) { 
    case 0: { 
    int y = 42; 
    // ... 
    } 
    case 1: { 
    // ... 
    } 
} 
+0

これを使用しようとしましたが、これは正しいですか?または、私はちょうど正しいと思っているのではないか、または愚かではないか。 http://pastebin.com/raw/A76zLpgG –

+0

@OmneyPixel追加の中括弧は表示されません。 – Brian

+0

私はそれらを忘れてしまった。しかし、私は今それらを追加しました。助けてくれてありがとう、私はそれを修正した:D –

関連する問題