メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.445) WINDOWPLACEMENT  2004/05/07


/*========================================================*/
    <<<あゆしゃの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

ブラウザの閉じるボタンで閉じてください。