0
我有我自己的NSIS插件DLL。該dll有一個函數,它將一個hwnd id號碼作爲參數,然後創建一個編輯框窗口,該hwnd作爲編輯框的父級hwnd。NSIS插件:不能從參數函數獲取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
我知道nsDialogs可以創建編輯框。這只是一個例子,我創建了一個透明的複選框,nsDialogs不能。其相同的概念,我必須給編輯框/複選框一個有效的父HWWD。是否有可能傳遞一個hwnd作爲參數,或者我必須傳遞一個hwnd ID? – 2012-07-12 02:51:24
明白了:它只是HWND hwnd =(HWND)popint(); – 2012-07-12 03:02:56
控件透明度中有一些已知的錯誤。最好的方法是將您的控件進行子類化並處理WM_PAINT消息。 – Slappy 2012-07-13 04:30:59