INT_PTR TgenericPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (!nostate && nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_GENERIC) switch (nmhdr->code) { case LVN_ITEMCHANGED: { LPNMLISTVIEW nmlv=LPNMLISTVIEW(lParam); if (nmlv->uChanged&LVIF_STATE && ((nmlv->uOldState&4096)!=(nmlv->uNewState&4096))) { Tflag *f=(Tflag*)nmlv->lParam; if (nmlv->uNewState&8192) { cfgSet(std::get<IDFF-1>(*f),cfgGet(std::get<IDFF-1>(*f))|std::get<VAL-1>(*f)); } else if (nmlv->uNewState&4096) { cfgSet(std::get<IDFF-1>(*f),cfgGet(std::get<IDFF-1>(*f))&~std::get<VAL-1>(*f)); } if (std::get<REPAINT-1>(*f)) { cfg2dlg(); } } return TRUE; } break; } break; } } return TconfPageEnc::msgProc(uMsg,wParam,lParam); }
//------------------------------------------------------------------------------ // private: //------------------------------------------------------------------------------ INT_PTR CALLBACK AnnounceDialog::process(HWND window, UINT message, WPARAM wparam, LPARAM lparam) { if (!m_instance) { return 1; } switch (message) { case WM_INITDIALOG: m_instance->load(window); break; case WM_COMMAND: m_instance->command(window, wparam); break; case WM_NOTIFY: if (PSN_APPLY == LPNMHDR(lparam)->code) { m_instance->save(window); } break; } return 0; }
INT_PTR TkeysPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: cfgSet(IDFF_lvKeysWidth0, ListView_GetColumnWidth(hlv, 0)); cfgSet(IDFF_lvKeysWidth1, ListView_GetColumnWidth(hlv, 1)); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CHB_KEYS: cfgSet(IDFF_isKeys, getCheck(IDC_CHB_KEYS)); keys2dlg(); parent->drawInter(); return TRUE; } break; case WM_NOTIFY: { NMHDR *nmhdr = LPNMHDR(lParam); if (nmhdr->hwndFrom == hlv && nmhdr->idFrom == IDC_LV_KEYS) switch (nmhdr->code) { case NM_DBLCLK: if (keyChanging != -1) { endKeyChange(); } else { beginKeyChange(); } return TRUE; case NM_CLICK: if (keyChanging != -1) { endKeyChange(); } return TRUE; case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi = (NMLVDISPINFO*)lParam; int i = nmdi->item.iItem; if (i == -1) { break; } if (nmdi->item.mask & LVIF_TEXT) switch (nmdi->item.iSubItem) { case 0: { const char_t *descr; deciD->getKeyParamDescr(i, &descr); strcpy(nmdi->item.pszText, _(IDC_LV_KEYS, descr)); break; } case 1: strcpy(nmdi->item.pszText, _(IDC_LV_KEYS, keyChanging == -1 ? Tkeyboard::getKeyName(deciD->getKeyParamKey2(i)) : _l("press key"))); break; } return TRUE; } } break; } } return TconfPageDec::msgProc(uMsg, wParam, lParam); }
// IDD_FOLDER_OPTIONS_VIEW INT_PTR CALLBACK FolderOptionsViewDlg( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR Result; NMTVCUSTOMDRAW *Draw; switch (uMsg) { case WM_INITDIALOG: return ViewDlg_OnInitDialog(hwndDlg); case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_VIEW_RESTORE_DEFAULTS: // Restore Defaults ViewDlg_RestoreDefaults(hwndDlg); break; } break; case WM_NOTIFY: switch (LPNMHDR(lParam)->code) { case NM_CLICK: // clicked on treeview ViewDlg_OnTreeViewClick(hwndDlg); break; case NM_CUSTOMDRAW: // custom draw (for graying) Draw = (NMTVCUSTOMDRAW *)lParam; Result = ViewDlg_OnTreeCustomDraw(hwndDlg, Draw); SetWindowLongPtr(hwndDlg, DWLP_MSGRESULT, Result); return Result; case TVN_KEYDOWN: // key is down ViewDlg_OnTreeViewKeyDown(hwndDlg, (TV_KEYDOWN *)lParam); break; case PSN_APPLY: // [Apply] is clicked ViewDlg_Apply(hwndDlg); break; default: break; } break; } return FALSE; }
// virtual LRESULT PropertyPage::wndProc(UINT msg, WPARAM wp, LPARAM lp) { switch(msg) { case WM_NOTIFY: switch(LPNMHDR(lp)->code) { case PSN_APPLY: onOK(); return TRUE; case PSN_QUERYCANCEL: onCancel(); return TRUE; } } return Dialog::wndProc(msg, wp, lp); }
INT_PTR TinfoPageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CHB_ALLOW_MMX: case IDC_CHB_ALLOW_MMXEXT: case IDC_CHB_ALLOW_SSE: case IDC_CHB_ALLOW_SSE2: case IDC_CHB_ALLOW_SSE3: case IDC_CHB_ALLOW_SSSE3: case IDC_CHB_ALLOW_3DNOW: case IDC_CHB_ALLOW_3DNOWEXT: case IDC_CHB_ALLOW_SSE41: case IDC_CHB_ALLOW_SSE42: case IDC_CHB_ALLOW_SSE4A: case IDC_CHB_ALLOW_SSE5: { int allow=0; if (getCheck(IDC_CHB_ALLOW_MMX )) { allow|=FF_CPU_MMX; } if (getCheck(IDC_CHB_ALLOW_MMXEXT )) { allow|=FF_CPU_MMXEXT; } if (getCheck(IDC_CHB_ALLOW_SSE )) { allow|=FF_CPU_SSE; } if (getCheck(IDC_CHB_ALLOW_SSE2 )) { allow|=FF_CPU_SSE2; } if (getCheck(IDC_CHB_ALLOW_SSE3 )) { allow|=FF_CPU_SSE3; } if (getCheck(IDC_CHB_ALLOW_SSSE3 )) { allow|=FF_CPU_SSSE3; } if (getCheck(IDC_CHB_ALLOW_3DNOW )) { allow|=FF_CPU_3DNOW; } if (getCheck(IDC_CHB_ALLOW_3DNOWEXT)) { allow|=FF_CPU_3DNOWEXT; } if (getCheck(IDC_CHB_ALLOW_SSE41 )) { allow|=FF_CPU_SSE41; } if (getCheck(IDC_CHB_ALLOW_SSE42 )) { allow|=FF_CPU_SSE42; } if (getCheck(IDC_CHB_ALLOW_SSE4A )) { allow|=FF_CPU_SSE4A; } if (getCheck(IDC_CHB_ALLOW_SSE5 )) { allow|=FF_CPU_SSE5; } cfgSet(IDFF_allowedCpuFlags,allow); return TRUE; } } break; case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_INFO) switch (nmhdr->code) { case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; int i=nmdi->item.iItem; if (i==-1) { break; } if (nmdi->item.mask&LVIF_TEXT) switch (nmdi->item.iSubItem) { case 0: { nmdi->item.pszText = pszTextBuf; tsnprintf_s(pszTextBuf,countof(pszTextBuf),_TRUNCATE,_l("%s: %s"),infoitems[i].translatedName,infoitems[i].val?infoitems[i].val:_l("")); break; } } return TRUE; } } break; } } return TconfPageDec::msgProc(uMsg,wParam,lParam); }
INT_PTR TOSDpageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CHB_OSD: cfgSet(IDFF_isOSD, getCheck(IDC_CHB_OSD)); parent->drawInter(); return TRUE; case IDC_CHB_OSD_IS_AUTO_HIDE: cfgSet(IDFF_OSDisAutoHide, getCheck(IDC_CHB_OSD_IS_AUTO_HIDE)); osd2dlg(); parent->setChange(); break; case IDC_ED_OSD_DURATION_VISIBLE: if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) { HWND hed = GetDlgItem(m_hwnd, LOWORD(wParam)); if (hed != GetFocus()) { return FALSE; } repaint(hed); parent->setChange(); break; } break; case IDC_CHB_OSD_USER: if (!getCheck(IDC_CHB_OSD_USER)) { lv2osdFormat(); } else { cfgSet(IDFF_OSDformat, _l("user")); } osd2dlg(); parent->setChange(); break; case IDC_ED_OSD_USER: if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) { char_t ed[1020]; //4 chars are reserved for "user" prefix GetDlgItemText(m_hwnd, IDC_ED_OSD_USER, ed, 1020); char_t format[1024]; tsnprintf_s(format, 1024, _TRUNCATE, _l("user%s"), ed); cfgSet(IDFF_OSDformat, format); parent->setChange(); }; break; case IDC_ED_OSD_SAVE: if (HIWORD(wParam) == EN_CHANGE && !isSetWindowText) { char_t saveflnm[MAX_PATH]; GetDlgItemText(m_hwnd, IDC_ED_OSD_SAVE, saveflnm, MAX_PATH); cfgSet(IDFF_OSDsaveFlnm, saveflnm); return TRUE; } return TRUE; } break; case WM_NOTIFY: { NMHDR *nmhdr = LPNMHDR(lParam); if (!nostate && nmhdr->hwndFrom == hlv && nmhdr->idFrom == IDC_LV_OSD_LINES) switch (nmhdr->code) { case LVN_ITEMCHANGED: { LPNMLISTVIEW nmlv = LPNMLISTVIEW(lParam); if (nmlv->uChanged & LVIF_STATE && ((nmlv->uOldState & 4096) != (nmlv->uNewState & 4096))) { lv2osdFormat(); } return TRUE; } case LVN_BEGINDRAG: { if (!user) { LPNMLISTVIEW nmlv = LPNMLISTVIEW(lParam); if (nmlv->iItem != -1) { dragitem = nmlv->iItem; SetCapture(m_hwnd); } } break; } case NM_DBLCLK: { if (user) { LPNMITEMACTIVATE nmia = LPNMITEMACTIVATE(lParam); if (nmia->iItem != -1) { const char_t *shortcut = deci->getInfoItemShortcut((int)lvGetItemParam(IDC_LV_OSD_LINES, nmia->iItem)); if (shortcut && shortcut[0]) { char_t osd[1020]; tsnprintf_s(osd, countof(osd), _TRUNCATE, _l("%%%s"), shortcut); SendDlgItemMessage(m_hwnd, IDC_ED_OSD_USER, EM_REPLACESEL, TRUE, LPARAM(osd)); } } } break; } } break; } case WM_MOUSEMOVE: if (dragitem != -1) { LVHITTESTINFO lvhti; lvhti.pt.x = LOWORD(lParam) - lvx; lvhti.pt.y = HIWORD(lParam) - lvy; int target = ListView_HitTest(hlv, &lvhti); if (target != -1) { lvSwapItems(IDC_LV_OSD_LINES, target, dragitem); lv2osdFormat(); dragitem = target; } return TRUE; } break; case WM_LBUTTONUP: if (dragitem != -1) { dragitem = -1; ReleaseCapture(); return TRUE; } break; } return TconfPageDec::msgProc(uMsg, wParam, lParam); }
INT_PTR CALLBACK DlgProc (HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) { switch (msg) { case WM_INITDIALOG: { #ifndef _APP_NO_DARKTHEME _r_wnd_setdarktheme (hwnd); #endif // _APP_NO_DARKTHEME // configure listview _r_listview_setstyle (hwnd, IDC_LISTVIEW, LVS_EX_DOUBLEBUFFER | LVS_EX_FULLROWSELECT | LVS_EX_INFOTIP | LVS_EX_LABELTIP); _r_listview_addcolumn (hwnd, IDC_LISTVIEW, 1, nullptr, 39, LVCFMT_LEFT); _r_listview_addcolumn (hwnd, IDC_LISTVIEW, 2, nullptr, 61, LVCFMT_RIGHT); for (UINT i = 0; i < TypeMax; i++) _r_listview_additem (hwnd, IDC_LISTVIEW, i, 0, nullptr); // configure datetime format { WCHAR date_format[MAX_PATH] = {0}; WCHAR time_format[MAX_PATH] = {0}; if ( GetLocaleInfo (LOCALE_SYSTEM_DEFAULT, LOCALE_SLONGDATE, date_format, _countof (date_format)) && GetLocaleInfo (LOCALE_SYSTEM_DEFAULT, LOCALE_STIMEFORMAT, time_format, _countof (time_format)) ) { WCHAR buffer[MAX_PATH] = {0}; StringCchPrintf (buffer, _countof (buffer), L"%s %s", date_format, time_format); SendDlgItemMessage (hwnd, IDC_INPUT, DTM_SETFORMAT, 0, (LPARAM)buffer); } } // print latest timestamp { SYSTEMTIME st = {0}; current_timestamp_utc = app.ConfigGet (L"LatestTimestamp", _r_unixtime_now ()).AsLonglong (); //_app_gettime (current_timestamp_utc, 0, &st); //_app_printdate (hwnd, &st); } _r_ctrl_settip (hwnd, IDC_CURRENT, LPSTR_TEXTCALLBACK); break; } case WM_DESTROY: { // save latest timestamp { SYSTEMTIME st = {0}; //SendDlgItemMessage (hwnd, IDC_INPUT, DTM_GETSYSTEMTIME, 0, (LPARAM)&st); _app_gettime (current_timestamp_utc, 0, &st); app.ConfigSet (L"LatestTimestamp", _r_unixtime_from_systemtime (&st)); } PostQuitMessage (0); break; } case RM_INITIALIZE: { // configure menu CheckMenuItem (GetMenu (hwnd), IDM_ALWAYSONTOP_CHK, MF_BYCOMMAND | (app.ConfigGet (L"AlwaysOnTop", false).AsBool () ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem (GetMenu (hwnd), IDM_CHECKUPDATES_CHK, MF_BYCOMMAND | (app.ConfigGet (L"CheckUpdates", true).AsBool () ? MF_CHECKED : MF_UNCHECKED)); CheckMenuItem (GetMenu (hwnd), IDM_CLASSICUI_CHK, MF_BYCOMMAND | (app.ConfigGet (L"ClassicUI", _APP_CLASSICUI).AsBool () ? MF_CHECKED : MF_UNCHECKED)); // configure timezone { const HMENU submenu_timezone = GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), TIMEZONE_MENU); // clear menu for (UINT i = 0;; i++) { if (!DeleteMenu (submenu_timezone, TIMEZONE_MENU + i, MF_BYCOMMAND)) { DeleteMenu (submenu_timezone, 0, MF_BYPOSITION); // delete separator break; } } const LONG current_bias = _app_getcurrentbias (); const LONG default_bias = _app_getdefaultbias (); for (size_t i = 0; i < _countof (int_timezones); i++) { const LONG bias = int_timezones[i]; MENUITEMINFO mii = {0}; WCHAR menu_title[32] = {0}; StringCchPrintf (menu_title, _countof (menu_title), L"GMT %s", _app_timezone2string (bias, true, L"+00:00 (UTC)").GetString ()); if (bias == default_bias) StringCchCat (menu_title, _countof (menu_title), SYSTEM_BIAS); mii.cbSize = sizeof (mii); mii.fMask = MIIM_ID | MIIM_STRING; mii.fType = MFT_STRING; mii.fState = MFS_DEFAULT; mii.dwTypeData = menu_title; mii.wID = IDX_TIMEZONE + UINT (i); InsertMenuItem (submenu_timezone, mii.wID, FALSE, &mii); if (bias == current_bias) { current_bias_idx = i; CheckMenuRadioItem (submenu_timezone, IDX_TIMEZONE, IDX_TIMEZONE + UINT (_countof (int_timezones) - 1), mii.wID, MF_BYCOMMAND); } } SYSTEMTIME st = {0}; _app_gettime (current_timestamp_utc, current_bias, &st); _app_printdate (hwnd, &st); } break; } case RM_LOCALIZE: { // configure menu const HMENU menu = GetMenu (hwnd); app.LocaleMenu (menu, IDS_FILE, 0, true, nullptr); app.LocaleMenu (menu, IDS_EXIT, IDM_EXIT, false, L"\tEsc"); app.LocaleMenu (menu, IDS_SETTINGS, 1, true, nullptr); app.LocaleMenu (menu, IDS_ALWAYSONTOP_CHK, IDM_ALWAYSONTOP_CHK, false, nullptr); app.LocaleMenu (menu, IDS_CHECKUPDATES_CHK, IDM_CHECKUPDATES_CHK, false, nullptr); app.LocaleMenu (menu, IDS_CLASSICUI_CHK, IDM_CLASSICUI_CHK, false, nullptr); app.LocaleMenu (GetSubMenu (menu, 1), IDS_TIMEZONE, TIMEZONE_MENU, true, nullptr); app.LocaleMenu (GetSubMenu (menu, 1), IDS_LANGUAGE, LANG_MENU, true, L" (Language)"); app.LocaleMenu (menu, IDS_HELP, 2, true, nullptr); app.LocaleMenu (menu, IDS_WEBSITE, IDM_WEBSITE, false, nullptr); app.LocaleMenu (menu, IDS_CHECKUPDATES, IDM_CHECKUPDATES, false, nullptr); app.LocaleMenu (menu, IDS_ABOUT, IDM_ABOUT, false, L"\tF1"); app.LocaleEnum ((HWND)GetSubMenu (menu, 1), LANG_MENU, true, IDX_LANGUAGE); // enum localizations // configure listview for (UINT i = 0; i < TypeMax; i++) _r_listview_setitem (hwnd, IDC_LISTVIEW, i, 0, _app_gettimedescription ((EnumDateType)i, false)); _r_wnd_addstyle (hwnd, IDC_CURRENT, app.IsClassicUI () ? WS_EX_STATICEDGE : 0, WS_EX_STATICEDGE, GWL_EXSTYLE); RedrawWindow (hwnd, nullptr, nullptr, RDW_ERASENOW | RDW_INVALIDATE); break; } case WM_CONTEXTMENU: { if (GetDlgCtrlID ((HWND)wparam) == IDC_LISTVIEW) { const HMENU menu = LoadMenu (nullptr, MAKEINTRESOURCE (IDM_LISTVIEW)); const HMENU submenu = GetSubMenu (menu, 0); // localize app.LocaleMenu (submenu, IDS_COPY, IDM_COPY, false, L"\tCtrl+C"); if (!SendDlgItemMessage (hwnd, IDC_LISTVIEW, LVM_GETSELECTEDCOUNT, 0, 0)) EnableMenuItem (submenu, IDM_COPY, MF_BYCOMMAND | MF_DISABLED); POINT pt = {0}; GetCursorPos (&pt); TrackPopupMenuEx (submenu, TPM_RIGHTBUTTON | TPM_LEFTBUTTON, pt.x, pt.y, hwnd, nullptr); DestroyMenu (menu); } break; } case WM_NOTIFY: { switch (LPNMHDR (lparam)->code) { case DTN_USERSTRING: { LPNMDATETIMESTRING lpds = (LPNMDATETIMESTRING)lparam; if (lpds) { const rstring datetime = lpds->pszUserString; if (datetime.IsNumeric ()) _r_unixtime_to_systemtime (datetime.AsLonglong (), &lpds->st); } break; } case DTN_DATETIMECHANGE: { LPNMDATETIMECHANGE lpnmdtc = (LPNMDATETIMECHANGE)lparam; current_timestamp_utc = _r_unixtime_from_systemtime (&lpnmdtc->st); // store position of current time (utc) _app_printdate (hwnd, &lpnmdtc->st); break; } case LVN_GETINFOTIP: { LPNMLVGETINFOTIP lpnmlv = (LPNMLVGETINFOTIP)lparam; StringCchCopy (lpnmlv->pszText, lpnmlv->cchTextMax, _app_gettimedescription ((EnumDateType)lpnmlv->iItem, true)); break; } case TTN_GETDISPINFO: { LPNMTTDISPINFO lpnmdi = (LPNMTTDISPINFO)lparam; if ((lpnmdi->uFlags & TTF_IDISHWND) != 0) { WCHAR buffer[1024] = {0}; const UINT ctrl_id = GetDlgCtrlID ((HWND)lpnmdi->hdr.idFrom); if (ctrl_id == IDC_CURRENT) StringCchCopy (buffer, _countof (buffer), app.LocaleString (IDS_CURRENT, nullptr)); if (buffer[0]) lpnmdi->lpszText = buffer; } break; } } break; } case WM_COMMAND: { if (HIWORD (wparam) == 0 && LOWORD (wparam) >= IDX_LANGUAGE && LOWORD (wparam) <= IDX_LANGUAGE + app.LocaleGetCount ()) { app.LocaleApplyFromMenu (GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), LANG_MENU), LOWORD (wparam), IDX_LANGUAGE); return FALSE; } else if ((LOWORD (wparam) >= IDX_TIMEZONE && LOWORD (wparam) <= IDX_TIMEZONE + (_countof (int_timezones) - 1))) { const UINT idx = LOWORD (wparam) - IDX_TIMEZONE; const LONG bias = int_timezones[idx]; current_bias_idx = idx; app.ConfigSet (L"TimezoneBias", bias); const HMENU submenu_timezone = GetSubMenu (GetSubMenu (GetMenu (hwnd), 1), TIMEZONE_MENU); CheckMenuRadioItem (submenu_timezone, IDX_TIMEZONE, IDX_TIMEZONE + UINT (_countof (int_timezones) - 1), LOWORD (wparam), MF_BYCOMMAND); SYSTEMTIME st = {0}; _app_gettime (current_timestamp_utc, bias, &st); _app_printdate (hwnd, &st); return FALSE; } switch (LOWORD (wparam)) { case IDCANCEL: // process Esc key case IDM_EXIT: { DestroyWindow (hwnd); break; } case IDM_ALWAYSONTOP_CHK: { const bool new_val = !app.ConfigGet (L"AlwaysOnTop", false).AsBool (); CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED)); app.ConfigSet (L"AlwaysOnTop", new_val); _r_wnd_top (hwnd, new_val); break; } case IDM_CHECKUPDATES_CHK: { const bool new_val = !app.ConfigGet (L"CheckUpdates", true).AsBool (); CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED)); app.ConfigSet (L"CheckUpdates", new_val); break; } case IDM_CLASSICUI_CHK: { const bool new_val = !app.ConfigGet (L"ClassicUI", _APP_CLASSICUI).AsBool (); CheckMenuItem (GetMenu (hwnd), LOWORD (wparam), MF_BYCOMMAND | (new_val ? MF_CHECKED : MF_UNCHECKED)); app.ConfigSet (L"ClassicUI", new_val); break; } case IDM_WEBSITE: { ShellExecute (hwnd, nullptr, _APP_WEBSITE_URL, nullptr, nullptr, SW_SHOWDEFAULT); break; } case IDM_CHECKUPDATES: { app.UpdateCheck (true); break; } case IDM_ABOUT: { app.CreateAboutWindow (hwnd); break; } case IDM_COPY: { rstring buffer; size_t item = LAST_VALUE; while ((item = (size_t)SendDlgItemMessage (hwnd, IDC_LISTVIEW, LVM_GETNEXTITEM, item, LVNI_SELECTED)) != LAST_VALUE) { buffer.AppendFormat (L"%s\r\n", _r_listview_getitemtext (hwnd, IDC_LISTVIEW, item, 1).GetString ()); } if (!buffer.IsEmpty ()) { buffer.Trim (L"\r\n"); _r_clipboard_set (hwnd, buffer, buffer.GetLength ()); } break; } case IDC_CURRENT: { SYSTEMTIME st = {0}; _app_gettime (_r_unixtime_now (), _app_getcurrentbias (), &st); _app_printdate (hwnd, &st); break; } case IDM_SELECT_ALL: { ListView_SetItemState (GetDlgItem (hwnd, IDC_LISTVIEW), -1, LVIS_SELECTED, LVIS_SELECTED); break; } case IDM_TIMEZONE_NEXT: case IDM_TIMEZONE_PREV: { if (LOWORD (wparam) == IDM_TIMEZONE_NEXT) current_bias_idx = ((current_bias_idx == (_countof (int_timezones) - 1)) ? 0 : ++current_bias_idx); else current_bias_idx = (!current_bias_idx ? (_countof (int_timezones) - 1) : --current_bias_idx); SendMessage (hwnd, WM_COMMAND, MAKEWPARAM (IDX_TIMEZONE + current_bias_idx, 0), 0); break; } } } } return FALSE; }
INT_PTR TconvolverPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: cfgSet(IDFF_lvConvolverWidth0,ListView_GetColumnWidth(hlv,0)); cfgSet(IDFF_lvConvolverWidth1,ListView_GetColumnWidth(hlv,1)); cfgSet(IDFF_lvConvolverWidth2,ListView_GetColumnWidth(hlv,2)); cfgSet(IDFF_lvConvolverSelected,lvGetSelItem(IDC_LV_CONVOLVER_FILES)); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_ED_CONVOLVER_FILE: if (HIWORD(wParam)==EN_CHANGE && !isSetWindowText) { char_t flnm[MAX_PATH]; GetDlgItemText(m_hwnd,IDC_ED_CONVOLVER_FILE,flnm,MAX_PATH); cfgSet(IDFF_convolverFile,flnm); format2dlg(flnm); } return TRUE; } break; case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_CONVOLVER_FILES) switch (nmhdr->code) { case LVN_ITEMCHANGED: { NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam); enableMapping(nmlv->iItem!=-1); return TRUE; } case NM_DBLCLK: { NMITEMACTIVATE *nmia=(NMITEMACTIVATE*)lParam; if (nmia->iItem==-1 || nmia->iSubItem!=1) { return FALSE; } onManualFileSet(); return TRUE; } case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; int i=nmdi->item.iItem; if (i==-1) { break; } if (nmdi->item.mask&LVIF_TEXT) switch (nmdi->item.iSubItem) { case 0: { static const int speakers[]= {SPEAKER_FRONT_LEFT,SPEAKER_FRONT_RIGHT,SPEAKER_FRONT_CENTER,SPEAKER_LOW_FREQUENCY,SPEAKER_BACK_LEFT,SPEAKER_BACK_RIGHT}; strcpy(nmdi->item.pszText,_(IDC_LV_CONVOLVER_FILES,TsampleFormat::getSpeakerName(speakers[i]))); break; } case 1: { int dx=ListView_GetColumnWidth(hlv,1); char_t flnm[MAX_PATH]; cfgGet(speakersIdffs[i],flnm,MAX_PATH); HDC dc=GetDC(hlv); HGDIOBJ old=SelectObject(dc,(HGDIOBJ)SendMessage(hlv,WM_GETFONT,0,0)); PathCompactPath(dc,flnm,std::max(20,dx-15)); SelectObject(dc,old); ReleaseDC(hlv,dc); strcpy(nmdi->item.pszText,flnm); break; } case 2: if (const char_t *flnm=cfgGetStr(speakersIdffs[i])) if (flnm[0] && !speakerFormats[i]) { speakerFormats[i]=getWavDesc(flnm,IDC_LV_CONVOLVER_FILES); } strcpy(nmdi->item.pszText,speakerFormats[i].c_str()); break; } return TRUE; } } break; } } return TconfPageDecAudio::msgProc(uMsg,wParam,lParam); }
INT_PTR CALLBACK DlgLangpackOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { HWND hwndList = GetDlgItem(hwndDlg, IDC_LANGUAGES); switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); ComboBox_ResetContent(hwndList); EnumLangpacks(InsertPackItemEnumProc, (WPARAM)hwndList, (LPARAM)0); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_LANGEMAIL: { char buf[512]; mir_strcpy(buf, "mailto:"); if (GetDlgItemTextA(hwndDlg, LOWORD(wParam), &buf[7], _countof(buf) - 7)) Utils_OpenUrl(buf); } break; case IDC_MORELANG: Utils_OpenUrl("http://wiki.miranda-ng.org/index.php?title=Langpacks/en#Download"); break; case IDC_LANGUAGES: if (HIWORD(wParam) == CBN_SELCHANGE) { int idx = ComboBox_GetCurSel(hwndList); LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, idx); DisplayPackInfo(hwndDlg, pack); if (!(pack->flags & LPF_ENABLED)) SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), (pack->flags & LPF_ENABLED) && !(pack->flags & LPF_DEFAULT)); } break; case IDC_RELOAD: { EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), FALSE); int idx = ComboBox_GetCurSel(hwndList); LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, idx); ReloadLangpack(pack->tszFullPath); DisplayPackInfo(hwndDlg, pack); EnableWindow(GetDlgItem(hwndDlg, IDC_RELOAD), TRUE); } break; } break; case WM_NOTIFY: if (LPNMHDR(lParam)->code == PSN_APPLY) { TCHAR tszPath[MAX_PATH]; tszPath[0] = 0; int idx = ComboBox_GetCurSel(hwndList); int count = ComboBox_GetCount(hwndList); for (int i = 0; i < count; i++) { LANGPACK_INFO *pack = (LANGPACK_INFO*)ComboBox_GetItemData(hwndList, i); if (i == idx) { db_set_ts(NULL, "Langpack", "Current", pack->tszFileName); mir_tstrcpy(tszPath, pack->tszFullPath); pack->flags |= LPF_ENABLED; } else pack->flags &= ~LPF_ENABLED; } if (tszPath[0]) { ReloadLangpack(tszPath); if (LPPSHNOTIFY(lParam)->lParam == IDC_APPLY) { HWND hwndParent = GetParent(hwndDlg); PostMessage(hwndParent, WM_CLOSE, 1, 0); mir_forkthread(ReloadOptions, hwndParent); } } } break; case WM_DESTROY: int count = ListBox_GetCount(hwndList); for (int i = 0; i < count; i++) delete (LANGPACK_INFO*)ListBox_GetItemData(hwndList, i); ComboBox_ResetContent(hwndList); return TRUE; } return FALSE; }
INT_PTR TffdshowPageDec::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CBX_PRESETS: if (HIWORD(wParam) == CBN_SELCHANGE) { char_t presetName[256], actPresetName[256]; GetDlgItemText(m_hwnd, IDC_CBX_PRESETS, presetName, 255); deciD->getActivePresetName(actPresetName, 255); if (stricmp(presetName, actPresetName) != 0) { selectPreset(presetName); } return TRUE; } break; } break; case WM_FFONNEWFILTERS: { for (ThtiPages::const_iterator hp = filterPages.begin(); hp != filterPages.end(); hp++) for (TconfPages::const_iterator i = (*hp)->begin(); i != (*hp)->end(); i++) { ((TconfPageDec*)(*i))->onNewFilter(); } return TRUE; } case WM_NOTIFY: { NMHDR *nmhdr = LPNMHDR(lParam); if (nmhdr->hwndFrom == htv && nmhdr->idFrom == IDC_TV_TREE) switch (nmhdr->code) { case TVN_GETINFOTIP: { if (!cfgGet(IDFF_showHints)) { return FALSE; } NMTVGETINFOTIP *nmtvit = LPNMTVGETINFOTIP(lParam); TconfPageBase *page = hti2page(nmtvit->hItem); char_t tipS[1024] = _l(""); if (deciD->getFilterTipEx(page->filterID, page->filterPageID, tipS, 1023) != S_OK) { page->getTip(tipS, 1023); } if (tipS[0] == '\0') { return FALSE; } memset(nmtvit->pszText, 0, nmtvit->cchTextMax); ff_strncpy(nmtvit->pszText, tipS, nmtvit->cchTextMax - 1); return TRUE; } case NM_CUSTOMDRAW: { NMTVCUSTOMDRAW *tvcd = LPNMTVCUSTOMDRAW(lParam); int rcDy = tvcd->nmcd.rc.bottom - tvcd->nmcd.rc.top; if (tvcd->nmcd.dwDrawStage == CDDS_PREPAINT) { setDlgResult(CDRF_NOTIFYITEMDRAW); return TRUE; } else if (tvcd->nmcd.dwDrawStage == CDDS_ITEMPREPAINT) { TconfPageBase *page = ((ThtiPage*)tvcd->nmcd.lItemlParam)->getPage(); if (page->getInter() == -1 && page->getOrder() == -1) { return FALSE; } setDlgResult(CDRF_NOTIFYPOSTPAINT); return TRUE; } else if (tvcd->nmcd.dwDrawStage == CDDS_ITEMPOSTPAINT) { RECT &tr = tvcd->nmcd.rc; if (tr.right > tr.left && tr.bottom > tr.top) { RECT rr; TreeView_GetItemRect(htv, HTREEITEM(tvcd->nmcd.dwItemSpec), &rr, true); rr.left -= 24; TconfPageBase *page = ((ThtiPage*)tvcd->nmcd.lItemlParam)->getPage(); if (page->getInter() != -1) { ImageList_Draw(hil, page->getInter() ? ilChecked : ilClear, tvcd->nmcd.hdc, tr.left + 8 + rr.left, tr.top + (rcDy - 16) / 2, ILD_TRANSPARENT); } if (isIn(page->getOrder(), deciD->getMinOrder2(), deciD->getMaxOrder2()) && (tvcd->nmcd.uItemState & CDIS_SELECTED)) { int img; HTREEITEM hti = page->hti; HTREEITEM htiPrev = TreeView_GetPrevVisible(htv, hti), htiNext = TreeView_GetNextVisible(htv, hti); int order = page->getOrder(), orderPrev = hti2page(htiPrev)->getOrder(), orderNext = hti2page(htiNext)->getOrder(); if (order == deciD->getMinOrder2()) { img = ilArrowD; } else if (order == deciD->getMaxOrder2()) { img = ilArrowU; } else { img = ilArrowUD; } ImageList_DrawEx(hil, img, tvcd->nmcd.hdc, tr.left + 2 + rr.left, tr.top + (rcDy - 16) / 2, 5, 16, CLR_DEFAULT, CLR_DEFAULT, ILD_TRANSPARENT); } } return TRUE; } return FALSE; } case NM_CLICK: { POINT ps; GetCursorPos(&ps); ScreenToClient(htv, &ps); TVHITTESTINFO tvhti; tvhti.pt = ps; HTREEITEM hti = TreeView_HitTest(htv, &tvhti); if (!hti) { return FALSE; } RECT rr; TreeView_GetItemRect(htv, hti, &rr, TRUE); RECT r; TreeView_GetItemRect(htv, hti, &r, FALSE); ps.x -= rr.left - 24; int iconTop = ((r.bottom - r.top) - 16) / 2; ps.y -= r.top; if (ps.x >= 8 && ps.x <= 16 + 8 && ps.y >= iconTop + 2 && ps.y <= iconTop + 13) { if (invInter(hti2page(hti), &r)) { return TRUE; } } else if (ps.x >= 2 && ps.x <= 7 && TreeView_GetSelection(htv) == tvhti.hItem) { int center = (r.bottom - r.top) / 2; if (ps.y > center - 6 && ps.y < center - 1 && page->getOrder() > deciD->getMinOrder2()) { swap(-1); return TRUE; } else if (ps.y > center + 1 && ps.y < center + 6 && page->getOrder() < deciD->getMaxOrder2()) { swap(1); return TRUE; } } return FALSE; } case TVN_BEGINDRAG: { NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam); dragpage = hti2page(nmtv->itemNew.hItem); int order = dragpage->getOrder(); TreeView_SelectItem(htv, nmtv->itemNew.hItem); if (isIn(order, deciD->getMinOrder2(), deciD->getMaxOrder2())) { SetCapture(m_hwnd); } else { dragpage = NULL; } break; } } break; } case WM_MOUSEMOVE: if (dragpage) { TVHITTESTINFO tvhti; tvhti.pt.x = LOWORD(lParam) - tvx; tvhti.pt.y = HIWORD(lParam) - tvy; if (HTREEITEM htiTarget = TreeView_HitTest(htv, &tvhti)) { //TreeView_SelectDropTarget(htv,htiTarget); TconfPageBase *targetpage = hti2page(htiTarget); if (isIn(targetpage->getOrder(), deciD->getMinOrder2(), deciD->getMaxOrder2())) { swap(dragpage, targetpage); } } return TRUE; } break; case WM_LBUTTONUP: if (dragpage) { dragpage = NULL; ReleaseCapture(); return TRUE; } break; } return TffdshowPageBase::msgProc(uMsg, wParam, lParam); }
v_NMHDRCode_Dispatch(TGeneric& i, void (TGeneric::*f)(uint), WPARAM, LPARAM p2) { (i.*f)((LPNMHDR(p2))->code); return 0; }
INT_PTR TdlgPropsEdit::msgProc(UINT uMsg,WPARAM wParam,LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { hlv=GetDlgItem(m_hwnd,IDC_LV_PROPS); int ncol=0; ListView_AddCol(hlv,ncol,300,_l("Original:/Translation"),false); ListView_SetItemCount(hlv,props.size()*2); ListView_SetExtendedListViewStyleEx(hlv,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES,LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: if (HWND(lParam)==GetDlgItem(m_hwnd,IDOK) || HWND(lParam)==GetDlgItem(m_hwnd,IDCANCEL)) { EndDialog(m_hwnd,LOWORD(wParam)); return TRUE; } break; }; break; case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (nmhdr->idFrom==IDC_LV_PROPS) switch (nmhdr->code) { case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; int i=nmdi->item.iItem; if (i==-1) { break; } if (nmdi->item.mask&LVIF_TEXT) switch (nmdi->item.iSubItem) { case 0: { //strcpy(nmdi->item.pszText,((i&1)==0)?props[i/2].first.c_str():props[i/2].second.c_str()); nmdi->item.pszText=(LPTSTR)((i&1)==0?props[i/2].first.c_str():props[i/2].second.c_str()); break; } } return TRUE; } case NM_CUSTOMDRAW: { NMLVCUSTOMDRAW *lvcd=LPNMLVCUSTOMDRAW(lParam); if (lvcd->nmcd.dwDrawStage==CDDS_PREPAINT) { setDlgResult(CDRF_NOTIFYITEMDRAW); return TRUE; } if (lvcd->nmcd.dwDrawStage==CDDS_ITEMPREPAINT) { if (!italicFont) { LOGFONT oldFont; HFONT hf=(HFONT)GetCurrentObject(lvcd->nmcd.hdc,OBJ_FONT); GetObject(hf,sizeof(LOGFONT),&oldFont); oldFont.lfItalic=TRUE; italicFont=CreateFontIndirect(&oldFont); } if ((lvcd->nmcd.dwItemSpec&1)==0) { SelectObject(lvcd->nmcd.hdc,italicFont); } setDlgResult(CDRF_NEWFONT); return TRUE; } return TRUE; } case LVN_BEGINLABELEDIT: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; if ((nmdi->item.iItem&1)==0) { setDlgResult(TRUE); return TRUE; } break; } case LVN_ENDLABELEDIT: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; if (nmdi->item.pszText) { props[nmdi->item.iItem/2].second=nmdi->item.pszText; setDlgResult(TRUE); return TRUE; } break; } case LVN_KEYDOWN: { NMLVKEYDOWN *nmkd=(NMLVKEYDOWN*)lParam; if (nmkd->wVKey==VK_F2) { ListView_EditLabel(hlv,ListView_GetNextItem(hlv,-1,LVNI_SELECTED)); return TRUE; } break; } } break; } } return Twindow::msgProc(uMsg,wParam,lParam); }
INT_PTR TpresetsPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: cfgSet(IDFF_lvWidth0,ListView_GetColumnWidth(hlv,0)); if (italicFont) { DeleteObject(italicFont); } italicFont=NULL; if (boldFont) { DeleteObject(boldFont); } boldFont=NULL; break; case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_PRESETS) switch (nmhdr->code) { case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; int i=nmdi->item.iItem; if (i==-1) { break; } if (nmdi->item.mask&LVIF_TEXT) { strcpy(nmdi->item.pszText,(*parent->localPresets)[i]->presetName); } return TRUE; } case LVN_ITEMCHANGED: { if (nochange) { break; } NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam); if (nmlv->iItem==-1) { return TRUE; } char_t presetName[1024]; ListView_GetItemText(hlv,nmlv->iItem,0,presetName,1023); applying=true; parent->selectPreset(presetName); cfg2dlg(); applying=false; return TRUE; } case LVN_KEYDOWN: { NMLVKEYDOWN *nmkd=(NMLVKEYDOWN*)lParam; switch (nmkd->wVKey) { case VK_F2: ListView_EditLabel(hlv,ListView_GetNextItem(hlv,-1,LVNI_SELECTED)); return TRUE; case VK_SPACE: changePresetState(); return TRUE; } break; } case NM_DBLCLK: case NM_CLICK: { NMITEMACTIVATE *nmia=LPNMITEMACTIVATE(lParam); if (nmia->iItem==-1) { char_t activePresetName[MAX_PATH]; deciD->getActivePresetName(activePresetName, countof(activePresetName)); applying=true; parent->selectPreset(activePresetName); cfg2dlg(); applying=false; } else if (nmhdr->code==NM_DBLCLK) { changePresetState(); } return TRUE; } case LVN_ENDLABELEDIT: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; if (!nmdi->item.pszText) { return FALSE; } if (parent->localPresets->getPreset(nmdi->item.pszText,false)==NULL && Tpreset::isValidPresetName(nmdi->item.pszText)) { setDlgResult(TRUE); ffstring presetName; Tpreset::normalizePresetName(presetName,nmdi->item.pszText); renamePreset(presetName.c_str()); } else { setDlgResult(FALSE); } } case NM_CUSTOMDRAW: { NMLVCUSTOMDRAW *lvcd=LPNMLVCUSTOMDRAW(lParam); if (lvcd->nmcd.dwDrawStage==CDDS_PREPAINT) { setDlgResult(CDRF_NOTIFYITEMDRAW); return TRUE; } if (lvcd->nmcd.dwDrawStage==CDDS_ITEMPREPAINT) { if (!italicFont) { LOGFONT oldFont; HFONT hf=(HFONT)GetCurrentObject(lvcd->nmcd.hdc,OBJ_FONT); GetObject(hf,sizeof(LOGFONT),&oldFont); oldFont.lfItalic=TRUE; italicFont=CreateFontIndirect(&oldFont); oldFont.lfItalic=FALSE; oldFont.lfWeight=FW_BLACK; boldFont=CreateFontIndirect(&oldFont); } Tpreset *preset=(*parent->localPresets)[lvcd->nmcd.dwItemSpec]; if (preset->autoLoadedFromFile) { SelectObject(lvcd->nmcd.hdc,italicFont); } const char_t *defaultPreset=cfgGetStr(IDFF_defaultPreset); if (stricmp(defaultPreset,preset->presetName)==0) { SelectObject(lvcd->nmcd.hdc,boldFont); } setDlgResult(/*CDRF_NOTIFYPOSTPAINT*/CDRF_NEWFONT); return TRUE; } return TRUE; } } break; } } return TconfPageDec::msgProc(uMsg,wParam,lParam); }
INT_PTR TffdshowPageBase::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: { for (ThtiPages::const_iterator htiPage = htiPages.begin(); htiPage != htiPages.end(); htiPage++) { delete *htiPage; } htiPages.clear(); page = NULL; if (arrowsFont) { DeleteObject(arrowsFont); } arrowsFont = NULL; if (hil) { ImageList_Destroy(hil); } hil = NULL; for (int i = 0; i < countof(bmp1); i++) { DeleteObject(bmp1[i]); DeleteObject(bmp2[i]); } break; } case WM_FFONCHANGE: DPRINTF(_l("onChangeParam")); if (wParam == IDFF_alwaysOnTop && IsWindow(dlg)) { SetWindowPos(dlg, lParam ? HWND_TOPMOST : HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); } if (wParam != 0) { setChange(); } return TRUE; case WM_FFONFRAME: { MSG msg; if (PeekMessage(&msg, m_hwnd, WM_FFONFRAME, WM_FFONFRAME, PM_NOREMOVE)) { return TRUE; // drop msg when next WM_FFONFRAME is already in the message queue. } for (ThtiPages::const_iterator hp = htiPages.begin(); hp != htiPages.end(); hp++) for (TconfPages::const_iterator i = (*hp)->begin(); i != (*hp)->end(); i++) if ((*i)->m_hwnd) { (*i)->onFrame(); } return TRUE; } case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_BT_HELP: if (HIWORD(wParam) == BN_CLICKED) { onHelp(); return TRUE; } break; } break; case WM_CONTEXTMENU: if (translateTV()) { return TRUE; } break; case WM_NOTIFY: { NMHDR *nmhdr = LPNMHDR(lParam); if (nmhdr->hwndFrom == htv && nmhdr->idFrom == IDC_TV_TREE) switch (nmhdr->code) { case TVN_SELCHANGED: { NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam); if (nmtv->itemNew.hItem) { selectPage(hti2page(nmtv->itemNew.hItem)); return TRUE; } break; } case TVN_ITEMEXPANDING: { NMTREEVIEW *nmtv = LPNMTREEVIEW(lParam); if (nmtv->action == TVE_COLLAPSE) { setDlgResult(TRUE); } return TRUE; } } break; } } return Twindow::msgProc(uMsg, wParam, lParam); }
INT_PTR TcodecsPage::msgProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: cfgSet(IDFF_lvCodecsWidth0,ListView_GetColumnWidth(hlv,0)); cfgSet(IDFF_lvCodecsWidth1,ListView_GetColumnWidth(hlv,1)); cfgSet(IDFF_lvCodecsWidth2,ListView_GetColumnWidth(hlv,2)); cfgSet(IDFF_lvCodecsSelected,lvGetSelItem(IDC_LV_INCODECS)); break; case WM_COMMAND: switch (LOWORD(wParam)) { case IDC_CBX_INCODECS: if (HIWORD(wParam)==CBN_SELCHANGE && IsWindowVisible(hcbx)) { int ii=lvGetSelItem(IDC_LV_INCODECS); int idff=formats[ii].idff; cfgSet(idff,(int)cbxGetCurItemData(IDC_CBX_INCODECS)); options2dlg(ii); return TRUE; } break; case IDC_CHB_CODEC_OPT1: case IDC_CHB_CODEC_OPT2: case IDC_CHB_CODEC_OPT3: case IDC_CHB_CODEC_OPT4: dlg2options(LOWORD(wParam)); return TRUE; } break; case WM_NOTIFY: { NMHDR *nmhdr=LPNMHDR(lParam); if (nmhdr->hwndFrom==hlv && nmhdr->idFrom==IDC_LV_INCODECS) switch (nmhdr->code) { case LVN_GETDISPINFO: { NMLVDISPINFO *nmdi=(NMLVDISPINFO*)lParam; int i=nmdi->item.iItem; if (i==-1) { break; } if (nmdi->item.mask&LVIF_TEXT) switch (nmdi->item.iSubItem) { case 0: strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].descr)); break; case 1: strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].getDecoderName(cfgGet(formats[i].idff)))); break; case 2: strcpy(nmdi->item.pszText,_(IDC_LV_INCODECS,formats[i].hint)); break; } return TRUE; } case LVN_GETINFOTIP: { NMLVGETINFOTIP *nmit=(NMLVGETINFOTIP*)lParam; if (nmit->iItem!=-1 && nmit->iSubItem==0) { ff_strncpy(nmit->pszText,formats[nmit->iItem].hint,nmit->cchTextMax); } return TRUE; } case LVN_ITEMCHANGED: { NMLISTVIEW *nmlv=LPNMLISTVIEW(lParam); if (nmlv->iItem!=curitem) { curitem=-1; show(false,IDC_CBX_INCODECS); options2dlg(nmlv->iItem); } return TRUE; } case NM_CLICK: { NMITEMACTIVATE *nmia=LPNMITEMACTIVATE(lParam); if (nmia->iItem!=-1 && nmia->iSubItem==1) { beginCodecChange(nmia->iItem); } else { show(false,IDC_CBX_INCODECS); } return TRUE; } } break; } } return TconfPageBase::msgProc(uMsg,wParam,lParam); }