« 2010年3月 | トップページ | 2010年5月 »

2010年4月

2010年4月 5日 (月)

C++第11回:リソースファイル−3

 前回ResEditで適当に作ったところからの続きです。
ふぅ・・・ゆっくりいきましょう。
 

 いろいろ作ってみたくなるところですが、早く確かめたいところ。
それなりにできたら画面左の 
Dialog を右クリック →リソースの追加 →Manifest を選択。(下)

Reso_1
 
 

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

Reso_2
 
 

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

Reso_3

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

Reso_4


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

Reso_6

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

Reso_7


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

さてさて、ここから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_9
 
頭が半分寝ているので、抜けてるところがあるかもしれません。
ソースも載せておきます。(下)
「reso_m1.txt」をダウンロードして開く
 

ついでなので、リソースファイルも覗いてみます。
うむ。自分で書く人がいるのも何となくわかります^^

Reso_10

とりあえずはこんなところでしょうか。コンパイルできてうまくいったら万々歳^^

<追記>
マニフェストファイルへのリンクを設定するところを書いてなかったみたいです。


Mn_1

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

Mn_2

C++第10回:リソースファイル−2

 とりあえず先にVC++で新規プロジェクトを作っておきます。
C++第3回
にある骨組みをコピペして作っていくことにします。

今まで通りのWin32プロジェクトです。(下)

Dia_1


くどいですが、マルチバイトにするのもお忘れ無く^^
これもC++第3回参照です。

Dia_2

 
 
一応動くか試しておかないと・・・(下)
Dia_3
 
 

ここで改めてResEditを起動して、新規プロジェクトを選択。(下)
ここらあたりから油断は禁物。

Dia_4
 
 


保存場所を尋ねられるので、c++があるところに入れておきます。(下)

Dia_6


作り始める前に、まず
@オプション→設定 を選びます。(下)

Dia_7

 
 
Code generation のところで、言語を日本語にしておきます。(下)

Dia_8


 
それでは早速ダイアログボックスを作ってみます。
使い慣れてるわけでもないので、簡単にだけ説明を。
@ファイル →リソースの追加 →ダイアログ を選択。(下)

Dia_9


いろいろありますが、例えばEdit Control はテキストボックスです。
選択した後、ボックス上でドラッグして作ります。(下)
Dia_10

 
 


文字を変更、正確な値を設定したいときなどは、左下のプロパティを
変更すればOK。(下)
Dia_11
 
適当に作ってしまいましょう。長くなりそうなので次回に回します^^
先に結果だけを・・・。(下)

 

Aa_1

マウスイベントでダイアログボックスが出てきて、
数値(330)を入れてOKをおすと・・・という感じです^^

Aa_2

C++第9回:リソースファイルを取り込む

ちょいとVCの方で3D cadもどきを作ってみたくなったので、うろうろします^^
 テキストボックスなどを出して入力した値を取ってほしくなったので、
別ウィンドウで出てくる入力フォームみたいなのをリソースファイルとして
作って取り込むことにしました。

Visual C++ 2008 Express Editionでは、リソースファイルをさくさくっとは作れないようで、
フリーのエディタをダウンロードして使っていきます。
 

必要なものはおそらく以下の2点。
①Microsoft Platform SDK
 ここで取ってきました。MS Platform SDK
 ダウンロード&インストールにやや時間がかかります。

②リソースエディタ
 ResEdit
 使いやすいようです^^

多少ややこしい部分もあるので、すくしょを交えながら・・・。

まずは①のインストールから。(下)ゆっくり待ちましょう。

Plat_0
 
 
 
その次に②。こちらはインストールはされません。
とりあえずどこでも良いので解凍していきます。

Plat_1

 

解凍できたら開きましょう。最初は英語ですが、日本語に変えられるので大丈夫。

Plat_2

 
 
とりあえず何か設定しろと言っているのかな?「はい(yes)」を押します。(下)

Plat_3

 


これを指定して欲しいそうです。

Plat_4

 
指定するのは①でインストールした
Platform SDKの 「include」です。Cドライブから探せばどこかに・・・(下)

Plat_5


Plat_6
 
 

ちゃんと選択されていたら、OKを押します。(下)
ここまで行ければ順調^^

Plat_7

 
 
お次は日本語にしましょう。
Options → Preferences を選択。(下)

Plat_8
 
 
先ほど見たばかりの画面が出てくるので、
左側はGeneralを選択→languageをJapaneseに設定してOK。
一回ResEditを終了すると、次から日本語で起動します。

Plat_9

これで前半戦は終了(==;ちょっと休憩しましょう。
これからが勝負です。細かいところを見落とさないように・・・。

« 2010年3月 | トップページ | 2010年5月 »