0

我有自己制作的 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
4

1 回答 1

0

nsDialogs::Create 返回内部对话框的 HWND(不是 ID)。

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

于 2012-07-12T01:44:05.920 回答