Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Плагин NSIS: невозможно получить HWND из функции параметра

Автор вопроса: sazrОтветов: 1

У меня есть созданная мной собственная библиотека подключаемого модуля NSIS. В dll есть одна функция, которая принимает номер идентификатора hwnd в качестве параметра, а затем создает окно поля редактирования с этим hwnd в качестве родительского hwnd поля редактирования.

Моя проблема: Мне не удается передать HWND в свою DLL подключаемого модуля NSIS. Я могу получить идентификатор hwnd, а затем определить фактический 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

c++winapinsis

Ответы

Ответ 1 · Anders

nsDialogs :: Create возвращает HWND (не идентификатор) внутреннего диалогового окна.

nsDialogs уже может создавать поля редактирования, поэтому ваш текущий код бессмыслен ...

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы