#pragma twice

KAB-studio > プログラミング > #pragma twice > 148 Version 8.06 リソースを用意しよう!

#pragma twice 148 Version 8.06 リソースを用意しよう!

前のページへ 表紙・目次へ 次のページへ

 Version 8.06
リソースを用意しよう!

さて、前回までは WinMain() の話でした
ってゆーかインスタンスハンドルがインパクト強い……
で、今度はちゃんとしたダイアログを作ってみます
メッセージボックスじゃないのってことね
そゆこと。で、そのためにはまず【リソーススクリプト】ってものを作ら
ないといけないんです
リソーススクリプト? リソースってゆーと、 Version 7.05 ( No.125 )
で教えてもらったの
じゃないほう。ダイアログとかアイコンとか
そっちの方ね
で、リソーススクリプトについてだけど……スクリプトって知ってる?
プログラムのちっこいバージョン、とか聞いたことあるけど
そうそう。一種のプログラム、って考えればいいかな。実は、ダイアログ
やストリングテーブルなんかは、そのスクリプト、つまりプログラムっぽい
もので作られてるんです
プログラムでダイアログが作られてるなんて、なんか不思議
まーね。でも火美ちゃん見たことあるんだよ
へ?
 Version 5.24 ( No.089 ) で見てる FileTest.rc ってファイル、これが
リソーススクリプト
そういえば! あれってダイアログのプロパティとかボタンのプロパティ
とかが書かれてて……確かにそう言われるとプログラムっぽい……かなぁ
ま、プログラムってほどじゃないからスクリプト?
そーゆーもの?
たぶん。で、この拡張子が .rc のファイルが【リソーススクリプト】。
この中にダイアログとかの情報が入ってます
つまりこのファイルがないといけない……あ、でも SimpleDialog プロ
ジェクトには入ってないね
【空のプロジェクト】で作ったからね
やっぱり【標準的な "Hello World" アプリケーション】にすれば良かっ
たのよー
でもそしたらリソーススクリプトを作る勉強はできないでしょ
げ、作るの?
もちろん。……あ、あの中身そのまま書くわけじゃないよ
あ、なんだ、そうなんだ
さすがに僕もあれを書いたことはないし……
え、そうなの?
うーん、書けなきゃいけないのかなぁ
なんか偏ってる気もするけど……
ま、それは置いといて
おいとかれた〜
リソーススクリプトのファイルを作っちゃいましょう。メニューの
【ファイル】−【新規作成】で【ファイル】のページで
下から2番目に【リソーススクリプト】ってあるね
それを選択して、ファイル名は適当に、まぁ SimpleDialog.rc にでもし
ておいて
それでOKね。お、リソースのフォルダが出た!
ワークスペースにもリソースのページが追加されたしね
これでもうリソーススクリプトができたわけ?
そ。ここからはこれまで通りにダイアログの編集をしたりすれば、リソー
ススクリプトの中に自動的にダイアログの情報とかが書き込まれるわけ
じゃ、ここにダイアログ追加して色々変えたりすればいいんだ
それをやってみましょう。このリソースの画面の【 SimpleDialog リソー
ス】フォルダを右クリックして【挿入】選んで
ほい。【リソースの挿入】ってダイアログが出てきた
普通のダイアログを選んで【新規作成】を選んで
普通じゃないダイアログも結構あるのねー
ま、その辺は当分使わないかな
あ、水希ちゃん使ったことないでしょ
ギク
ま、それはおいといてぇ。ダイアログできたよ
今回はダイアログは表示するだけだから特に何もしなくていいけど、ダイ
アログの ID だけは変えておこうかな
右クリックでプロパティっと。今は IDD_DIALOG1 だね
アプリの中心になるダイアログだから、それっぽい方がいいかな。僕は
IDD_MAIN ってすること多いけど
普通すぎ
う”
でもとりあえずそれでいーや。ついでにキャプションを【SimpleDialog】
にしてと
これでリソーススクリプトにダイアログの情報が書き込まれました。実際
に見てみましょう
 SimpleDialog.rc を、【ファイル】−【開く】でテキスト形式で開い
てっと。そうそう、ここで【リソースエディタを終了します】って言われる
のよね
リソースエディタもリソーススクリプトを編集してるわけだから、それと
同時にこっち側でも編集したらまずいでしょ
編集するのはあくまでひとつだけってわけねー。お、ダイアログのができ
てる!

