NSIS의 정적 컨트롤에 페인트 할 수 있습니까? PAINTSTRUCT
등의 변수를 선언하려면 어떻게해야합니까? 나는 이것을 보통 C에서 쉽게 할 수 있지만 NSIS를 사용하고 어셈블리 타입 언어가 나를 던지고있다.NSIS의 창에 페인트 할 수 있습니까? WinAPI 변수 유형을 선언하는 방법은 무엇입니까?
내가 정적 컨트롤에 테두리를 그릴려고 아래 :
Var MainWndSubProc
Function MainWndSubProc
${If} $2 = ${WM_DRAWITEM}
# I'm assuming $3 = the WPARAM and $4 = LPARAM?
$LOWORD $R0 $3 # get id of window we are painting
${If} $R0 == $myStaticId
# C code which works: how to translate to NSIS 'assembly'?
HDC hdc;
PAINTSTRUCT ps;
hdc = BeginPaint(args.hwnd, &ps);
RECT mRect;
GetClientRect(args.hwnd, &mRect);
HBRUSH brush = CreateSolidBrush(RGB(50, 50, 50));
HPEN pen = CreatePen(PS_SOLID, 5, RGB(191, 191, 191));
SelectObject(hdc, pen);
SelectObject(hdc, brush);
Rectangle(hdc, 0, 0, mRect.right, mRect.bottom);
DeleteObject(pen);
DeleteObject(brush);
EndPaint(args.hwnd, &ps);
# NSIS translation
# how to declare PAINTSTRUCT
$LOWORD $R0 $4
System::Call `user32::BeginPaint(i $R0, i R1)`
.. ?
${EndIf}
${EndIf}
FunctionEnd
Function MyGUIInit
${WndSubclass_Subclass} $HWNDPARENT MainWndSubProc $MainWndSubProc $MainWndSubProc
FunctionEnd
문서를 파헤 치면 아무 것도 볼 수 없지만 설명서 사이트에는 [여러 가지 설치 관리자] (http://nsis.sourceforge.net/Category:Real_World_Installers)가 있습니다. [WndSubclass] (http://nsis.sourceforge.net/WndSubclass_plug-in) 플러그인에는 필요한 기능이있을 수 있지만 의심 스럽습니다. 모든 것이 평등하다는 것이고, 그것이 내 프로젝트라면, 나는 아마 모든 어려운 작업을 수행하는 플러그인을 작성할 것입니다. – theB