[index] [詰め合わせ] [ダイアログボックス] [メニュー] [アクセラレータ] [String Table] [その他]
メニュー ・ ダイアログボックス ・
アクセラレータ ・ ストリングテーブル ・ ビットマップ ・ アイコン ・ カーソル
を、全て含んだリソーススクリプト (.rc) のスケルトンコードです。
これくらいのスケルトンがあると些細(ささい)な部分の不自由さは避けられるでしょう。
[ここ] に書いてあります。ややこしいですが、各"リソース"自体に関しては離れて [こちら] に解説されています。こちらは "リソース" の「扱い方」、つまりリソース周辺の関数やリソースの仕様についてです。"リソーススクリプト" に関する正式な文法の説明は MSDN の
コメントアウト //〜 の部分は残しておいても害はなく、
文法を忘れたときにすぐ目に付いて役立ちます。
例によって、これも一応そのまま使える形です。
※ | は、ビットor(オア) 演算子。ここではでませんが || は論理or。数学的な演算子です。
1 | 2 | 4 = 1 + 2 + 4 = 7。1 | 3 は 1 + 3 ではありません(こたえは = 1 | 2 = 1 + 2 = 3 なんのこっちゃ ????? )。リソーススクリプトでこれが使われたら、「"フラグ" を継ぎ足していく」と考えます。
// // skelton.rc // brc32 -iC:\borland\bcc55\include skelton.rc xxx.exe #include <windows.h> #include <commctrl.h> // #include "myprog.h" // -- メニュー -- MYMENU1 MENU DISCARDABLE BEGIN MENUITEM "例ダミー" // MENUITEM SEPARATOR // MENUITEM "メニュー1" , IDM_MENU1 // POPUP "例ファイル(&F)" // BEGIN // MENUITEM "メニュー2" , IDM_MENU2 // END END // -- ダイアログボックス -- // -- 位置と大きさの座標単位:ダイアログユニット(DLU) 縦の1DLU = フォントサイズの1/8、横の1DLU = フォントサイズの1/4 -- // // ALL "Window Style"s WS_ : WS_OVERLAPPED (WS_TILED) WS_POPUP
// -- 一応ここまで --
// HMENU hMenu = LoadMenu( hInst, "MYMENU1" ) ; // DestroyMenu( hMenu ) ; // HWND hDlg = CreateDialog( hInst, "MYDIALOG1", NULL, (DLGPROC)MyDlgProc1 ) ; // HACCEL hAccel = LoadAccelerators( hInst, "MYACCEL" ) ; // resource is automatically freed. // LoadString( hInst, IDS_STRING1, lpBuffer, 1024 ) ; // HBITMAP hBitmap = LoadBitmap( hInst, "MYBITMAP" ) ; // DeleteObject( hBitmap ) ; ohtre interesting usage : LoadBitmap( NULL, OBM_CLOSE ) ; // HICON hIcon = LoadIcon ( hInst, "MYICON" ) ; // resource is automatically freed. othre interesting usage : LoadIcon ( NULL, IDI_WINLOGO ) ; // HCURSOR hCursor = LoadCursor( hInst, "MYCURSOR" ) ; // resource is automatically freed. othre interesting usage : LoadCursor( NULL, IDC_CROSS ) ; // note. All of these "hInst" can be a direct call to "GetModuleHandle()", ie. "hInst" can be replaced with "GetModuleHandle(NULL)" . リソースの、ソースコード内(.cや.cpp) での使用法です。 赤字は、リソース使用後に開放しなくてはならない場合のことです。 下線部は、この例は一時的なもので、具体的な場合に即しての記述が必要です。 緑色は、それぞれの関数の面白い使い方で、システムにあらかじめ用意されているリソースを使用する方法です。おまけです(脱線)。 "hInst" は、かわりに "GetModuleHandle(NULL)" の記述により、インスタンスハンドル変数を使わずに、これで置き換えてしまうことができます。
[トップ] [level4:言葉] [index]