C++第11回:リソースファイル−3
前回ResEditで適当に作ったところからの続きです。
ふぅ・・・ゆっくりいきましょう。
いろいろ作ってみたくなるところですが、早く確かめたいところ。
それなりにできたら画面左の
Dialog を右クリック →リソースの追加 →Manifest を選択。(下)

そうすると、xmlファイルを作るか訊かれるので、言われるがままに「はい」を押します。(下)

名前は特に変えずにそのまま保存すればよしです。(下)

相対パスにチェックが入っていたら、そのままOKです。

最後に保存しておくのを忘れないように・・・。(下)
これでResEdit作業は一段落。VC++に移行しましょう。

VC++で先ほど作ったファイルを取り込んでいきます。
画面左の リソースファイルを右クリック →追加 →既存の項目 を選択。

①ResEditで新規プロジェクトを選んだときの*.rcファイル(下の例ではbox_test)
を追加。同じようにして
②resourse.h(ヘッダファイル)
も追加しておきます。

さてさて、ここからcppファイルの方でボックスを出す関数を入れておきましょう。
といってもコピペしてきたんですけどねぇ
注意すべきは、人によって作ったボックスが違うこと。
とりあえず下の「ダイアログボックスの例」のところに注目。
※#include "resource.h"を入れるのをお忘れ無く。
<追加部分を>〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
//はじめの宣言のところ(グローバル宣言)
BOOL CALLBACK DlgTestProc(HWND, UINT, WPARAM, LPARAM);//ダイアログボックス
char EDIT1_pt[1024];//テキストボックスの入力値を取得する。
//ウィンドウプロシージャのswich文のところ
・・・・
case WM_PAINT: //描画処理メッセージが来た
hdc = BeginPaint(hWnd, &ps);//hdc取得(描画)
TextOut(hdc, 0, 50, moji, (int)strlen(moji));//mojiを描画
TextOut(hdc, 0, 100, EDIT1_pt, (int)strlen(EDIT1_pt));//mojiを描画
EndPaint(hWnd, &ps); //描画終了
break;
case WM_LBUTTONDOWN:
DialogBox(NULL, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, (DLGPROC)DlgTestProc);
InvalidateRect(hWnd, NULL, TRUE); //無効領域を発生させる→WM_PAINTを呼び出す
break;
・・・・
/*************************************
*ダイアログボックス動作の例
**************************************/
BOOL CALLBACK DlgTestProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg) {
case WM_INITDIALOG://作られてすぐ
SetDlgItemText(hWnd, IDC_EDIT1,"0");//初期値0をテキストボックス(IDC_EDIT1)に代入
return TRUE;
case WM_COMMAND://コマンド
if(LOWORD(wParam) == IDOK) {//OKを押したとき
GetDlgItemText(hWnd, IDC_EDIT1, EDIT1_pt, sizeof(EDIT1_pt) );//EDIT1_ptにテキストボックス内の文字列を格納
EndDialog(hWnd, IDOK);
return TRUE;
} else
if(LOWORD(wParam) == IDCANCEL) {//キャンセル
EndDialog(hWnd, IDCANCEL);
return TRUE;
}
break;
default:
break;
}
return FALSE;
}
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
う・・・眠たい。次にresouse.hの中身をのぞいてみましょう。(下)
#difine ○○ ××
は○○は××のことだと定義しているところですね。こちらは至って単純です(−v−
つまりは上の太字ところ「IDC_EDIT1」 には数値の1002が対応してますので、極端な話
SetDlgItemText(hWnd, 1002,"0");と書いてもOKです。
ちなみに ResEditで作っているときに気がついたかもしれませんが、
IDC_EDIT1はテキストボックスの名前です。(もっとも、この関連づけがなければ
エディタの意味がありませんがw^^;)

頭が半分寝ているので、抜けてるところがあるかもしれません。
ソースも載せておきます。(下)
「reso_m1.txt」をダウンロードして開く
ついでなので、リソースファイルも覗いてみます。
うむ。自分で書く人がいるのも何となくわかります^^

とりあえずはこんなところでしょうか。コンパイルできてうまくいったら万々歳^^
<追記>
マニフェストファイルへのリンクを設定するところを書いてなかったみたいです。

構成プロパティ→マニフェストツール→入力と出力 で、
作ったマニフェストファイル(上ではmanifest.xml)を打ち込みます。(下)
