////////////////////////////////////////////////////////////////////
//
// Dialog
//

IDD_MAIN DIALOG DISCARDABLE  0, 0, 187, 93
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "SimpleDialog"
FONT 9, "MS Pゴシック"
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,130,7,50,14
    PUSHBUTTON      "キャンセル",IDCANCEL,130,24,50,14
END

ま、プログラムらしいところを挙げれば、 BEGIN と END が { と } に挟
まれてるのと同じ感じってとこかな
確かにインデントしてる……
さて、こうやってリソーススクリプトを作ったわけだけど、実は作られた
のはこれだけじゃないんです
他に何か?
フォルダを見てもらえば分かるけど、 resource.h ってファイルも作られ
てるんです
あ、これってボタンとかの ID が書かれてるのだ
そうそう、 Version 5.19 ( No.084 ) でやったね。このファイルは結構
よく見たりするから、プロジェクトに追加しておきましょう。ワークスペー
スの【FileView】ページで、【Header Files】を右クリックして【ファイル
をフォルダへ追加】を選んで
ほい。ダイアログ出た。これで resource.h を選べばいいのね
そうすれば【Header Files】に追加されるから
追加するとなんかなんの?
いや……別にこれは特に意味ないけど
意味ないのー?
ファイルの中身を見たいときに簡単に見られるってだけ。この辺の、ファ
イルを追加する意味とかはまた今度ね
またねー
で、このファイルを見てみましょう。ダブルクリックしてみて
ほい

//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by SimpleDialog.rc
//
#define IDD_MAIN                        101

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        102
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

最初のはさっきのダイアログのね。でもあとのがわかんない……
下のは、リソースエディタが覚え書きとして使うもの
覚え書きって……
たとえば

#define _APS_NEXT_RESOURCE_VALUE        102

これと

#define IDD_MAIN                        101

を比べれば
上の方が1多いね
 NEXT RESOURCE VALUE ってあるように、次にダイアログを追加する時に
は 102 が付けられますよって意味
ああ! 試していい?
もちろん。あ、 resource.h と SimpleDialog.rc は閉じた方がいいか

閉じて、リソースの方にダイアログ追加
もうダイアログあるから、今度は【Dialog の挿入】が楽かもね
お、一発追加
で、 resource.h を見ると

//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by SimpleDialog.rc
//
#define IDD_MAIN                        101
#define IDD_DIALOG1                     102

// Next default values for new objects
// 
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        103
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1000
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

おおっ! IDD_DIALOG1 に 102 が付いてて、 _APS_NEXT_RESOURCE_VALUE 
が 103 になってる!
こういうのに使われてるってことだね
こういうふうに分かっちゃうと、なんてゆーか、意外とちゃちってゆー

そういうものかもね。で、重要なのは、リソース、つまりダイアログとか
を使うためには【リソーススクリプト】と resource.h の2ファイルが必
要ってこと
つまり、リソーススクリプトだけじゃダメってことね
そういうこと。確かにリソースの情報そのものはリソーススクリプトに
入ってるんだけど、それだけだとプログラムでは使えないんです
そこで resource.h の出番!
リソーススクリプトのリソースに ID 、つまり整数値を割り振るのが
resource.h の仕事。こうすることで初めて、プログラムからリソースを使
うことができます
これがないとプログラムからは見えない?
そゆこと。同時に、リソーススクリプトも resource.h が必要。リソース
を作るときには ID と結び付けないといけないから
あ、そういえば SimpleDialog.rc に

#include "resource.h"

ってあるね
こうやってリソーススクリプトも resource.h を見てるわけです
最後に質問! resource.h ファイルって、正確にはなんて名前なの?
なんて名前だろう……
……

/*
    Preview Next Story!
*/
リソースを作ったから、次はいよいよダイアログ!
 MFC を使わないダイアログは手強いよ〜?
げげ、今から脅しますか
特に関数ポインタはねー
? 次回の中にそのキーワード出てこないけど
いきなりじゃ難しいから、少しずつってことで
というわけで次回
< Version 8.07 ダイアログを作ろう! >
につづく!
関数のポインタってイメージ沸かない……
そのイメージを掴んでもらいましょう
 
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
RSSに登録
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
 
このページは、Visual C++ 6.0を用いた C++ 言語プログラミングの解説を行う#pragma twiceの一コンテンツです。
詳しい説明は#pragma twiceのトップページをご覧ください。