« ウィンドウ位置保存 |メイン| ウィンドウ保存位置その3 »

ウィンドウ位置保存その2 | August 2, 2008 6:02 PM _ prgramming

前回結局スレッドを使うことも出来なかったのでどうするかと考えたけれど、
やはり何かしらを持たせなければどうにもなりそうに無さそう。

・CMainWindow(ウィンドウクラス)
・CConfigManager(ウィンドウ情報クラス)
・CWndManager(ウィンドウ管理クラス)
があって、
CWndManagerにCMainwindowとCConfigManagerを持たせるところまでは前回通り。
んで、CMainWindowに何かを持たせなければならないという結論に落ち着いたわけだけど、
持たせるのはCConfigManagerにすることに。

/* Frieve Editor という面白い物があったので使ってみる */

■ 前回
UML_001.jpg

■ 今回
UML_002.jpg

ウィンドウクラスでOnDestroyが呼ばれたときに、
WINDOWPLACEMENTをCConfigManagerに渡す

CConfigManagerのデストラクタでファイルに書き出し

で、どうにかウィンドウ位置の保存に成功。
ただ、CConfigManager*を持たせるためにコンストラクタへの引数を増やさなきゃいけないのはなぁ。
出来ればデフォルトコンストラクタで余り意識しないで使えるようにしたかったのだけれど。

もし仮に、CConfigManagerを持たせずにやるとすれば、
所定の状況に於いてメッセージを発行し、
それをCWndManagerで、発行元を参照して処理
という方法が有るのだけれど、CWndManagerはメッセージループを持たないただのクラスなので捕まえることもできず、
かといってそれを実装しちゃうとそれはそれでごちゃごちゃしてて美しくないので却下。
そのうちこの辺りを綺麗に実装する方法を考え直そう。

で、また問題発生。
WINDOWPLACEMENTを使っているのだけれど、
cmdshowメンバにSW_HIDEを割り当てても、何故か保存時にはSW_SHOWに勝手に置き換わっているという怪現象が。
何故だ。

« ウィンドウ位置保存 |メイン| ウィンドウ保存位置その3 »

Σ(・×・)