#navi_header|読書メモ| "APIで学ぶWindows徹底理解"でスルー気味だった「リソース」のサンプル集です。 この読書メモのスタンス、およびサンプルコードの入手については以下を参照して下さい。 [[652]] #more|| ---- * 【Part 99】「リソース」サンプル アイコンやダイアログのデザイン、メニューや文字列を格納する"リソース"関連の情報は以下のMSDN Libraryに集約されている: "MSDN Library" > "Windows Development" > "Windows Application UI Development" > "Windows User Interface" > "Resources" : リソースを取り出す時に使う "MAKEINTRESOURCE" マクロについて知りたい : ... > "Resource Overviews" > "Resource Reference" > "Macros" > "MAKEINTRESOURCE" : カーソル/アイコン/メニュー/文字列 のリソース関連の関数について知りたい : ... > "Resources Overviews" > "Resources Reference" : メニューやコンテキストメニューの作り方を知りたい : ... > "Menus" : ダイアログボックスについて知りたい : "MSDN Library" > "Windows Development" > "Windows Application UI Development" > "Windows User Interface" > "Windows and Messages" > "Dialog Boxes" : Resource Compiler (RC.exe) の使い方について知りたい : "MSDN Library" > "Windows Development" > "Windows Application UI Development" > "Resource Compiler" > "Using RC (The RC Command Line)" : テキスト形式のリソースファイル(.rcファイル)について知りたい : "MSDN Library" > "Windows Development" > "Windows Application UI Development" > "Resource Compiler" > "About Resource Files" ** サンプル解説("Part99_ApendixA\"フォルダ) このサンプルに含まれている ".rc", "resource.h" は"ResEdit"で作成しています。 - ResEdit Resource Editor - free resource editor for Win32 -- http://www.resedit.net/ - 参考:[[643]] *** 文字列リソースのサンプルその1("Part99_ApendixA\string_res01\"フォルダ) : string_res01.c, string_res01.rc, resource.h : #block||> コンパイル方法: rc string_res01.rc cl string_res01.c user32.lib string_res01.res 文字列リソースをLoadString()で取得し表示する簡単なサンプル。 ||< *** 文字列リソースのサンプルその2("Part99_ApendixA\string_res02\"フォルダ) : string_res02.c, string_res02.rc, resource.h : #block||> コンパイル方法: rc string_res02.rc cl string_res02.c user32.lib string_res02.res FindResource(Ex)(), LoadResource()で文字列"テーブル"を直接取得し、16進ダンプするサンプル。 ||< 文字列リソースは、内部的には16個を一組とした「文字列テーブル」として管理される。LoadString()では文字列テーブルの中のデータを直接取得できるが、FindResource(), LoadResource()を使うと「文字列テーブル」として取得される。文字列テーブルとして取得した場合、内部には最大16個の文字列が格納されており、文字列一つ分を取り出すには文字列テーブルのバイナリデータを切り分ける処理を実装する必要がある。 参考: - Stablupd.exe Manipulate String Resources in an Executable -- http://support.microsoft.com/kb/q196774/EN-US/ - [[642]] また、このサンプルでは言語を指定してリソースを取り出す機能も試すことが出来る。 string_res02.rc ファイルには日本語・英語・デフォルトの3種類の文字列リソースを埋め込んでいる。 string_res02.c のソースコードでコメントアウトしてあるFindResourceEx()のコメントアウトを外し、代わりにFindResource()をコメントアウトすれば言語を指定してリソースを取得する準備が整う。 #pre||> hResRc = FindResource( hCurrentInst, MAKEINTRESOURCE(wBlockID), RT_STRING); ||< ↓ #pre||> hResRc = FindResourceEx( hCurrentInst, RT_STRING, MAKEINTRESOURCE(wBlockID), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT) ); ||< 第4引数で言語IDを指定出来るので、 MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US) で英語用のリソース、 MAKELANGID(LANG_JAPANESE, SUBLANG_JAPANESE_JAPAN) で日本語用のリソースを取得出来る。 *** メニューリソースのサンプル("Part99_ApendixA\menu_res01\"フォルダ) : menu_res01.c, menu_res01.rc, resource.h : #block||> コンパイル方法: rc menu_res01.rc cl menu_res01.c user32.lib menu_res01.res メニューリソースを使ってメインメニューを構築するサンプル。 ||< *** ダイアログボックスソースのサンプル("Part99_ApendixA\dialogbox_res01\"フォルダ) : dialogbox_res01.c, dialogbox_res01.rc, resource.h : #block||> コンパイル方法: rc dialogbox_res01.rc cl dialogbox_res01.c user32.lib dialogbox_res01.res リソースエディタでデザインしたダイアログボックスを使ってみるサンプル。 ||< #navi_footer|読書メモ|