このページの内容 |
---|
外部リソースを一気に読み取る |
外部ダイアログの読み取り |
ありがたいスポンサー様 |
---|
MSDN からのコピー。ロードしたあとに削除しなきゃいけないか。
関数 | 動作 | リソースの削除方法 |
FormatMessage | メッセージテーブルのエントリをロードし、フォーマットします。 | 操作は必要ありません。 |
LoadAccelerators | アクセラレータテーブルをロードします。 | DestroyAcceleratorTable |
LoadBitmap | ビットマップリソースをロードします。 | DeleteObject |
LoadCursor | カーソルリソースをロードします。 | DestroyCursor |
LoadIcon | アイコンリソースをロードします。 | DestroyIcon |
LoadMenu | メニューリソースをロードします。 | DestroyMenu |
LoadString | 文字列リソースをロードします。 | 操作は必要ありません。 |
サンプルソースで茶を濁す。コマンドライン引数にリソースを保持する DLL や EXE 名を入力してね。
ソースでは 「#101」 で決め打ちしてます。適宜ソースを変更して実験してみてください。リソース名は ResourceHacker なんかでファイルを見てやれば番号を知ることができます。その番号に # をつけたものがリソース名になります。
EnumResourceNames 関数でもリストアップできます。
#include <windows.h> BOOL CALLBACK DialogProc(HWND hDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam) { switch(uiMsg) { case WM_INITDIALOG: { return TRUE; } case WM_COMMAND: switch(LOWORD(wParam)) { case IDOK: EndDialog(hDlg, TRUE); return TRUE; } return FALSE; } return FALSE; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hInstPrev, LPSTR lpCmdLine, int intShowCmd) { HMODULE hMod = LoadLibrary(lpCmdLine); HRSRC hResInfo = FindResource(hMod, "#101", RT_DIALOG); if(hResInfo == NULL) return 0; HGLOBAL hGlobal = LoadResource(hMod, hResInfo); LPDLGTEMPLATE lpDlgTmp = (LPDLGTEMPLATE)LockResource(hGlobal); if(lpDlgTmp == NULL) return 0; DWORD dwDlgTmpSize = SizeofResource(hMod, hResInfo); DialogBoxIndirect(hInstance, lpDlgTmp, NULL, DialogProc); GlobalFree(hGlobal); return 0; }