/*------------------------------------------------ initialize --------------------------------------------------*/ void OnInit(HWND hDlg) { int i, count, index; HFONT hfont; hfont = (HFONT)GetStockObject(DEFAULT_GUI_FONT); if(hfont) { SendDlgItemMessage(hDlg, IDC_COMBOAUTOEXEC, WM_SETFONT, (WPARAM)hfont, 0); SendDlgItemMessage(hDlg, IDC_FILEAUTOEXEC, WM_SETFONT, (WPARAM)hfont, 0); } index = CBAddString(hDlg, IDC_COMBOAUTOEXEC, (LPARAM)MyString(IDS_ADDALARM)); CBSetItemData(hDlg, IDC_COMBOAUTOEXEC, index, 0); count = GetMyRegLong("", "AutoExecNum", 0); if(count < 1) count = 0; for(i = 0; i < count; i++) { PAUTOEXECSTRUCT pAS; pAS = malloc(sizeof(AUTOEXECSTRUCT)); ReadAutoExecFromReg(pAS, i); index = CBAddString(hDlg, IDC_COMBOAUTOEXEC, (LPARAM)pAS->name); CBSetItemData(hDlg, IDC_COMBOAUTOEXEC, index, (LPARAM)pAS); if(i == 0) SetAutoExecToDlg(hDlg, pAS); } //リスト項目の表示数を指定 AdjustDlgConboBoxDropDown(hDlg, IDC_COMBOAUTOEXEC, 7); if(count > 0) { CBSetCurSel(hDlg, IDC_COMBOAUTOEXEC, 1); curAutoExec = 1; } else { AUTOEXECSTRUCT as; CBSetCurSel(hDlg, IDC_COMBOAUTOEXEC, 0); curAutoExec = -1; memset(&as, 0, sizeof(as)); as.hour = 12; as.days = 0x7f; SetAutoExecToDlg(hDlg, &as); } SendDlgItemMessage(hDlg, IDC_TESTAUTOEXEC, BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_hIconPlay); OnFileChange(hDlg, IDC_FILEAUTOEXEC); SendDlgItemMessage(hDlg, IDC_DELAUTOEXEC, BM_SETIMAGE, IMAGE_ICON, (LPARAM)g_hIconDel); OnAutoExec(hDlg, IDC_AUTOEXEC); bPlaying = FALSE; }
/*------------------------------------------------ set settings of an alarm to the page --------------------------------------------------*/ void SetAutoExecToDlg(HWND hDlg, PAUTOEXECSTRUCT pAS) { SetDlgItemText(hDlg, IDC_COMBOAUTOEXEC, pAS->name); CheckDlgButton(hDlg, IDC_AUTOEXEC, pAS->bAutoExec); SetDlgItemText(hDlg, IDC_FILEAUTOEXEC, pAS->fname); SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECDAY, pAS->days, FALSE); SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECHOUR, pAS->hour, FALSE); SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN1, pAS->minute1, FALSE); SetDlgItemInt(hDlg, IDC_HIDDENAUTOEXECMIN2, pAS->minute2, FALSE); CheckDlgButton(hDlg, IDC_ONBOOTEXEC, pAS->bOnBoot); OnFileChange(hDlg, IDC_FILEAUTOEXEC); }
/*------------------------------------------------ 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); }
LRESULT HexEdit_OnNotify(MAINWND *mainWnd, HWND hwnd, UINT idCtrl, NMHDR *hdr) { HWND hwndHV = GetActiveHexView(hwnd); if(hdr->hwndFrom == mainWnd->hwndTabView) { TCITEM tci = { TCIF_PARAM }; TabCtrl_GetItem(mainWnd->hwndTabView, TabCtrl_GetCurSel(mainWnd->hwndTabView), &tci); // has the user clicked a file-tab? if(hdr->code == TCN_SELCHANGE) { HexSetCurFile(hwnd, TabCtrl_GetCurSel(mainWnd->hwndTabView), TRUE); OnFileChange(mainWnd); return 0; } else if(hdr->code == TCN_CLOSING) { // prompt close if if(HexFileCloseNotify(hwnd, hwndHV) == IDCANCEL) return TRUE; return 0; } else if(hdr->code == TCN_CLOSE) { // ask user if they want to save changes if(HexFileCloseNotify(hwnd, hwndHV) == IDCANCEL) return 0; //SetCurFile(hwnd, TabCtrl_GetCurSel(mainWnd->hwndTabView)); //DestroyWindow((HWND)tci.lParam); HexCloseFile(mainWnd, TabCtrl_GetCurSel(mainWnd->hwndTabView)); return 0; } } // double-click in a statusbar pane? if(hdr->hwndFrom == mainWnd->hwndStatusBar && hdr->code == NM_DBLCLK) { NMMOUSE *nmmouse; // statusbar is the only window at present which sends double-clicks nmmouse = (NMMOUSE *)hdr; // toggle the Readonly/Insert/Overwrite mode if(nmmouse->dwItemSpec == 4) { ToggleEditorMode(hwndHV); UpdateStatusBarText(mainWnd->hwndStatusBar, hwndHV); } return 0; } if(hdr->code == TBN_DROPDOWN) { if(GetParent(hdr->hwndFrom) == mainWnd->hwndStatusBar) { StatusBar_DropDownTB(mainWnd, hwndHV, (NMTOOLBAR *)hdr); } if(hdr->hwndFrom == mainWnd->hwndToolbar) { HexPasteSpecialDlg2(hwnd); } return 0; } /* if(hdr->code == DWN_ISDOCKABLE) { RECT rc1, rc2; // Get main window "outer" rectangle GetWindowRect(hwnd, &rc1); // Get main window "inner" rectangle GetClientRect(hwnd, &rc2); MapWindowPoints(hwnd, 0, (POINT *)&rc2, 2); InflateRect(&rc2, -2, -2); return DockWnd_GetDockSide(hwnd, (NMDOCKWNDQUERY *)hdr, &rc1, &rc2); }*/ if(hdr->code == DWN_SAVESETTINGS) { NMDOCKWNDCREATE *nmdw = (NMDOCKWNDCREATE *)hdr; TRACEA(" DWN_SAVESETTINGS: %d\n", nmdw->uId); switch(nmdw->hdr.idFrom) { case DWID_TYPEVIEW: case DWID_ALLTYPES: SaveTypeView(nmdw->hwndClient, nmdw->hKey); break; } return 0; } if(hdr->code == DWN_UPDATE_CONTENT) { NMDOCKWND *nmdw = (NMDOCKWND *)hdr; HWND hwndHV = GetActiveHexView(hwnd); switch(nmdw->hdr.idFrom) { case DWID_HIGHLIGHT: UpdateHighlights(TRUE); break; } return 0; } if(hdr->code == DWN_CREATE_CONTENT) { NMDOCKWNDCREATE *nmdw = (NMDOCKWNDCREATE *)hdr; TRACEA("DWN_CREATE_CONTENT: %d\n", hdr->idFrom); switch(nmdw->hdr.idFrom) { case DWID_TOOLBAR: mainWnd->hwndToolbar = InitToolbar(hdr->hwndFrom); return (LONG)mainWnd->hwndToolbar; case DWID_SEARCHBAR: return (LONG)CreateSearchBar(hdr->hwndFrom); case DWID_ALLTYPES: //SendMessage(hwndTB, TB_SETSTATE, IDM_TOOLS_TYPEVIEW, DockWnd_IsOpen(g_hwndMain, DWID_TYPEVIEW) ? TBSTATE_CHECKED|TBSTATE_ENABLED : TBSTATE_ENABLED); return (LONG)CreateTypeView(hdr->hwndFrom, nmdw->hKey, TRUE);//TEXT("struct ALL")); case DWID_TYPEVIEW: //SendMessage(hwndTB, TB_SETSTATE, IDM_TOOLS_TYPEVIEW, DockWnd_IsOpen(g_hwndMain, DWID_TYPEVIEW) ? TBSTATE_CHECKED|TBSTATE_ENABLED : TBSTATE_ENABLED); return (LONG)CreateTypeView(hdr->hwndFrom, nmdw->hKey, 0); case DWID_HIGHLIGHT: return (LONG)CreateHighlightView(hdr->hwndFrom); case DWID_STRINGS: return (LONG)CreateStringsView(hdr->hwndFrom); } } else if(hdr->code == DWN_DOCKCHANGE) { NMDOCKWND *nmdw = (NMDOCKWND *)hdr; switch(nmdw->hdr.idFrom) { case DWID_TOOLBAR: SendMessage(DockWnd_GetContents(mainWnd->hwndMain, DWID_TOOLBAR), TB_SETPARENT, (WPARAM)hdr->hwndFrom, 0); return 0; } } else if(hdr->code == DWN_CLOSING) { NMDOCKWND *nmdw = (NMDOCKWND *)hdr; switch(nmdw->hdr.idFrom) { case DWID_TYPEVIEW: break; } return 0; } return DefWindowProc(hwnd, WM_NOTIFY, idCtrl, (LONG)hdr); }
/*------------------------------------------------ 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; }