質問: 趣味で C/C++ ( Windows API あり ) でやっています。 一つのプロセス ( 実行ファイル ) で 複数のウィンドウを表示することがありますよね。 あれってどうやればいいのでしょうか。 イメージ的なものでいいますと、 メインウィンドウと コンソールのように結果を次々と表示していくウィンドウ, (色の設定や、出力先のディレクトリ等) 設定を行うウィンドウがあるとします。 まず、メインウィンドウに 処理をする画像か その画像(複数) が入ったディレクトリをD&Dします。 ディレクトリならファイルの列挙で... とできますのでここはスルー。 メインウィンドウに対象をD&Dした後に どのように処理するか ( サイズ変更ならどのぐらい小さく (または大きく) するかとか ) をメインウィンドウのコントロールで 設定し、同じウィンドウ内の "処理開始" ボタンを押すと、 結果表示用ウィンドウ メインウィンドウの左側に表示されて, リストボックスで コンソールでずらっと並んだように表示していく。 で、このウィンドウの下らへんに、プログレスバーがあり、進行度を示すとします。 メインウィンドウのメニューバーの "設定" を選ぶと "設定"ウィンドウが開くとします。 このウィンドウで設定したら 即座に変更されるとします。 こういう風に一つの実行ファイルにある ( または DLL内にある場合でも ) 複数のウィンドウ間で データの受け渡し等ができたらいいのですが... この場合って、グローバル変数 ( グローバルオブジェクト, グローバル配列 etc. ) でしか無理でしょうか? もしグローバルデータを使用せずにできるなら やり方を教えていただきたいです。 あまり慣れていない分野もあるのでできるだけわかりやすくお願い致します。 対象データは構造体を想定しています。 ( 渡したいデータが複数あるので。 ) [環境等] 言語 : C/C++ ( Windows API あり ) コンパイラ: MinGW 宜しくお願い致します。
回答: プロセス間通信なら、パイプを使うか、共有メモリでやり取りするかでしょうね。 または、どこか共通にアクセスするフォルダーを作成しておいて、そこにファイルを使ってやり取りする手もあります。ただ、ファイルのアクセスにオーバーヘッドが掛かるのと、排他処理をうまくやらないとファイルが壊れてしまいます。