0

-lcomdlg32このコードは、ダイアログ用にリンクする必要があるエラーなしでコンパイルする必要があります。プログラムは次を返します:0x22fcd8または68、ポインターを使用する場合。そして、(私が思うに)ダイアログボックスでファイルユーザータイプの名前を返す必要があります。

#include <windows.h>
#include <iostream>

int main() {
  wchar_t szFileName[MAX_PATH] = {0};
  OPENFILENAMEW ofn;
  ZeroMemory(&ofn, sizeof(ofn));
  ofn.lStructSize = sizeof(OPENFILENAME);
  ofn.nMaxFile = MAX_PATH;
  ofn.lpstrFile = szFileName;
  GetSaveFileNameW(&ofn);

  using namespace std;
  cout << szFileName << endl;
  cout << *szFileName << endl; // also a number not a string
}
4

2 に答える 2

6

の配列をnull で終わるワイド文字列としてwcout出力する場合は、使用する必要があります。wchar_t

于 2013-01-18T18:59:55.707 に答える
2

coutwchar_tはまたはをサポートしていませんが、および をwchar_t*サポートしています。コンパイラは最終的に を int に変換し、 を に分解します。そのため、 の数値と のメモリ アドレスが表示されます。intvoid*wchar_twchar_t*void*coutwchar_twchar_t*

wcout代わりに使用してください。と をサポートしているwchar_tためwchar_t*、代わりに実際のデータを出力できます。

wcout << szFileName << endl;
wcout << *szFileName << endl;
于 2013-01-18T19:46:14.080 に答える