From 973272562bb40a5fcc7a2427e9a6d929d270672c Mon Sep 17 00:00:00 2001 From: kichik Date: Tue, 12 Nov 2002 17:59:58 +0000 Subject: [PATCH] Graying out when checkbox is checked git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1686 212acab6-be3b-0410-9dea-997c60f758d6 --- Contrib/StartMenu/StartMenu.c | 64 ++++++++++++++++------------------ Plugins/StartMenu.dll | Bin 6144 -> 6656 bytes 2 files changed, 30 insertions(+), 34 deletions(-) diff --git a/Contrib/StartMenu/StartMenu.c b/Contrib/StartMenu/StartMenu.c index b7242667..7458c5fa 100644 --- a/Contrib/StartMenu/StartMenu.c +++ b/Contrib/StartMenu/StartMenu.c @@ -29,8 +29,7 @@ void *lpWndProcOld; BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK ParentWndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -void AddFolderFromReg(char *name, HKEY rootKey); -void PopulateListWithDir(char *dir); +void AddFolderFromReg(HKEY rootKey); void __declspec(dllexport) Select(HWND hwndParent, int string_size, char *variables, stack_t **stacktop) { @@ -97,7 +96,7 @@ void __declspec(dllexport) Select(HWND hwndParent, int string_size, char *variab lpWndProcOld = (void *) SetWindowLong(hwndParent, GWL_WNDPROC, (long) ParentWndProc); } - LockWindowUpdate(0); + //LockWindowUpdate(0); while (!g_done) { @@ -208,7 +207,7 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) temp_r.bottom + 2 ); - SendMessage(hwText, WM_SETTEXT, 0, (LPARAM) text); + SetWindowText(hwText, text); GetWindowRect(hwLocation, &temp_r); @@ -221,12 +220,13 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) if (*lastused == '>') { - SendMessage(hwCheckBox, BM_SETCHECK, BST_CHECKED, 0); - lstrcpy(buf, lastused); - lstrcpy(lastused, buf + 1); + CheckDlgButton(hwndDlg, IDC_CHECK, BST_CHECKED); + lstrcpy(lastused, lstrcpy(buf, lastused) + 1); + EnableWindow(hwDirList, FALSE); + EnableWindow(hwLocation, FALSE); } - SendMessage(hwLocation, WM_SETTEXT, 0, (LPARAM) (*lastused ? lastused : progname)); + SetWindowText(hwLocation, *lastused ? lastused : progname); GetWindowRect(hwCheckBox, &temp_r); ScreenToClient(hwndDlg, ((LPPOINT) &temp_r)); @@ -249,11 +249,11 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) if (*checkbox) { ShowWindow(hwCheckBox, SW_SHOWNA); - SendMessage(hwCheckBox, WM_SETTEXT, 0, (LPARAM) checkbox); + SetWindowText(hwCheckBox, checkbox); } - AddFolderFromReg("Programs", HKEY_LOCAL_MACHINE); - AddFolderFromReg("Programs", HKEY_CURRENT_USER); + AddFolderFromReg(HKEY_LOCAL_MACHINE); + AddFolderFromReg(HKEY_CURRENT_USER); ShowWindow(hwndDlg, SW_SHOWNA); SetFocus(GetDlgItem(hwParent, IDOK)); @@ -264,11 +264,14 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { SendMessage(hwDirList, LB_GETTEXT, SendMessage(hwDirList, LB_GETCURSEL, 0, 0), (WPARAM)buf); if (autoadd) - { - lstrcat(buf, "\\"); - lstrcat(buf, progname); - } - SendMessage(hwLocation, WM_SETTEXT, 0, (LPARAM) buf); + lstrcat(lstrcat(buf, "\\"), progname); + SetWindowText(hwLocation, buf); + } + else if (LOWORD(wParam) == IDC_CHECK && HIWORD(wParam) == BN_CLICKED) + { + BOOL bEnable = IsDlgButtonChecked(hwStartMenuSelect, IDC_CHECK) != BST_CHECKED; + EnableWindow(hwDirList, bEnable); + EnableWindow(hwLocation, bEnable); } break; case WM_USER+666: @@ -277,13 +280,13 @@ BOOL CALLBACK dlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) pushstring("cancel"); else { - if (SendMessage(hwCheckBox, BM_GETCHECK, 0, 0) == BST_CHECKED) + if (IsDlgButtonChecked(hwStartMenuSelect, IDC_CHECK) == BST_CHECKED) { - buf[0] = '>'; - buf[1] = 0; + short *sbuf = (short *) buf; + *sbuf = *(short *) ">"; } else *buf = 0; - SendMessage(hwLocation, WM_GETTEXT, MAX_PATH, (LPARAM) buf + lstrlen(buf)); + GetWindowText(hwLocation, buf + (*buf ? 1 : 0), MAX_PATH); pushstring(buf); } break; @@ -297,16 +300,18 @@ BOOL WINAPI _DllMainCRTStartup(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lp return TRUE; } -void AddFolderFromReg(char *name, HKEY rootKey) +void AddFolderFromReg(HKEY rootKey) { DWORD dwResult; DWORD dwLength = MAX_PATH; DWORD dwType = REG_SZ; HKEY hKey; - char szName[20] = "Common "; + //DWORD idx; + WIN32_FIND_DATA FileData; + HANDLE hSearch; - lstrcpy(szName + 7, name); + char szName[20] = "Common Programs"; dwResult = RegOpenKeyEx( rootKey, @@ -329,17 +334,8 @@ void AddFolderFromReg(char *name, HKEY rootKey) RegCloseKey(hKey); } - PopulateListWithDir(buf); -} - -void PopulateListWithDir(char *dir) -{ - //DWORD idx; - WIN32_FIND_DATA FileData; - HANDLE hSearch; - - lstrcat(dir, "\\*."); - hSearch = FindFirstFile(dir, &FileData); + lstrcat(buf, "\\*."); + hSearch = FindFirstFile(buf, &FileData); if (hSearch != INVALID_HANDLE_VALUE) do { if (*(WORD*)FileData.cFileName != *(WORD*)".") diff --git a/Plugins/StartMenu.dll b/Plugins/StartMenu.dll index 93ce65c60d81a25df03940c606fa6acf4777d41e..d613d1748c3ec225f1904480a24b616a5b2c52b8 100644 GIT binary patch delta 3010 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