問題タブ [cfiledialog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - CFileDialog の初期ディレクトリが機能しない
コードに示すように、以下のように初期パスを設定しました。動いていない 。間違いがあれば訂正してください。
c++ - .exe と .dll で矛盾する CFileDialog の現在のディレクトリ
通常、CFileDialog を使用してファイルを複数回開くと、現在のディレクトリが維持されます。つまり、前のダイアログが終了したディレクトリでダイアログが開くたびに (キャンセルされていない場合)。これは、異なる場所から CFileDialog の異なるインスタンスを使用する場合でも機能します。
また、プログラムを再起動した後も、以前のディレクトリは維持されます。
しかし、私のアプリでは、これは DLL 全体では機能しないようです。メインの .exe プログラムから呼び出された CFileDialogs には現在のディレクトリがあり、.dll からの CFileDialogs には別のディレクトリがあります。それらは互いに相互作用しませんが、それ以外は「通常」に動作します。
そのため、現在のディレクトリが 2 つ矛盾しているため、DLL から必要な場所に再度移動する必要があります。また、ディレクトリを変更するのを忘れて、あるディレクトリから .exe にデータをロードし、別のディレクトリから .dll に他のデータをロードすると、奇妙な結果が得られることがあります。
.exe と .dll から CFileDialog を開くときに同じ現在のディレクトリを持つ方法を知っていますか?
明確化: ダイアログを常に同じディレクトリから開始するのではなく、最後に使用したディレクトリを保持したいのですが、.exe と .dll で一貫して実行します。
私の.exeはVS2003で作成され、.dllはVS2010で作成されます。
(私の最初の推測では、DLL の CFileDialog コンストラクターでメイン ウィンドウ ハンドルを提供する必要があるということでしたが、これは役に立ちませんでした。私の次の推測では、GetCurrentDirectory() を介して手動で現在のディレクトリを取得し、それを開始場所として設定します。 dll の CFileDialog (そして、現在のディレクトリを終了した場所に設定します。)しかし、これは非常に見苦しく、WinXP から Win8 までのすべての OS で動作するかどうかはわかりません。 .)
mfc - Windows XP SP3 の CFiledialog でコンボ ボックスの値を編集できない
FileDialog
から派生したCustome CFiledialog
。その中で、OnInitDialog()
レイアウトを(アラビア語の場合)に更新し、WS_EX_LAYOUTRTL
コールバックメソッドSetChildLayout
をすべての子アイテムを列挙するように設定し、レイアウトをに設定しましたWS_EX_LAYOUTRTL
。
ダイアログが表示されているときにこれらすべてを行った後、ファイル名のコンボ ボックスにアクセスできません。そのタイプはCComboBoxEx
.
カスタム ダイアログのサイズを変更した後にのみ、コンボ ボックスを編集できます。
何か案が?
c++ - Cファイル書き込み機能
MFC CFile 書き込み関数について質問があります。
私は MFC アプリケーションについて学んでいて、この名前を付けて保存して書き込み機能にこだわっています。TestButton をクリックすると、[名前を付けて保存] ダイアログ ボックスが表示され、txt ファイルとして保存するように求められます。
質問は、2 つのバッファーを 1 つのバッファーにまとめて File
書き込み、それを に書き込み、DataFile
書き込むたびに新しい行を作成する方法です。
出力ファイルは保存されますが、新しい行に移動せずに 1 つのバッファー (TEST1) だけが 2 回保存されます。
c++ - MFC のメモ帳でテキストを開く
まさにタイトル通り。MFC のメモ帳でテキストを開くにはどうすればよいですか?
を使用して、CFileDialog
次のように「名前を付けて保存」ダイアログボックスを開きました。
でパス名をm_strPathName
取得した後、メモ帳に保存した txt ファイルを直接開く方法はありますか?
別のボタンOnShowData
があり、これが内部のコードです。
ShellExecute(NULL, _T("open"), m_strPathName, NULL, NULL, SW_SHOW);
これを行うことができる他の方法はありますか??
問題が解決しました
visual-studio-2010 - CFileDialog クラスのコンストラクターを呼び出す方法
クラスのすべてのメンバー関数で使用される CFileDialog オブジェクトが必要です。だから私はクラスのヘッダーを次のように書きました:
クラスのコンストラクターを次の形式で実装します。
しかし、コンストラクターでは、エラーが発生します:
何が問題ですか?
-------------------------------------------------- ----------------------------------------------
問題が解決しました。このようにクラスを実装しました。
FilesWorkFlow.h
FilesWorkFlow.cpp
c++ - プログラムで CFileDialog を 2 回目に使用すると、実行時エラー Debug Assertion failed が発生する
MFCで簡単なプログラムを開発しました。GDAL ライブラリを使用して geotiff ファイルの読み取りと書き込みを担当します。この目的のために、CFileDialog
namedクラスから 2 つのクラスを派生さManageOpenGeoTiffFiles
せ、ManageSaveGeoTiffFiles
それぞれに geotiff の読み取りと書き込みをサポートする 3 つの関数を用意しました。
これは、そのうちの 1 つのコンストラクターとデストラクターのヘッダーです。
これが私のコードでの使用方法です。
Open
プログラムでまたはSave
ボタンを初めて 使用するときはすべて問題ありませんが、2回目の使用になるとエラーが発生します。
無視をクリックすると
、次の行でこのエラーが発生します。
各ダイアログcancel
の 1 回目をクリックしても、2 回目のダイアログの使用でエラーが発生します。
dlgFile.cpp の 398 行目は次のとおりです。
編集されたセクション:
コメントの 1 つに回答し、他の人にも情報を提供する:
ブレークポイントを設定すると、アサーションが失敗したときに次の結果が表示されました。
アサーションが失敗しなかった最初の結果は次のとおりです。