[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/ --
//
//    ALL "Window Style"s WS_ : WS_OVERLAPPED (WS_TILED) WS_POPUP WS_CHILD (WS_CHILDWINDOWS) WS_MINIMIZE (WS_ICONIC) WS_VISIBLE WS_DISABLED WS_CLIPSIBLINGS WS_CLIPCHILDREN WS_MAXIMIZE WS_CAPTION WS_BORDER WS_DLGFRAME WS_VSCROLL WS_HSCROLL WS_SYSMENU WS_THICKFRAME (WS_SIZEBOX) WS_GROUP WS_TABSTOP WS_MINIMIZEBOX WS_MAXIMIZEBOX WS_OVERLAPPEDWINDOW (WS_TILEDWINDOW) WS_POPUPWINDOW 
//    ALL "Dialog Style"s DS_ : DS_ABSALIGN DS_SYSMODAL DS_LOCALEDIT DS_SETFONT DS_MODALFRAME DS_NOIDLEMSG DS_SETFOREGROUND DS_3DLOOK DS_FIXEDSYS DS_NOFAILCREATE DS_CONTROL DS_CENTER DS_CENTERMOUSE DS_CONTEXTHELP DS_SHELLFONT
//                     WS_EX_ : WS_EX_TOOLWINDOW (など).
//    For more informaiton, see "winuser.h" or "CreateWindow()" and,"CreateWindowEx()" function.


MYDIALOG1 DIALOGEX DISCARDABLE  0, 20, 160, 100 // x, y, , 高さ
STYLE   WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_SIZEBOX | WS_MAXIMIZEBOX | DS_SETFONT
// EXSTYLE WS_EX_TOOLWINDOW
CAPTION  "稼働中プロセス情報(タイトルの例)"
FONT 14, "MS P明朝"
BEGIN
// CONTROL "チェック\"タイプ\"のボタン" ,IDC_BUTTON1 ,"BUTTON" ,BS_AUTOCHECKBOX ,90 ,7 ,50 ,6
END



// -- アクセラレータ(ショートカットキー) --

#define IDM_ACTF1 100
MYACCEL ACCELERATORS DISCARDABLE 
BEGIN
    VK_F1 , IDM_ACTF1  , VIRTKEY, NOINVERT
//  VK_F1 , IDM_CTRLF1 , VIRTKEY, CONTROL , NOINVERT
//  VK_F1 , IDM_SHIFTF1, VIRTKEY, SHIFT   , NOINVERT
//  VK_UP , IDM_UPARROW, VIRTKEY, NOINVERT
//  "K"   , IDM_ACTK   , VIRTKEY, ALT     , NOINVERT
END


// -- ストリングテーブル --

#define IDS_STRING 100
STRINGTABLE
{
   IDS_STRING1 "I am the string 1"
// IDS_STRING2
// "I am the string 2"
// IDS_LONGSTRING
// "A long string can be described like"
// "this."
// "And a style" "like this" "is \"also\" OK" "\r\n"
// "line fed."
}


// -- ビットマップ・アイコン・カーソル --

// MYBITMAP BITMAP DISCARDABLE "Relative\path\mybitmap.bmp"
// MYICON   ICON   DISCARDABLE "C:\OrFullpath\myicon.ico" 
// MYCURSOR CURSOR DISCARDABLE "mycursor.cur"

// -- 一応ここまで --


 
// 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]