|
/*========================================================*/ <<<あゆしゃのC言語プログラミング>>> /*========================================================*/ 第445回 WINDOWPLACEMENT 発行 2004年5月7日(金曜日) 発行数 約3000 {magclick} /*========================================================*/ はじめに ( 決り文句 ) /*========================================================*/ ・このメールマガジンはまぐまぐさんから発行しています。 ・ジャンルは、マルチメディアのプログラム、C言語です。 ・このメールマガジンは、横60文字で作成しています。 また、インデントはすべて半角スペース4つで構成しています。 ・ここで扱うプログラムは、C言語と半光年以内のものです。 ・登録解除は、まぐまぐさんのホームページでお願いします。 ・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。 ・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した 内容になっています。最新の技術があれば、へたれもあります。 ・わかりやすさを優先させる為、たまに嘘があるかもしれません。 ・セキュリティ突破のため、暗号化された単語があります。 /*========================================================*/ ご挨拶 /*========================================================*/ こんにちは。あゆしゃです。 ゴールデンウィーク、いかがでした? 雨ばっかりでした? 私は、こんな感じでした。 木曜日 ファントム 時々検索CGI修正 金曜日 ファントム 時々GIBS仕様書作り 土曜日 ファントム 時々経済のお勉強 日曜日 ファントム 時々株のお勉強 月曜日 いかんいかんと思い、ファントム禁止、GIBS仕様書作り 火曜日 いかんいかんと思い、ファントム禁止、GIBS仕様書作り 水曜日 やっぱりファントム 時々経済のお勉強 こんなんでした。 {magclick} /*========================================================*/ 今回のお題 << WINDOWPLACEMENT >> /*========================================================*/ というわけで、WINDOWPLACEMENTです。 http://ayusya.hp.infoseek.co.jp/Download/WndPlace.h ツール集にあるこのソース、開いてみると、マクロが2つある だけだと分かります。 WINDOWPLACEMENT_LOAD と、WINDOWPLACEMENT_SAVE ですね。 WINDOWPLACEMENTというのは、構造体の名前です。 どういう構造体かというと、ウィンドウの、最大化位置や現在 位置、最大化状態などを記録しているものです。 アプリケーションを開きなおしたときに、前回と同じ位置に 表示させる場合、MoveWindow なんてものは使いません。 この、WINDOWPLACEMENT を使うのです。 /*========================================================*/ WINDOWPLACEMENT の中身は、気にしなくてもOKです。 問題は、この構造体をどのように保存するか、ということです。 バイナリファイルに書き込むのが簡単かもしれませんが、それ では、汎用性もヘッタクレもありません。 ウィンドウズには、INI ファイルという、便利なシステムが あります。 データの書き込み・読み込みがランダムで自由に行えるので、 非常に便利です。 この INI ファイルには、通常はテキストや数字を保存するの ですが、バイナリも保存できます。 INI ファイルはテキストファイルですので、結局はテキストに 変換して保存するのですが、この変換作業はWindowsAPI が行う ので、気にしなくてOKです。 /*========================================================*/ まずはセーブから。セーブのほうが簡単です。 GetWindowPlacement( &wp ); とすると、WINDOWPLACEMENT が ゲットできます。 これを、WriteProfileBinary 関数でINIファイルに保存します。 たったこれだけ、簡単ですね。 /*========================================================*/ 難しいのは読み込みです。 これがあるから、マクロにしてしまいたかったのです。 GetProfileBinary 関数でINIファイルから読み出すのですが、 このとき、ポインタなんだかポインタなんだか良くわからない指定 をします。 INIファイルの中に何バイトのデータが入っているか分からない ので、この関数は、メモリをアロケートします。 アロケートしたメモリのポインタを受け取るために、ポインタの ポインタを指定します。 また、何バイトだったかを取得するために、サイズのポインタを 指定します。 さらに、使い終わった後、アロケートされたメモリを開放する 必要がありますので、delete します。 {magclick} /*========================================================*/ さいごに /*========================================================*/ {magclick} /*========================================================*/ 次回予告 /*========================================================*/ 次回は5月10日(月曜日)に、第446回を送ります。 お題は「大型計算機」 がら、をつくりましょう。 お楽しみに! /*========================================================*/ 最後の決り文句 /*========================================================*/ このメールマガジンは、まぐまぐさんから発行しています。 このメールマガジンを解除したい場合は、まぐまぐさんをご利用 ください。このメルマガのまぐまぐアイディーは最後にあります。 このメールマガジンには広告が挿入されていますか? このメールマガジンの内容に文面の引用はありませんか? めーらっくすの場合はめーらっくすの利用方に従ってください。 このメールマガジンの内容の、転用、流用、宣伝、リンク、 自動車保険の季節・・・ なんて大歓迎です。 {magclick} /*========================================================*/ /*========================================================*/ 発行者 あゆしゃ まぐまぐアイディー 0000020674 まぐまぐバックナンバー http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674 あゆしゃの世界 http://ayusya.hp.infoseek.co.jp/ 登録と解除 http://www.mag2.com/m/0000020674.htm ご意見・ご感想・ご質問メール mailto:ayusya@flamenco.plala.or.jp めーらっくす <<過去ログがタイトル別になっています>> http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F |