From: <mie...@us...> - 2013-07-12 02:59:07
|
Revision: 9362 http://sourceforge.net/p/oorexx/code-0/9362 Author: miesfeld Date: 2013-07-12 02:59:04 +0000 (Fri, 12 Jul 2013) Log Message: ----------- ooDialog - continue work on ooDialog.exe Modified Paths: -------------- ooDialog/trunk/ooDialog/ooDialogWinMain.rc ooDialog/trunk/ooDialog/oodExecutable.hpp ooDialog/trunk/ooDialog/oodMain.cpp ooDialog/trunk/ooDialog/oodWinMain.cpp Modified: ooDialog/trunk/ooDialog/ooDialogWinMain.rc =================================================================== --- ooDialog/trunk/ooDialog/ooDialogWinMain.rc 2013-07-11 15:10:13 UTC (rev 9361) +++ ooDialog/trunk/ooDialog/ooDialogWinMain.rc 2013-07-12 02:59:04 UTC (rev 9362) @@ -69,35 +69,42 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -IDD_FILEASSOC DIALOGEX 0, 0, 318, 216 +IDD_FILEASSOC DIALOGEX 0, 0, 362, 278 STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SHELLFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU CAPTION "Configure ooDialog.exe File Associations" FONT 8, "Ms Shell Dlg", 400, 0, 1 { - CONTROL "Associating File Extensions with ooDialog.exe for All Users", IDC_GB_ASSOCIATE, WC_BUTTON, BS_GROUPBOX, 11, 10, 296, 56 + CONTROL "Associating File Extensions with ooDialog.exe for All Users", IDC_GB_ASSOCIATE, WC_BUTTON, BS_GROUPBOX, 11, 10, 341, 90 CONTROL "File Type:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 25, 26, 31, 8 - CONTROL "ooDialog.RexxScript", IDC_ST_FTYPE, WC_STATIC, NOT WS_GROUP | SS_LEFT, 60, 26, 67, 8 - CONTROL "Running As Administrator:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 149, 26, 83, 8 - CONTROL "False", IDC_ST_RUNAS, WC_STATIC, NOT WS_GROUP | SS_LEFT, 245, 26, 25, 8 + CONTROL "ooDialog.RexxScript", IDC_ST_FTYPE, WC_STATIC, NOT WS_GROUP | SS_LEFT, 110, 26, 67, 8 + CONTROL "Running As Administrator:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 192, 26, 83, 8 + CONTROL "False", IDC_ST_RUNAS, WC_STATIC, NOT WS_GROUP | SS_LEFT, 292, 26, 25, 8 CONTROL "Scope:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 25, 43, 35, 8 - CONTROL "All Users", IDC_ST_SCOPE, WC_STATIC, NOT WS_GROUP | SS_LEFT, 60, 43, 50, 8 - CONTROL "Process is Elevated:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 149, 43, 83, 8 - CONTROL "False", IDC_ST_ELEVATED, WC_STATIC, NOT WS_GROUP | SS_LEFT, 245, 43, 25, 8 - CONTROL "Extension:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 19, 78, 35, 8 - CONTROL "", IDC_EDIT_EXTENSION, WC_EDIT, WS_BORDER | WS_TABSTOP | ES_AUTOHSCROLL, 55, 77, 33, 12 - CONTROL "Add", IDC_PB_ADD_EXTENSION, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 92, 76, 43, 14 - CONTROL "Suggested\nExtensions", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 14, 100, 55, 19 - CONTROL "", IDC_LB_SUGGESTED, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_NOTIFY, 14, 118, 55, 59 - CONTROL "Add -->", IDC_PB_ADD_CURRENT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 76, 124, 50, 14 - CONTROL "<-- Remove", IDC_PB_REMOVE_CURRENT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 76, 143, 50, 14 - CONTROL "Currently\nAssociated", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 132, 100, 55, 19 - CONTROL "", IDC_LB_CURRENT, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_NOTIFY, 132, 118, 55, 59 - CONTROL "Add -->", IDC_PB_ADD_PATHEXT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 194, 124, 50, 14 - CONTROL "Remove", IDC_PB_REMOVE_PATHEXT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 194, 143, 50, 14 - CONTROL "Currently\nin PATHEXT", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 250, 100, 55, 19 - CONTROL "", IDC_LB_PATHEXT, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_NOTIFY, 250, 118, 55, 59 - CONTROL "OK", IDOK, WC_BUTTON, WS_TABSTOP | BS_DEFPUSHBUTTON, 203, 192, 50, 14 - CONTROL "Cancel", IDCANCEL, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 258, 192, 50, 14 + CONTROL "All Users", IDC_ST_SCOPE, WC_STATIC, NOT WS_GROUP | SS_LEFT, 110, 43, 67, 8 + CONTROL "Process is Elevated:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 192, 43, 83, 8 + CONTROL "False", IDC_ST_ELEVATED, WC_STATIC, NOT WS_GROUP | SS_LEFT, 292, 43, 25, 8 + CONTROL "File Type is Registered:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 25, 61, 78, 8 + CONTROL "True", IDC_ST_REGISTERED, WC_STATIC, NOT WS_GROUP | SS_LEFT, 110, 61, 18, 8 + CONTROL "Registered For All Users?", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 25, 79, 80, 8 + CONTROL "Yes", IDC_ST_REGALL, WC_STATIC, NOT WS_GROUP | SS_LEFT, 110, 79, 12, 8 + CONTROL "Registered For Current User?", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 192, 79, 95, 8 + CONTROL "Yes", IDC_ST_REGCURRENT, WC_STATIC, NOT WS_GROUP | SS_LEFT, 292, 79, 25, 8 + CONTROL "Un-register ooDialog File Type", IDC_PB_REGISTER, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 19, 109, 176, 14 + CONTROL "Extension:", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_LEFT, 19, 137, 35, 8 + CONTROL "", IDC_EDIT_EXTENSION, WC_EDIT, NOT WS_BORDER | ES_AUTOHSCROLL, 55, 136, 33, 12 + CONTROL "Add", IDC_PB_ADD_EXTENSION, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 92, 135, 43, 14 + CONTROL "Suggested\nExtensions", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 10, 155, 70, 19 + CONTROL "", IDC_LB_SUGGESTED, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | NOT WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_USETABSTOPS | LBS_NOTIFY, 10, 173, 70, 75 + CONTROL "Add -->", IDC_PB_ADD_CURRENT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 89, 179, 50, 14 + CONTROL "<-- Remove", IDC_PB_REMOVE_CURRENT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 89, 198, 50, 14 + CONTROL "Currently\nAssociated", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 146, 155, 70, 19 + CONTROL "", IDC_LB_CURRENT, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | NOT WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_USETABSTOPS | LBS_NOTIFY, 146, 173, 70, 75 + CONTROL "Add -->", IDC_PB_ADD_PATHEXT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 223, 179, 50, 14 + CONTROL "Remove", IDC_PB_REMOVE_PATHEXT, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 223, 198, 50, 14 + CONTROL "Currently\nin PATHEXT", IDC_STATIC, WC_STATIC, NOT WS_GROUP | SS_CENTER, 282, 155, 70, 19 + CONTROL "", IDC_LB_PATHEXT, WC_LISTBOX, WS_TABSTOP | WS_VSCROLL | NOT WS_BORDER | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_USETABSTOPS | LBS_NOTIFY, 282, 173, 70, 75 + CONTROL "Done", IDOK, WC_BUTTON, WS_TABSTOP | BS_DEFPUSHBUTTON, 247, 254, 50, 14 + CONTROL "Help", IDHELP, WC_BUTTON, WS_TABSTOP | BS_PUSHBUTTON, 302, 254, 50, 14 } Modified: ooDialog/trunk/ooDialog/oodExecutable.hpp =================================================================== --- ooDialog/trunk/ooDialog/oodExecutable.hpp 2013-07-11 15:10:13 UTC (rev 9361) +++ ooDialog/trunk/ooDialog/oodExecutable.hpp 2013-07-12 02:59:04 UTC (rev 9362) @@ -61,28 +61,32 @@ #define IDC_ST_DISPLAY_ICON 1001 #define IDC_ST_RUNAS 1002 #define IDC_CK_FILEASSOC 1003 -#define IDC_ST_FTYPE 1004 -#define IDC_EDIT 1005 -#define IDC_ST_ELEVATED 1006 -#define IDC_ST_SHORT_MSG 1007 -#define IDC_GB_SERVICES 1008 -#define IDC_PB_REMOVE_PATHEXT 1009 -#define IDC_EDIT_EXTENSION 1010 -#define IDC_LB_SUGGESTED 1011 -#define IDC_LB_CURRENT 1012 -#define IDC_LB_PATHEXT 1013 -#define IDC_PB_ADD_CURRENT 1014 -#define IDC_PB_REMOVE_CURRENT 1015 -#define IDC_PB_ADD_PATHEXT 1016 -#define IDC_RB_CURRENT 1017 -#define IDC_PB_ADD_EXTENSION 1018 -#define IDC_RB_ALL 1019 -#define IDC_PB_CONFIGURE 1020 -#define IDC_ST_INADMINGROUP 1021 -#define IDC_ST_ISRUNASADMIN 1022 -#define IDC_ST_ISELEVATED 1023 -#define IDC_ST_IL 1024 -#define IDC_GB_ASSOCIATE 1025 +#define IDC_ST_REGISTERED 1004 +#define IDC_ST_FTYPE 1005 +#define IDC_EDIT 1006 +#define IDC_ST_REGALL 1007 +#define IDC_ST_ELEVATED 1008 +#define IDC_ST_SHORT_MSG 1009 +#define IDC_GB_SERVICES 1010 +#define IDC_ST_REGCURRENT 1011 +#define IDC_PB_REMOVE_PATHEXT 1012 +#define IDC_EDIT_EXTENSION 1013 +#define IDC_LB_SUGGESTED 1014 +#define IDC_LB_CURRENT 1015 +#define IDC_LB_PATHEXT 1016 +#define IDC_PB_ADD_CURRENT 1017 +#define IDC_PB_REMOVE_CURRENT 1018 +#define IDC_PB_ADD_PATHEXT 1019 +#define IDC_PB_REGISTER 1020 +#define IDC_RB_CURRENT 1021 +#define IDC_PB_ADD_EXTENSION 1022 +#define IDC_RB_ALL 1023 +#define IDC_PB_CONFIGURE 1024 +#define IDC_ST_INADMINGROUP 1025 +#define IDC_ST_ISRUNASADMIN 1026 +#define IDC_ST_ISELEVATED 1027 +#define IDC_ST_IL 1028 +#define IDC_GB_ASSOCIATE 1029 @@ -139,11 +143,19 @@ typedef struct _assocArguments { + char progID[MAX_PROGID]; HINSTANCE hInstance; // This executable's instance - char progID[MAX_PROGID]; + HFONT lbFont; + HWND lbSuggested; + HWND lbCurrent; + HWND lbPathExt; + HWND pbRegister; bool allUsers; // If true file associations is for all users, otherwise current user bool isRunAsAdmin; bool isElevated; + bool ftypeIsRegistered; + bool registeredAllUsers; + bool registeredCurUsers; } assocArguments; typedef assocArguments *pAssocArguments; Modified: ooDialog/trunk/ooDialog/oodMain.cpp =================================================================== --- ooDialog/trunk/ooDialog/oodMain.cpp 2013-07-11 15:10:13 UTC (rev 9361) +++ ooDialog/trunk/ooDialog/oodMain.cpp 2013-07-12 02:59:04 UTC (rev 9362) @@ -182,6 +182,41 @@ return false; } +void checkRegistration(char *progID) +{ + char value[MAX_HKEY_VALUE] = {'\0'}; + uint32_t maxValue = MAX_HKEY_VALUE; + HKEY hKey, hSubkey; + + // See if our progID is a subkey of classes root + if( RegOpenKeyEx(HKEY_CLASSES_ROOT, progID, 0, KEY_QUERY_VALUE , &hKey) == ERROR_SUCCESS ) + { + printf("%s is registered\n", progID); + + char buf[MEDIUM_BUF_SIZE]; + + strcpy(buf, "SOFTWARE\\Classes\\"); + strcat(buf, progID); + + // See if progID is a subkey for local machine + if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, buf, 0, KEY_QUERY_VALUE, &hSubkey) == ERROR_SUCCESS ) + { + printf("%s is registered for all users\n", progID); + + RegCloseKey(hSubkey); + } + + // See if progID is a subkey for current user + if( RegOpenKeyEx(HKEY_CURRENT_USER, buf, 0, KEY_QUERY_VALUE, &hSubkey) == ERROR_SUCCESS ) + { + printf("%s is registered for current user\n", progID); + RegCloseKey(hSubkey); + } + + RegCloseKey(hKey); + } +} + void qualifyExtensionInfo(char *keyName, pExtensionInfo rec, char *progID) { char value[MAX_HKEY_VALUE] = {'\0'}; @@ -279,7 +314,7 @@ // We only need the number of subkeys. uint32_t retCode = RegQueryInfoKey(HKEY_CLASSES_ROOT, NULL, NULL, NULL, (LPDWORD)&cSubKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL); - + printf("RegQueryInfoKey() retCode=%d retCode=0x%08x count=%d\n", retCode, retCode, cSubKeys); uint32_t maxName; // Size of name buffer char keyName[MAX_HKEY_NAME]; // Buffer for subkey name @@ -397,6 +432,12 @@ pExtensionInfo current = &recs[i]; printf("%s\n", current->displayName); } + + printf("\ncheck registration SlickEdit\n"); + checkRegistration("SlickEdit"); + + printf("\ncheck registration soap\n"); + checkRegistration("soap"); return 0; } Modified: ooDialog/trunk/ooDialog/oodWinMain.cpp =================================================================== --- ooDialog/trunk/ooDialog/oodWinMain.cpp 2013-07-11 15:10:13 UTC (rev 9361) +++ ooDialog/trunk/ooDialog/oodWinMain.cpp 2013-07-12 02:59:04 UTC (rev 9362) @@ -644,31 +644,31 @@ RegCloseKey(hKey); } - char *prefix = "-- "; + char *prefix = "- - "; if ( rec->allUsers ) { if ( rec->curUser ) { - prefix = "** "; + prefix = "* * "; } else if ( rec->curUserOther ) { - prefix = "*+ "; + prefix = "* + "; } else { - prefix = "*- "; + prefix = "* - "; } } else if ( rec->curUser ) { if ( rec->allUsersOther ) { - prefix = "+* "; + prefix = "+ * "; } else { - prefix = "-* "; + prefix = "- * "; } } else @@ -678,16 +678,16 @@ { if ( rec->curUserOther ) { - prefix = "++ "; + prefix = "+ + "; } else { - prefix = "+- "; + prefix = "+ - "; } } else if ( rec->curUser ) { - prefix = "-+ "; + prefix = "- + "; } } @@ -813,9 +813,48 @@ return recs; } +void checkRegistration(pAssocArguments paa) +{ + char value[MAX_HKEY_VALUE] = {'\0'}; + uint32_t maxValue = MAX_HKEY_VALUE; + HKEY hKey, hSubkey; -bool addSuggestedExt(HWND hDlg, HWND hLB, pAssocArguments paa) + paa->ftypeIsRegistered = false; + paa->registeredAllUsers = false; + paa->registeredCurUsers = false; + + // See if our progID is a subkey of classes root + if( RegOpenKeyEx(HKEY_CLASSES_ROOT, OODIALOG_PROGID, 0, KEY_QUERY_VALUE , &hKey) == ERROR_SUCCESS ) + { + paa->ftypeIsRegistered = true; + + char buf[MEDIUM_BUF_SIZE]; + + strcpy(buf, "SOFTWARE\\Classes\\"); + strcat(buf, OODIALOG_PROGID); + + // See if progID is a subkey for local machine + if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, buf, 0, KEY_QUERY_VALUE, &hSubkey) == ERROR_SUCCESS ) + { + paa->registeredAllUsers = true; + RegCloseKey(hSubkey); + } + + // See if progID is a subkey for current user + if( RegOpenKeyEx(HKEY_CURRENT_USER, buf, 0, KEY_QUERY_VALUE, &hSubkey) == ERROR_SUCCESS ) + { + paa->registeredCurUsers = true; + RegCloseKey(hSubkey); + } + + RegCloseKey(hKey); + } +} + +bool addSuggestedExt(HWND hDlg, pAssocArguments paa) { + HWND hLB = paa->lbSuggested; + for ( size_t i = 0; i < OOD_SUGGESTED_EXT_COUNT; i++ ) { pExtensionInfo info = (pExtensionInfo)LocalAlloc(LPTR, sizeof(extensionInfo)); @@ -837,9 +876,11 @@ return true; } -void addCurrentExt(HWND hDlg, HWND hLB, pAssocArguments paa) +void addCurrentExt(HWND hDlg, pAssocArguments paa) { + HWND hLB = paa->lbCurrent; size_t count = 0; + pExtensionInfo recs = getExtensionRecords(hDlg, paa->progID, &count); for ( size_t i = 0; i < count; i++ ) @@ -913,18 +954,191 @@ } +void setAssocControls(HWND hDlg, pAssocArguments paa, bool flag) +{ + BOOL enable = flag ? TRUE : FALSE; + + EnableWindow(paa->lbCurrent, enable); + EnableWindow(paa->lbSuggested, enable); + EnableWindow(paa->lbPathExt, enable); + + EnableWindow(GetDlgItem(hDlg, IDC_EDIT_EXTENSION), enable); + EnableWindow(GetDlgItem(hDlg, IDC_PB_ADD_EXTENSION), enable); + EnableWindow(GetDlgItem(hDlg, IDC_PB_ADD_CURRENT), enable); + EnableWindow(GetDlgItem(hDlg, IDC_PB_REMOVE_CURRENT), enable); + EnableWindow(GetDlgItem(hDlg, IDC_PB_ADD_PATHEXT), enable); + EnableWindow(GetDlgItem(hDlg, IDC_PB_REMOVE_PATHEXT), enable); +} + +void setRegisterdState(HWND hDlg, pAssocArguments paa) +{ + if ( ! paa->ftypeIsRegistered ) + { + if ( paa->allUsers ) + { + SetWindowText(paa->pbRegister, "Register ooDialog File Type For All Users"); + } + else + { + SetWindowText(paa->pbRegister, "Register ooDialog File Type For the Current User"); + } + + EnableWindow(paa->pbRegister, TRUE); + setAssocControls(hDlg, paa, false); + return; + } + + if ( paa->allUsers && paa->registeredAllUsers ) + { + SetWindowText(paa->pbRegister, "Un-register ooDialog File Type For All Users"); + if ( ! paa->isRunAsAdmin ) + { + EnableWindow(paa->pbRegister, FALSE); + } + } + else if ( ! paa->allUsers && paa->registeredCurUsers ) + { + SetWindowText(paa->pbRegister, "Un-register ooDialog File Type For the Current User"); + } + else + { + SetWindowText(paa->pbRegister, "N/A"); + EnableWindow(paa->pbRegister, FALSE); + } + + if ( paa->isRunAsAdmin ) + { + setAssocControls(hDlg, paa, true); + } + else + { + if ( paa->registeredAllUsers ) + { + // When our ftype is registered for all users, it doesn't matter if we + // are running as admin or not, we can set extension associations. + setAssocControls(hDlg, paa, true); + } + else if ( paa->registeredAllUsers ) + { + setAssocControls(hDlg, paa, true); + } + else + { + setAssocControls(hDlg, paa, false); + } + } +} + +HFONT fontCreate(int32_t fontSize) +{ + int width = 0; // average character width + int escapement = 0; // angle of escapement + int orientation = 0; // base-line orientation angle + int weight = FW_NORMAL; // font weight + BOOL italic = FALSE; // italic attribute option + BOOL underline = FALSE; // underline attribute option + BOOL strikeOut = FALSE; // strikeout attribute option + uint32_t charSet = DEFAULT_CHARSET; // character set identifier + uint32_t outputPrecision = OUT_TT_PRECIS; // output precision + uint32_t clipPrecision = CLIP_DEFAULT_PRECIS; // clipping precision + uint32_t quality = DEFAULT_QUALITY; // output quality + uint32_t pitchAndFamily = FF_DONTCARE; // pitch and family + + HDC hdc = CreateDC("DISPLAY", NULL, NULL, NULL); + int height = -MulDiv(fontSize, GetDeviceCaps(hdc, LOGPIXELSY), 72); + DeleteDC(hdc); + + HFONT f = CreateFont(height, width, escapement, orientation, weight, italic, underline, strikeOut, + charSet, outputPrecision, clipPrecision, quality, pitchAndFamily, "Courier New"); + return f; +} + void setStaticText(HWND hDlg, pAssocArguments paa) { SetDlgItemText(hDlg, IDC_GB_ASSOCIATE, paa->allUsers ? - "Associating File Extensions with ooDialog.exe for All Users" : - "Associating File Extensions with ooDialog.exe for the Current User"); + "Associating File Extensions with ooDialog.exe File Type for All Users" : + "Associating File Extensions with ooDialog.exe File Type for the Current User"); SetDlgItemText(hDlg, IDC_ST_FTYPE, paa->progID); SetDlgItemText(hDlg, IDC_ST_SCOPE, paa->allUsers ? "All Users" : "CurrentUser"); SetDlgItemText(hDlg, IDC_ST_RUNAS, paa->isRunAsAdmin ? "True" : "False"); SetDlgItemText(hDlg, IDC_ST_ELEVATED, paa->isElevated ? "True" : "False"); + SetDlgItemText(hDlg, IDC_ST_REGISTERED, paa->ftypeIsRegistered ? "True" : "False"); + SetDlgItemText(hDlg, IDC_ST_REGALL, paa->registeredAllUsers ? "Yes" : "No"); + SetDlgItemText(hDlg, IDC_ST_REGCURRENT, paa->registeredCurUsers ? "Yes" : "No"); } +void setUp(HWND hDlg, pAssocArguments paa) +{ + setWindowPtr(hDlg, GWLP_USERDATA, (LONG_PTR)paa); + + paa->lbSuggested = GetDlgItem(hDlg, IDC_LB_SUGGESTED); + paa->lbCurrent = GetDlgItem(hDlg, IDC_LB_CURRENT); + paa->lbPathExt = GetDlgItem(hDlg, IDC_LB_PATHEXT); + paa->pbRegister = GetDlgItem(hDlg, IDC_PB_REGISTER); + + HFONT font = fontCreate(8); + + SendMessage(paa->lbSuggested, WM_SETFONT, (WPARAM)font, FALSE); + SendMessage(paa->lbCurrent, WM_SETFONT, (WPARAM)font, FALSE); + SendMessage(paa->lbPathExt, WM_SETFONT, (WPARAM)font, FALSE); + + setDlgIcon(hDlg, paa->hInstance); + setStaticText(hDlg, paa); + + setRegisterdState(hDlg, paa); +} + +INT_PTR pbRegister(HWND hDlg) +{ + + + return TRUE; +} + +INT_PTR handleButtonClick(HWND hDlg, WPARAM wParam, LPARAM lParam) +{ + + switch ( LOWORD(wParam) ) + { + case IDOK: + case IDCANCEL: + { + EndDialog(hDlg, wParam); + } + return TRUE; + + case IDC_PB_REGISTER : + return pbRegister(hDlg); + break; + + case IDC_PB_ADD_EXTENSION : + + break; + + case IDC_PB_ADD_CURRENT : + + break; + + case IDC_PB_REMOVE_CURRENT : + + break; + + case IDC_PB_ADD_PATHEXT : + + break; + + case IDC_PB_REMOVE_PATHEXT : + + break; + + + default: + break; + } + return FALSE; +} + /** * HKEY_CURRENT_USER \ Environment * @@ -946,35 +1160,26 @@ // Query the registry to see if ooDialog ftype / progID is already // registered. If so ... - + checkRegistration(paa); strcpy(paa->progID, "SlickEdit"); // temp for testing - setDlgIcon(hDlg, paa->hInstance); - setStaticText(hDlg, paa); + setUp(hDlg, paa); - addSuggestedExt(hDlg, GetDlgItem(hDlg, IDC_LB_SUGGESTED), paa); - addCurrentExt(hDlg, GetDlgItem(hDlg, IDC_LB_CURRENT), paa); + addSuggestedExt(hDlg, paa); + addCurrentExt(hDlg, paa); - setWindowPtr(hDlg, GWLP_USERDATA, (LONG_PTR)paa); - return TRUE; } switch ( uMsg ) { case WM_COMMAND: - switch ( LOWORD(wParam) ) + // This is okay because we do not have any menus: + if ( HIWORD(wParam) == BN_CLICKED ) { - case IDOK: - case IDCANCEL: - { - EndDialog(hDlg, wParam); - } - return TRUE; - - default: - break; + return handleButtonClick(hDlg, wParam, lParam); } + break; default: break; |