4

つまり、実行時にコンパイル済みリソースにプログラムでアクセスして、DLGINIT構造から文字列を抽出するにはどうすればよいでしょうか。

もう少し詳しく...

COMBOBOXMFCアプリケーションでは、コンボボックスは、次のような対応するDLGINIT構造を使用し、持つダイアログ記述の行として.rcファイルで定義できます。

IDD_COMBOBOXTEST_DIALOG DIALOGEX 0, 0, 320, 200
STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU |     WS_THICKFRAME
EXSTYLE WS_EX_APPWINDOW
CAPTION "ComboBoxTest"
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,209,179,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,263,179,50,14
    COMBOBOX        IDC_COMBO1,22,20,132,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP
    EDITTEXT        IDC_EDIT1,22,42,132,134,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY
    PUSHBUTTON      "Load",IDC_BUTTON1,159,42,50,14
END

//...

IDD_COMBOBOXTEST_DIALOG DLGINIT
BEGIN
    IDC_COMBO1, 0x403, 4,  0    0x6e4f, 0x0065, 
    IDC_COMBO1, 0x403, 4,  0    0x7754, 0x006f, 
    0
END

Visual C ++リソースファイルは、リソースファイルの上部にある特定のコードページを使用して、1バイトのテキストエンコードでエンコードされることを学びました。DLGINITまた、構造内の線が次のように分解されていることも学びました。

<CONTROL ID>, 0x403, <STRING LENGTH>, 0    <STRING BYTES ENCODED FOR CODE PAGE>

私がやりたいのは、このコンパイル済みリソースを取得して、その文字列を引き出すことです。を使用してこの種のもののいくつかのためのAPIがありますがAfxFindResourceHandle、それが私が行く必要がある方法であるかどうかはわかりません。

4

1 に答える 1

1

私の知る限り、ダイアログがリソース セクションにレイアウトされる方法は、 および を使用してメモリ内に手動でダイアログを作成する方法に反映されDLGTEMPLATEますDLGITEMTEMPLATE。そのため、MSDN ドキュメントのその部分を参照して解析してください。これまでのところ、逆のことしか行っていません (つまり、そのようなダイアログ テンプレートをメモリ内にゼロから作成しました)。

これを行う機能はありません。手動で行う必要があります。

また、私の知る限り、DLGINITPE ファイルには保存されていません。リソースエディタ自体のためだけにあると思いますが、100%確実ではありません。

于 2012-07-06T16:54:20.120 に答える