NSIS插件:无法从参数功能获取HWND

时间:2012-07-12 01:13:00

标签: c++ winapi nsis

我有自己的NSIS插件DLL。该DLL有一个函数,它将一个hwnd id号作为参数,然后创建一个编辑框窗口,该hwnd作为编辑框父hwnd。

我的问题:我无法将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

1 个答案:

答案 0 :(得分:0)

nsDialogs :: Create返回inner dialog的HWND(而不是ID)。

nsDialogs已经可以创建编辑框,因此您当前的代码毫无意义......