//================================================================================================ //---------------------------------------------+++--> Dialog Procedure of Miscellaneous Tab Dialog: INT_PTR CALLBACK Page_Misc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) //------+++--> { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); if(id==IDCB_CLOSECAL) { if(IsDlgButtonChecked(hDlg, IDCB_CALTOPMOST)) CheckDlgButton(hDlg, IDCB_CALTOPMOST, FALSE); }else if(id==IDCB_CALTOPMOST) { if(IsDlgButtonChecked(hDlg, IDCB_CLOSECAL)) CheckDlgButton(hDlg, IDCB_CLOSECAL, FALSE); }else if(id==IDCB_USECALENDAR) { UINT iter,enable=IsDlgButtonChecked(hDlg,IDCB_USECALENDAR); for(iter=GROUP_CALENDAR; iter<=GROUP_CALENDAR_END; ++iter) EnableDlgItem(hDlg,iter,enable); SendPSChanged(hDlg); return TRUE; }else if(id==IDC_CALCOLORS) { INITCOMMONCONTROLSEX icex = {sizeof(icex), ICC_DATE_CLASSES}; InitCommonControlsEx(&icex); DialogBox(NULL, MAKEINTRESOURCE(IDD_CALENDAR_COLOR), hDlg, Window_CalendarColorConfigDlg); } if((id==IDC_FIRSTWEEK&&code==CBN_SELCHANGE) || (id==IDC_FIRSTDAY&&code==CBN_SELCHANGE) || (id==IDC_CALMONTHS&&code==EN_CHANGE) || (id==IDC_CALMONTHSPAST&&code==EN_CHANGE) || id==IDC_OLDCALENDAR) SendPSChanged(hDlg); else if(((id==IDCB_CLOSECAL) || // IF Anything Happens to Anything, (id==IDCB_SHOWWEEKNUMS) || //--+++--> Send Changed Message. (id==IDCB_SHOW_DOY) || (id==IDCB_TRANS2KICONS) || (id==IDCB_MONOFF_ONLOCK) || (id==IDCB_MULTIMON) || (id==IDCB_CALTOPMOST)) && (code==BST_CHECKED||code==BST_UNCHECKED)) { SendPSChanged(hDlg); } return TRUE; } case WM_NOTIFY: switch(((NMHDR*)lParam)->code) { case PSN_APPLY: OnApply(hDlg); } return TRUE; } return FALSE; }
/*------------------------------------------------ clicked "..." button --------------------------------------------------*/ void OnBrowseFile(HWND hDlg, WORD id) { char filter[80], deffile[MAX_PATH], fname[MAX_PATH]; filter[0] = filter[1] = 0; if(id == IDC_BROWSEHELP) { str0cat(filter, "HTML"); str0cat(filter, "*.html;*.htm"); } else if(id == IDC_BROWSEHELP2CH) { str0cat(filter, "HTML"); str0cat(filter, "*.html;*.htm"); } else if(id == IDC_BROWSELANGDLL) { str0cat(filter, MyString(IDS_LANGDLLFILE)); str0cat(filter, "lang*.dll"); } GetDlgItemText(hDlg, id - 1, deffile, MAX_PATH); if(!SelectMyFile(hDlg, filter, 0, deffile, fname)) // propsheet.c return; SetDlgItemText(hDlg, id - 1, fname); PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); }
/*------------------------------------------------ dialog procedure --------------------------------------------------*/ INT_PTR CALLBACK PageMiscProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch (id) { case IDC_NOCLOCK: g_bApplyClock = TRUE; SendPSChanged(hDlg); break; case IDC_MCIWAVE: case IDC_TASKBARRESTART: #if TC_ENABLE_DESKTOPICON case IDC_DESKTOPICON: case IDC_TRANSDESKTOPICONBK: #endif SendPSChanged(hDlg); break; case IDC_DELAYSTART: if(code == EN_CHANGE) SendPSChanged(hDlg); break; case IDC_BROWSEHELP: OnBrowse(hDlg); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "Misc"); break; } return TRUE; } return FALSE; }
/*------------------------------------------------ 「デスクトップカレンダー」の自動更新 --------------------------------------------------*/ void OnDeskcal(HWND hDlg) { BOOL b; int i; b = IsDlgButtonChecked(hDlg, IDC_DESKCAL); for(i = IDC_LABDESKCAL; i <= IDC_WATCHWALL; i++) EnableDlgItem(hDlg, i, b); SendPSChanged(hDlg); }
/*------------------------------------------------ 定期的にネットワーク確認 --------------------------------------------------*/ void OnCheckNet(HWND hDlg) { BOOL b; int i; b = IsDlgButtonChecked(hDlg, IDC_CHECKNETWORK); for(i = IDC_CHECKNETINTERVAL; i <= IDC_NETCHECKSTATIC; i++) EnableDlgItem(hDlg, i, b); SendPSChanged(hDlg); }
/*------------------------------------------------ "Detail..." --------------------------------------------------*/ void OnDetail(HWND hDlg) { int r, ilang; ilang = CBGetItemData(hDlg, IDC_LOCALE, CBGetCurSel(hDlg, IDC_LOCALE)); r = (int)DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_FORMAT2), GetParent(hDlg), DlgProcFormat2, (LPARAM)ilang); if(r == IDOK) SendPSChanged(hDlg); }
/*------------------------------------------------ "..." button : choose color --------------------------------------------------*/ void OnChooseColor(HWND hDlg, int id) { int idCombo = id - 1; // common/combobox.c if(ChooseColorWithCombo(hDlg, idCombo)) { PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); } }
/*------------------------------------------------ "Day..." --------------------------------------------------*/ void OnDay(HWND hDlg) { int nOld, nNew; nOld = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECDAY, NULL, FALSE); nNew = SetAutoExecDay(hDlg, nOld); if(nNew != nOld) { SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECDAY, nNew, FALSE); SendPSChanged(hDlg); } }
/*------------------------------------------------ "12H" combobox --------------------------------------------------*/ void On12Hour(HWND hDlg) { BOOL b; b = IsDlgButtonChecked(hDlg, IDC_12HOUR); if(!b) { CheckDlgButton(hDlg, IDC_AMPM, 0); if(!IsDlgButtonChecked(hDlg, IDC_CUSTOM)) OnFormatCheck(hDlg, 0); } SendPSChanged(hDlg); }
/*------------------------------------------------ clicked "..." button --------------------------------------------------*/ void OnBrowse(HWND hDlg) { char deffile[MAX_PATH], fname[MAX_PATH]; char *filter = "HTML\0*.html;*.htm\0\0"; GetDlgItemText(hDlg, IDC_HELPURL, deffile, MAX_PATH); if(!SelectMyFile(g_hInst, hDlg, filter, 0, deffile, fname)) return; SetDlgItemText(hDlg, IDC_HELPURL, fname); PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); }
/*------------------------------------------------ When clicked "year" -- "am/pm" --------------------------------------------------*/ void OnFormatCheck(HWND hDlg, WORD id) { char s[BUFSIZE_FORMAT]; int parts[15]; int i; for(i = IDC_YEAR4; i <= IDC_AMPM; i++) { parts[i-IDC_YEAR4] = IsDlgButtonChecked(hDlg, i); } if(id == IDC_YEAR4 || id == IDC_YEAR) { if(id == IDC_YEAR4 && parts[PART_YEAR4]) { CheckRadioButton(hDlg, IDC_YEAR4, IDC_YEAR, IDC_YEAR4); parts[PART_YEAR] = FALSE; } if(id == IDC_YEAR && parts[PART_YEAR]) { CheckRadioButton(hDlg, IDC_YEAR4, IDC_YEAR, IDC_YEAR); parts[PART_YEAR4] = FALSE; } } if(id == IDC_MONTH || id == IDC_MONTHS) { if(id == IDC_MONTH && parts[PART_MONTH]) { CheckRadioButton(hDlg, IDC_MONTH, IDC_MONTHS, IDC_MONTH); parts[PART_MONTHS] = FALSE; } if(id == IDC_MONTHS && parts[PART_MONTHS]) { CheckRadioButton(hDlg, IDC_MONTH, IDC_MONTHS, IDC_MONTHS); parts[PART_MONTH] = FALSE; } } if(id == IDC_AMPM) { CheckDlgButton(hDlg, IDC_12HOUR, 1); On12Hour(hDlg); } AutoFormat(s, parts); // common/autoformat.c SetDlgItemText(hDlg, IDC_FORMAT, s); SendPSChanged(hDlg); }
/*------------------------------------------------ Dialog Procedure for the "Format" page --------------------------------------------------*/ INT_PTR CALLBACK PageFormatProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_LOCALE: if(code == CBN_SELCHANGE) OnLocale(hDlg); break; case IDC_FORMAT: #if TC_ENABLE_SYSINFO case IDC_SYSII: #endif if(code == EN_CHANGE) SendPSChanged(hDlg); break; case IDC_CUSTOM: OnCustom(hDlg, TRUE); break; case IDC_12HOUR: On12Hour(hDlg); break; case IDC_FORMATDETAIL: OnDetail(hDlg); break; } if(IDC_YEAR4 <= id && id <= IDC_AMPM) OnFormatCheck(hDlg, id); return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "Format"); break; } return TRUE; } return FALSE; }
/*------------------------------------------------ browse bitmap file --------------------------------------------------*/ void OnBrowse(HWND hDlg) { char deffile[MAX_PATH], fname[MAX_PATH]; char *filter = "Bitmap (*.bmp)\0*.bmp\0\0"; GetDlgItemText(hDlg, IDC_ANALOGBMP, deffile, MAX_PATH); // select file : common/selectfile.c if(SelectMyFile(g_hInst, hDlg, filter, 0, deffile, fname)) { SetDlgItemText(hDlg, IDC_ANALOGBMP, fname); PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); } }
/*------------------------------------------------ select file --------------------------------------------------*/ void OnBrowse(HWND hDlg) { char deffile[MAX_PATH], fname[MAX_PATH]; GetDlgItemText(hDlg, IDC_MOUSEOPT, deffile, MAX_PATH); // common/selectfile.c if(!SelectMyFile(g_hInst, hDlg, "All (*.*)\0*.*\0\0", 0, deffile, fname)) return; SetDlgItemText(hDlg, IDC_MOUSEOPT, fname); PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); }
/*------------------------------------------------ "Min..." --------------------------------------------------*/ void OnMin(HWND hDlg) { int nOld1, nOld2, nNew1 = 0, nNew2 = 0; nOld1 = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN1, NULL, FALSE); nOld2 = GetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN2, NULL, FALSE); SetAutoExecMin(hDlg, nOld1, nOld2, &nNew1, &nNew2); if(nNew1 != nOld1 || nNew2 != nOld2) { SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN1, nNew1, FALSE); SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN2, nNew2, FALSE); SendPSChanged(hDlg); } }
/*------------------------------------------------ 「...」 デスクトップカレンダーの参照 --------------------------------------------------*/ void OnSanshoDeskcal(HWND hDlg, WORD id) { char filter[] = "Deskcal.exe\0Deskcal.exe\0"; char deffile[MAX_PATH], fname[MAX_PATH]; //HFILE hf = HFILE_ERROR; GetDlgItemText(hDlg, id - 1, deffile, MAX_PATH); if(strlen(deffile) > 10 && strcmp(deffile + (strlen(deffile) - 10), " -OnlyDraw") == 0) deffile[strlen(deffile) - 10] = 0; if(!SelectMyFile(hDlg, filter, 0, deffile, fname)) // propsheet.c return; strcat(fname, " -OnlyDraw"); SetDlgItemText(hDlg, id - 1, fname); PostMessage(hDlg, WM_NEXTDLGCTL, 1, FALSE); SendPSChanged(hDlg); }
BOOL CALLBACK PageAboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_CTLCOLORSTATIC: { int id; HDC hdc; hdc = (HDC)wParam; id = GetDlgCtrlID((HWND)lParam); if(id == IDC_MAILTO || id == IDC_HOMEPAGE) { SetTextColor(hdc, RGB(0,0,255)); SetBkMode(hdc, OPAQUE); // return (BOOL)(INT_PTR)GetSysColorBrush(COLOR_3DFACE); } break; } case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); if((id == IDC_MAILTO || id == IDC_HOMEPAGE) && code == STN_CLICKED) { OnLinkClicked(hDlg, id); } if((id == IDC_STARTUP) && ((code == BST_CHECKED) || (code == BST_UNCHECKED))) { SendPSChanged(hDlg); } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; } return TRUE; case WM_DESTROY: DeleteObject(hfontLink); DeleteObject(hFontBold); DestroyWindow(hDlg); break; } return FALSE; }
/*------------------------------------------------ "Customize format" checkbox --------------------------------------------------*/ void OnCustom(HWND hDlg, BOOL bmouse) { BOOL b; int i; b = IsDlgButtonChecked(hDlg, IDC_CUSTOM); EnableDlgItem(hDlg, IDC_FORMAT, b); for(i = IDC_YEAR4; i <= IDC_AMPM; i++) EnableDlgItem(hDlg, i, !b); if(m_CustomFormat[0] && bmouse) { if(b) SetDlgItemText(hDlg, IDC_FORMAT, m_CustomFormat); else GetDlgItemText(hDlg, IDC_FORMAT, m_CustomFormat, BUFSIZE_FORMAT); } if(!b) OnFormatCheck(hDlg, 0); SendPSChanged(hDlg); }
/*------------------------------------------------ checked "acrive" --------------------------------------------------*/ void OnAutoExec(HWND hDlg, WORD id) { int s, e, i; BOOL b; s = IDC_AUTOEXECHOUR; e = IDC_HIDDENAUTOEXECMIN2; b = IsDlgButtonChecked(hDlg, id); for(i = s; i <= e; i++) EnableDlgItem(hDlg, i, b); OnFileChange(hDlg, IDC_FILEAUTOEXEC); if(b) { char name[40]; GetDlgItemText(hDlg, IDC_COMBOAUTOEXEC, name, 40); if(strcmp(name, MyString(IDS_ADDALARM)) == 0) SetDlgItemText(hDlg, IDC_COMBOAUTOEXEC, ""); } SendPSChanged(hDlg); }
/*------------------------------------------------ Dialog procedure --------------------------------------------------*/ INT_PTR CALLBACK PageMouseProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_DESTROY: OnDestroy(hDlg); break; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_NAMECLICK: if(code == CBN_SELCHANGE) { m_bInit = FALSE; OnName(hDlg); m_bInit = TRUE; } else if(code == CBN_DROPDOWN) OnNameDropDown(hDlg); else if(code == CBN_EDITCHANGE) SendPSChanged(hDlg); break; case IDC_ADDCLICK: OnAdd(hDlg); break; case IDC_DELCLICK: OnDelete(hDlg); break; case IDC_MOUSEBUTTON: if(code == CBN_SELCHANGE) { #if TC_ENABLE_WHEEL OnMouseButton(hDlg); #endif SendPSChanged(hDlg); } break; case IDC_RADSINGLE: case IDC_RADDOUBLE: case IDC_RADTRIPLE: case IDC_RADQUADRUPLE: case IDC_MOUSECTRL: case IDC_MOUSESHIFT: case IDC_MOUSEALT: case IDC_RCLICKMENU: SendPSChanged(hDlg); break; case IDC_LMOUSEPASSTHRU: g_bApplyClock = TRUE; SendPSChanged(hDlg); break; case IDC_MOUSEFUNC: OnFunction(hDlg, TRUE); break; case IDC_MOUSEOPT: if(code == EN_CHANGE) SendPSChanged(hDlg); break; case IDC_MOUSEOPTSANSHO: OnBrowse(hDlg); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "Mouse"); break; } return TRUE; } return FALSE; }
/*------------------------------------------------ Dialog procedure --------------------------------------------------*/ INT_PTR CALLBACK Page_Color(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_DESTROY:{ HFONT hfontb=(HFONT)SendDlgItemMessage(hDlg,IDC_BOLD,WM_GETFONT,0,0); HFONT hfonti=(HFONT)SendDlgItemMessage(hDlg,IDC_ITALIC,WM_GETFONT,0,0); SendDlgItemMessage(hDlg,IDC_BOLD,WM_SETFONT,0,0); SendDlgItemMessage(hDlg,IDC_ITALIC,WM_SETFONT,0,0); DeleteObject(hfontb); DeleteObject(hfonti); break;} case WM_MEASUREITEM: return ColorBox_OnMeasureItem(wParam, lParam); case WM_DRAWITEM: return ColorBox_OnDrawItem(wParam, lParam); case WM_COMMAND: { WORD id=LOWORD(wParam); switch(HIWORD(wParam)){ case CBN_SELCHANGE: if(id==IDC_COLFORE || id==IDC_COLBACK || id==IDC_FONT || id==IDC_FONTQUAL || id==IDC_FONTSIZE){ if(id==IDC_FONT) SetComboFontSize(hDlg, FALSE); SendPSChanged(hDlg); } break; case CBN_EDITCHANGE: if(id==IDC_FONTSIZE) SendPSChanged(hDlg); break; case EN_CHANGE: if(id==IDC_CLOCKHEIGHT || id==IDC_CLOCKWIDTH || id==IDC_ALPHATB || id==IDC_VERTPOS || id==IDC_LINEHEIGHT || id==IDC_HORIZPOS || id==IDC_ANGLE){ SendPSChanged(hDlg); } break; default: if(id==IDC_COLFORE_BTN || id==IDC_COLBACK_BTN){ ColorBox_ChooseColor((HWND)lParam); }else if(id==IDC_CHOOSEFONT){ HWND hwndCombo; HDC hdc; wchar_t size[8]; LOGFONT lf = {0}; CHOOSEFONT chosenfont = {sizeof(CHOOSEFONT)}; chosenfont.hwndOwner = hDlg; chosenfont.Flags = CF_FORCEFONTEXIST | CF_INITTOLOGFONTSTRUCT | CF_PRINTERFONTS | CF_SCREENFONTS; chosenfont.lpLogFont = &lf; hwndCombo = GetDlgItem(hDlg,IDC_FONTSIZE); ComboBox_GetText(hwndCombo, size, _countof(size)); hdc = GetDC(NULL); lf.lfWeight = IsDlgButtonChecked(hDlg, IDC_BOLD) ? FW_BOLD : FW_REGULAR; lf.lfItalic = (BYTE)IsDlgButtonChecked(hDlg, IDC_ITALIC); lf.lfHeight = -MulDiv(_wtoi(size), GetDeviceCaps(hdc,LOGPIXELSY), 72); ReleaseDC(NULL, hdc); hwndCombo = GetDlgItem(hDlg,IDC_FONT); ComboBox_GetText(hwndCombo, lf.lfFaceName, _countof(lf.lfFaceName)); if(ChooseFont(&chosenfont)){ int sel; CheckDlgButton(hDlg, IDC_BOLD, (chosenfont.lpLogFont->lfWeight >= FW_SEMIBOLD)); CheckDlgButton(hDlg, IDC_ITALIC, chosenfont.lpLogFont->lfItalic); ComboBox_SelectString(hwndCombo, -1, chosenfont.lpLogFont->lfFaceName); hwndCombo = GetDlgItem(hDlg,IDC_FONTSIZE); wsprintf(size, FMT("%d"), chosenfont.iPointSize/10); sel = ComboBox_FindStringExact(hwndCombo, -1, size); if(sel != CB_ERR) ComboBox_SetCurSel(hwndCombo, sel); else ComboBox_SetText(hwndCombo, size); SendPSChanged(hDlg); } }else if(id==IDC_BOLD || id==IDC_ITALIC) SendPSChanged(hDlg); } return TRUE;} case WM_NOTIFY:{ PSHNOTIFY* notify=(PSHNOTIFY*)lParam; switch(notify->hdr.code) { case PSN_APPLY: OnApply(hDlg,0); if(notify->lParam) m_transition=-1; break; case PSN_RESET: if(m_transition==1){ SendMessage(g_hwndClock, CLOCKM_REFRESHCLOCK, 0, 0); SendMessage(g_hwndClock, CLOCKM_REFRESHTASKBAR, 0, 0); api.DelKey(L"Preview"); } m_transition=-1; break; } return TRUE;} } return FALSE; }
//=============================================================================================== //--------------------------+++--> Edit Control Subclass Procedure to Catch/Record HotKey Strokes: LRESULT APIENTRY SubClassEditProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { //-+++--> char szKeyTmp[32] = {0}; int iCtrlID; switch(uMsg){ case WM_GETDLGCODE: return DLGC_WANTMESSAGE; case WM_CHAR: // This is Required to Block (Direct Access) return TRUE; //-+> Keyboard Input to the Edit Control. case WM_KEYDOWN: //-------------+++--> Looping is Forbidden! if((UINT)wParam == uLastKey) return TRUE; //-+> By This. if((UINT)wParam == VK_LWIN || (UINT)wParam == VK_RWIN) { return TRUE; // Block Acceptance of the Windows Keys } //-+> as Their Behavior is (reserved) Unpredictable... iCtrlID = (GetDlgCtrlID(hWnd) - 1026); // Edit Control=X if((tchk[iCtrlID].fsMod == MOD_SHIFT) && // Translation: (((UINT)wParam <= VK_DIVIDE) || // Prevent User From ((UINT)wParam >= VK_NUMLOCK))) { // Selecting any of bReset = TRUE; // the Dangerous Key Combinations } //----------//------//------------//-----------+++--> if(bReset) { //------//------------//-----------+++--> tchk[iCtrlID].bValid = FALSE; //-----------+++--> Edit_SetText(hWnd, "None"); ///-----------+++--> bReset = FALSE; } if((wParam >= VK_SHIFT) && (wParam <= VK_MENU)) { if(wParam == VK_CONTROL) { tchk[iCtrlID].fsMod = MOD_CONTROL; } else if(wParam == VK_SHIFT) { if(tchk[iCtrlID].fsMod) tchk[iCtrlID].fsMod |= MOD_SHIFT; else tchk[iCtrlID].fsMod = MOD_SHIFT; } else if(wParam == VK_MENU) { if(tchk[iCtrlID].fsMod) tchk[iCtrlID].fsMod |= MOD_ALT; else tchk[iCtrlID].fsMod = MOD_ALT; } GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF); ShowHotKey(hWnd, iCtrlID, szKeyTmp, TRUE, FALSE, FALSE); } //-++-> VK_F1 = 0x70 (112) - VK_F24 = 0x87 (135) else if((wParam >= VK_F1) && (wParam <= VK_F24)) { tchk[iCtrlID].vk = (UINT)wParam; GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF); ShowHotKey(hWnd, iCtrlID, szKeyTmp, FALSE, TRUE, TRUE); } else { //-+> Oh Shit! ...Sombody Hit the AnyKey!!! tchk[iCtrlID].vk = (UINT)wParam; GetKeyNameText((LONG)lParam, szKeyTmp, TNY_BUFF); ShowHotKey(hWnd, iCtrlID, szKeyTmp, FALSE, FALSE, TRUE); } uLastKey = (UINT)wParam; //-+> Check for This on Next Loop, To Break Loop! return TRUE; //-------------------------------+++--> End of Case WM_KEYDOWN: //================================================================================== case WM_KEYUP: uLastKey = 0; //-//-------+++--> Clear the Slate. if(!bHaveKey) { // IF Key Record Failed, Go Dark. iCtrlID = (GetDlgCtrlID(hWnd) - 1026); strcpy(tchk[iCtrlID].szText, "None"); tchk[iCtrlID].bValid = FALSE; Edit_SetText(hWnd, "None"); tchk[iCtrlID].fsMod = 0; tchk[iCtrlID].vk = 0; }else{ // ELSE Offer to Save New Key Combination. bReset = TRUE; iCtrlID = (GetDlgCtrlID(hWnd) - 1026); tchk[iCtrlID].bValid = TRUE; SendPSChanged(GetParent(hWnd)); } return TRUE; //-------------------------------+++--> End of Case WM_KEYUP: //================================================================================== } //-------------------+++--> Let Windows Handle What We Forget to... return CallWindowProc(OldEditClassProc, hWnd, uMsg, wParam, lParam); }
//================================================================================================ //---------------------------------+++--> Dialog Precedure For Configurable HotKeys Properties Tab: BOOL CALLBACK PageHotKeyProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { //----+++--> switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: // Because the Second Time You Try to Register the if(bFirstTime) OnApply(hDlg); //-+> Same HotKey is an Error... break; } return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); if(code == EN_KILLFOCUS) { //--++-> Add This After Bugg Found By: if(!tchk[(id - 1026)].bValid) { // ewemoa - DonationCoder.com SetDlgItemText(hDlg, id, "None"); // Burn the HotKet on tchk[(id - 1026)].bValid = FALSE; // Input Focus Failure bReset = TRUE; } return TRUE; } switch(id) { case IDCB_HK_ADD: EnableWindow(GetDlgItem(hDlg, IDCE_HK_ADD), TRUE); EnableWindow(GetDlgItem(hDlg, IDCB_HK_ADD), FALSE); SetDlgItemText(hDlg, IDCE_HK_ADD, "None"); SetFocus(GetDlgItem(hDlg, IDCE_HK_ADD)); tchk[0].bValid = FALSE; // Required to Clear/Remove HotKey SendPSChanged(hDlg); tchk[0].fsMod = 0; tchk[0].vk = 0; bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's break; case IDCB_HK_STOP: EnableWindow(GetDlgItem(hDlg, IDCE_HK_STOP), TRUE); EnableWindow(GetDlgItem(hDlg, IDCB_HK_STOP), FALSE); SetDlgItemText(hDlg, IDCE_HK_STOP, "None"); SetFocus(GetDlgItem(hDlg, IDCE_HK_STOP)); tchk[1].bValid = FALSE; // Required to Clear/Remove HotKey SendPSChanged(hDlg); tchk[1].fsMod = 0; tchk[1].vk = 0; bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's break; case IDCB_HK_TIME: EnableWindow(GetDlgItem(hDlg, IDCE_HK_TIME), TRUE); EnableWindow(GetDlgItem(hDlg, IDCB_HK_TIME), FALSE); SetDlgItemText(hDlg, IDCE_HK_TIME, "None"); SetFocus(GetDlgItem(hDlg, IDCE_HK_TIME)); tchk[2].bValid = FALSE; // Required to Clear/Remove HotKey SendPSChanged(hDlg); tchk[2].fsMod = 0; tchk[2].vk = 0; bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's break; case IDCB_HK_PROP: EnableWindow(GetDlgItem(hDlg, IDCE_HK_PROP), TRUE); EnableWindow(GetDlgItem(hDlg, IDCB_HK_PROP), FALSE); SetDlgItemText(hDlg, IDCE_HK_PROP, "None"); SetFocus(GetDlgItem(hDlg, IDCE_HK_PROP)); tchk[3].bValid = FALSE; // Required to Clear/Remove HotKey SendPSChanged(hDlg); tchk[3].fsMod = 0; tchk[3].vk = 0; bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's break; case IDCB_HK_CALN: EnableWindow(GetDlgItem(hDlg, IDCE_HK_CALN), TRUE); EnableWindow(GetDlgItem(hDlg, IDCB_HK_CALN), FALSE); SetDlgItemText(hDlg, IDCE_HK_CALN, "None"); SetFocus(GetDlgItem(hDlg, IDCE_HK_CALN)); tchk[4].bValid = FALSE; // Required to Clear/Remove HotKey SendPSChanged(hDlg); tchk[4].fsMod = 0; tchk[4].vk = 0; bFirstTime = TRUE; // This Will Allow (boo-boo) Re-Do's break; } } return TRUE; case WM_DESTROY: OnDestroy(hDlg); DestroyWindow(hDlg); break; } return FALSE; }
/*------------------------------------------------ dialog procedure of this page --------------------------------------------------*/ INT_PTR CALLBACK PageAnalogClockProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_ANALOGCLOCK: OnAnalogClock(hDlg); SendPSChanged(hDlg); break; case IDC_COLHOUR: case IDC_COLMIN: if(code == CBN_SELCHANGE) SendPSChanged(hDlg); break; case IDC_CHOOSECOLHOUR: case IDC_CHOOSECOLMIN: OnChooseColor(hDlg, id); break; case IDC_HOURHANDBOLD: case IDC_MINHANDBOLD: case IDC_ANALOGPOSLEFT: case IDC_ANALOGPOSRIGHT: case IDC_ANALOGPOSMIDDLE: SendPSChanged(hDlg); break; case IDC_ANALOGHPOS: case IDC_ANALOGVPOS: case IDC_ANALOGSIZE: case IDC_ANALOGBMP: if(code == EN_CHANGE) SendPSChanged(hDlg); break; case IDC_ANALOGBMPBROWSE: OnBrowse(hDlg); break; } return TRUE; } case WM_DRAWITEM: OnDrawItem(hDlg, (LPDRAWITEMSTRUCT)lParam); return TRUE; case WM_MEASUREITEM: // common/combobox.c OnMeasureItemColorCombo((LPMEASUREITEMSTRUCT)lParam); return TRUE; case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "AnalogClock"); break; } return TRUE; } return FALSE; }
INT_PTR CALLBACK Page_About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_DESTROY:{ int controlid; HFONT hftBold=(HFONT)SendDlgItemMessage(hDlg,IDC_ABT_TITLE,WM_GETFONT,0,0); HFONT hftBigger=(HFONT)SendDlgItemMessage(hDlg,IDC_STARTUP,WM_GETFONT,0,0); SendDlgItemMessage(hDlg,IDC_STARTUP,WM_SETFONT,0,0); for(controlid=GROUP_ABT_B_BEGIN; controlid<=GROUP_ABT_B_END; ++controlid){ SendDlgItemMessage(hDlg,controlid,WM_SETFONT,0,0); } DeleteObject(hftBold); DeleteObject(hftBigger); break;} case WM_CTLCOLORSTATIC:{ int id=GetDlgCtrlID((HWND)lParam); if(id==IDC_ABT_WEBuri || id==IDC_ABT_MAILuri || id==IDC_ABT_FORUMuri) { return LinkControl_OnCtlColorStatic(hDlg, wParam, lParam); } break;} case WM_COMMAND: { WORD id; id = LOWORD(wParam); if(id == IDC_UPDATE_CHECK) { HWND options = GetParent(hDlg); HANDLE proc; int ret; MSG msg; msg.message = 0; EnableWindow((HWND)lParam, 0); EnableDlgItem(hDlg, IDC_UPDATE_RELEASE, 0); EnableDlgItem(hDlg, IDC_UPDATE_BETA, 0); api.ShellExecute(NULL, L"misc\\Options", L"-u", options, SW_HIDE, &proc); // SW_MINIMIZE is buggy if(proc) { for(;;) { ret = MsgWaitForMultipleObjectsEx(1, &proc, INFINITE, QS_ALLEVENTS, MWMO_INPUTAVAILABLE); if(ret == WAIT_OBJECT_0) break; while(PeekMessage(&msg,NULL,0,0,PM_REMOVE) && msg.message != WM_QUIT) { TranslateDispatchTClockMessage(&msg); } if(msg.message == WM_QUIT || !IsWindow(options)) { if(msg.message == WM_QUIT) PostQuitMessage((int)msg.wParam); CloseHandle(proc); return FALSE; } } CloseHandle(proc); SetUpdateChecks(hDlg, 0); } SetUpdateChecks(hDlg, 1); // might enable IDC_UPDATE_BETA EnableDlgItem(hDlg, IDC_UPDATE_RELEASE, 1); EnableWindow((HWND)lParam, 1); SetForegroundWindow(options); }else if(id == IDC_ABT_MAILuri) { OnLinkClicked(hDlg, id); }else if(id == IDC_UPDATE_RELEASE) { SetUpdateChecks(hDlg, 1); SendPSChanged(hDlg); } else { SendPSChanged(hDlg); } return TRUE;} case WM_NOTIFY: switch(((NMHDR*)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; } return TRUE; } return FALSE; }
/*------------------------------------------------ 「その他」ページ用ダイアログプロシージャ --------------------------------------------------*/ BOOL CALLBACK PageMiscProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { // 「時計を改造しない」 case IDC_NOCLOCK: case IDC_TASKWNDCTRL: { g_bApplyClock = TRUE; SendPSChanged(hDlg); break; } // 「デスクトップカレンダーの自動更新」 case IDC_DESKCAL: OnDeskcal(hDlg); break; // 「定期的にネットワークの確認」 case IDC_CHECKNETWORK: OnCheckNet(hDlg); break; case IDC_CHECKNETINTERVAL: if(code == EN_CHANGE) SendPSChanged(hDlg); break; // チェックボックス case IDC_MCIWAVE: case IDC_ONLYDATECHANGED: case IDC_RESUMESUSPEND: case IDC_TONIKAKU: case IDC_WATCHWALL: SendPSChanged(hDlg); break; // 何秒後に開始 case IDC_DELAYSTART: case IDC_DELAYNET: if(code == EN_CHANGE) SendPSChanged(hDlg); break; // 「...」 デスクトップカレンダーの参照 case IDC_SANSHODESKCAL: OnSanshoDeskcal(hDlg, id); break; // 「スタートアップ」にショートカットをつくる case IDC_STARTUP: OnStartup(hDlg); break; case IDC_DELREG: { int r; r = DelRegAll(); if (r == 0) MyMessageBox(hDlg,MyString(IDS_DELREGNGINI),MyString(IDS_DELREGT),MB_OK,MB_ICONEXCLAMATION); else if (r == 1) MyMessageBox(hDlg,MyString(IDS_DELREGOK),MyString(IDS_DELREGT),MB_OK,MB_ICONINFORMATION); else MyMessageBox(hDlg,MyString(IDS_DELREGNG),MyString(IDS_DELREGT),MB_OK,MB_ICONEXCLAMATION); } break; case IDC_CONFMAX: case IDC_CFMAXSPIN: SendPSChanged(hDlg); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: My2chHelp(GetParent(hDlg), 11); break; } return TRUE; } return FALSE; }
INT_PTR CALLBACK PageAboutProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_CTLCOLORSTATIC: { int id; HDC hdc; hdc = (HDC)wParam; id = GetDlgCtrlID((HWND)lParam); if(id == IDC_MAILTO || id == IDC_HOMEPAGE) { SetTextColor(hdc, RGB(0,0,255)); SetBkMode(hdc, TRANSPARENT); return (INT_PTR)GetStockObject(NULL_BRUSH); } break; } case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_MAILTO: case IDC_HOMEPAGE: if(code == STN_CLICKED) { OnLinkClicked(hDlg, id); } break; case IDC_HELPURL: case IDC_HELP2CH: case IDC_LANGDLL: if(code == EN_CHANGE) { SendPSChanged(hDlg); } break; case IDC_BROWSEHELP: case IDC_BROWSELANGDLL: case IDC_BROWSEHELP2CH: OnBrowseFile(hDlg, id); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: My2chHelp(GetParent(hDlg), 12); break; } return TRUE; case WM_DESTROY: DeleteObject(hfontLink); break; } return FALSE; }
/*------------------------------------------------ Dialog procedure --------------------------------------------------*/ INT_PTR CALLBACK PageColorProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { case IDC_COLBACK: case IDC_COLBACK2: case IDC_COLFORE: #if TC_ENABLE_CLOCKDECORATION case IDC_COLSHADOW: #endif case IDC_FONT: case IDC_FONTSIZE: if(code == CBN_SELCHANGE || code == CBN_EDITCHANGE) { if(id == IDC_FONT) OnFont(hDlg, FALSE); SendPSChanged(hDlg); } break; case IDC_CHKCOLOR: case IDC_CHKCOLOR2: OnCheckColor(hDlg); SendPSChanged(hDlg); break; case IDC_CHOOSECOLBACK: case IDC_CHOOSECOLBACK2: case IDC_CHOOSECOLFORE: #if TC_ENABLE_CLOCKDECORATION case IDC_CHOOSECOLSHADOW: #endif OnChooseColor(hDlg, id); break; #if TC_ENABLE_CLOCKDECORATION case IDC_DECONONE: case IDC_DECOSHADOW: case IDC_DECOBORDER: OnSelectDecoration(hDlg); SendPSChanged(hDlg); break; case IDC_SHADOWRANGE: if(code == EN_CHANGE) SendPSChanged(hDlg); break; #endif case IDC_GRAD1: case IDC_GRAD2: case IDC_FILLTRAY: case IDC_BOLD: case IDC_ITALIC: SendPSChanged(hDlg); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: MyHelp(GetParent(hDlg), "Color"); break; } return TRUE; case WM_MEASUREITEM: // common/combobox.c OnMeasureItemColorCombo((LPMEASUREITEMSTRUCT)lParam); return TRUE; case WM_DRAWITEM: OnDrawItem(hDlg, (LPDRAWITEMSTRUCT)lParam); return TRUE; case WM_DESTROY: if(m_hfontb) DeleteObject(m_hfontb); if(m_hfonti) DeleteObject(m_hfonti); break; } return FALSE; }
/*------------------------------------------------ Dialog procedure --------------------------------------------------*/ BOOL CALLBACK PageAutoExecProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch(message) { case WM_INITDIALOG: OnInit(hDlg); return TRUE; case WM_COMMAND: { WORD id, code; id = LOWORD(wParam); code = HIWORD(wParam); switch(id) { // a combo-box to select alarm name case IDC_COMBOAUTOEXEC: if(code == CBN_SELCHANGE) OnChangeAutoExec(hDlg); else if(code == CBN_DROPDOWN) OnDropDownAutoExec(hDlg); break; // Day... case IDC_AUTOEXECHOUR: OnHour(hDlg); break; case IDC_AUTOEXECMIN: OnMin(hDlg); break; case IDC_AUTOEXECDAY: OnDay(hDlg); break; case IDC_AUTOEXEC: OnAutoExec(hDlg, id); break; // file name changed case IDC_FILEAUTOEXEC: if(code == EN_CHANGE) { OnFileChange(hDlg, id); SendPSChanged(hDlg); } break; // browse file case IDC_SANSHOAUTOEXEC: OnSanshoAutoExec(hDlg, id); OnFileChange(hDlg, (WORD)(id - 1)); SendPSChanged(hDlg); break; // checked other checkboxes case IDC_ONBOOTEXEC: SendPSChanged(hDlg); break; // delete an alarm case IDC_DELAUTOEXEC: OnDelAutoExec(hDlg); break; // test sound case IDC_TESTAUTOEXEC: OnTest(hDlg, id); break; } return TRUE; } case WM_NOTIFY: switch(((NMHDR *)lParam)->code) { case PSN_APPLY: OnApply(hDlg); break; case PSN_HELP: My2chHelp(GetParent(hDlg), 14); break; } return TRUE; case WM_DESTROY: OnDestroy(hDlg); if(bPlaying) StopFile(); bPlaying = FALSE; break; // playing sound ended case MM_MCINOTIFY: case MM_WOM_DONE: StopFile(); bPlaying = FALSE; SendDlgItemMessage(hDlg, IDC_TESTAUTOEXEC, BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_hIconPlay); return TRUE; } return FALSE; }