0

私は自分で作成したNSISプラグインDLLを持っています。dllには、hwnd id番号をパラメーターとして受け取り、そのhwndをeditboxesの親hwndとして使用して編集ボックスウィンドウを作成する関数が1つあります。

私の問題: HWNDをNSISプラグインDLLに渡すのに問題があります。hwnd IDを取得して、実際のhwndを特定することはできますが(私は思う)、編集ボックスを作成すると、hwndに表示されませんか?

私は何を間違っているのですか。パラメータとして渡されたhwndを正しく見つけるにはどうすればよいですか?

    extern "C" void __declspec(dllexport) __cdecl CreateEditbox(HWND hwndParent, int string_size, TCHAR *variables, stack_t **stacktop, extra_parameters *extra)
    {
        g_hwndParent=hwndParent;
        EXDLL_INIT();

        {
            int hwndID = popint();
            HWND hwnd  = GetDlgItem(hwndParent, hwndID);
            HWND a = CreateWindowEx(WS_EX_TRANSPARENT, TEXT("Edit"), text, WS_VISIBLE|WS_CHILD, 20, 20, 100, 20,
            hwnd, NULL, GetModuleHandle(NULL), NULL);
        }
    }

私のNSISコード:

    Page custom Start

    Function Start
        nsDialogs::Create 1018
        Pop $0

        tbox::CreateEditbox $0

        nsDialogs::Show
    FunctionEnd
4

1 に答える 1

0

nsDialogs::Create は、内部ダイアログの HWND (ID ではない) を返します。

nsDialogs はすでに編集ボックスを作成できるため、現在のコードは無意味です...

于 2012-07-12T01:44:05.920 に答える