// Sorts the listview control by the specified order BOOL DirList_Sort(HWND hwnd, int lFlags, BOOL fRev) { if (fRev) return ListView_SortItems(hwnd, DirList_CompareProcRw, lFlags); else return ListView_SortItems(hwnd, DirList_CompareProcFw, lFlags); }
void TreeList_Update(HWND hwnd) { TTreeList_Data *data = (TTreeList_Data *)sttTreeList_GeWindowData(hwnd); HTREELISTITEM hItem = data->root; int sortIndex = 0; SendMessage(hwnd, WM_SETREDRAW, FALSE, 0); if (data->sortMode) TreeList_RecursiveApply(hItem, sttTreeList_SortItems, (LPARAM)data->sortMode); TreeList_RecursiveApply(hItem, sttTreeList_ResetIndex, (LPARAM)&sortIndex); if (data->filter) TreeList_RecursiveApply(hItem, sttTreeList_FilterItems, (LPARAM)data->filter); for (int i = ListView_GetItemCount(hwnd); i--;) { LVITEM lvi = {0}; lvi.mask = LVIF_PARAM; lvi.iItem = i; lvi.iSubItem = 0; ListView_GetItem(hwnd, &lvi); HTREELISTITEM ptli = (HTREELISTITEM)lvi.lParam; if ((ptli->flags & TLIF_VISIBLE) && (!data->filter || (ptli->flags & TLIF_FILTERED))) { ptli->flags |= TLIF_HASITEM; if (ptli->flags & TLIF_MODIFIED) { lvi.mask = LVIF_TEXT | LVIF_STATE | LVIF_IMAGE | LVIF_TEXT; lvi.iItem = i; lvi.iSubItem = 0; lvi.pszText = ptli->text[0]; lvi.stateMask = LVIS_OVERLAYMASK|LVIS_STATEIMAGEMASK; lvi.iImage = ptli->iIcon; if (data->mode == TLM_TREE) lvi.state = INDEXTOSTATEIMAGEMASK( ((ptli->subItems.getCount() == 0) && !(ptli->flags & TLIF_FAKEPARENT)) ? 0 : (ptli->flags & TLIF_EXPANDED) ? 1 : 2) | INDEXTOOVERLAYMASK(ptli->iOverlay); else lvi.state = INDEXTOSTATEIMAGEMASK( ((ptli->subItems.getCount() == 0) && !(ptli->flags & TLIF_FAKEPARENT)) ? 0 : 3) | INDEXTOOVERLAYMASK(ptli->iOverlay); ListView_SetItem(hwnd, &lvi); for (int j = 1; j < ptli->text.getCount(); ++j) ListView_SetItemText(hwnd, i, j, ptli->text[j]); } } else ListView_DeleteItem(hwnd, i); } if (data->mode == TLM_TREE) TreeList_RecursiveApply(hItem, sttTreeList_CreateItems, (LPARAM)hwnd); else { for (int i = data->hItemSelected->subItems.getCount(); i--;) sttTreeList_CreateItems_List(data->hItemSelected->subItems[i], (LPARAM)hwnd); for (HTREELISTITEM hItem = data->hItemSelected; !(hItem->flags & TLIF_ROOT); hItem = hItem->parent) sttTreeList_CreateItems_List(hItem, (LPARAM)hwnd); } ListView_SortItems(hwnd, sttTreeList_SortFunc, 0); SendMessage(hwnd, WM_SETREDRAW, TRUE, 0); UpdateWindow(hwnd); }
void CManageBookmarksDialog::SortListViewItems(NBookmarkHelper::SortMode_t SortMode) { m_pmbdps->m_SortMode = SortMode; HWND hListView = GetDlgItem(m_hDlg,IDC_MANAGEBOOKMARKS_LISTVIEW); ListView_SortItems(hListView,NManageBookmarksDialog::SortBookmarksStub,reinterpret_cast<LPARAM>(this)); }
void Picker_Sort(HWND hwndPicker) { LV_FINDINFO lvfi; //struct PickerInfo *pPickerInfo; struct CompareProcParams params; int nItem = 0; BOOL res = 0; //pPickerInfo = GetPickerInfo(hwndPicker); // populate the CompareProcParams structure Picker_PopulateCompareProcParams(hwndPicker, ¶ms); res = ListView_SortItems(hwndPicker, Picker_CompareProc, (LPARAM) ¶ms); Picker_ResetHeaderSortIcon(hwndPicker); memset(&lvfi, 0, sizeof(lvfi)); lvfi.flags = LVFI_PARAM; lvfi.lParam = Picker_GetSelectedItem(hwndPicker); nItem = ListView_FindItem(hwndPicker, -1, &lvfi); res = ListView_EnsureVisible(hwndPicker, nItem, FALSE); res++; }
void TOSDpageDec::osd2dlg(void) { const char_t *osdsStr = cfgGetStr(IDFF_OSDformat); if (strncmp(osdsStr, _l("user"), 4) == 0) { ListView_SetExtendedListViewStyleEx(hlv, LVS_EX_CHECKBOXES, 0); setCheck(IDC_CHB_OSD_USER, 1); enable(1, IDC_ED_OSD_USER); setText(IDC_ED_OSD_USER, _l("%s"), osdsStr + 4); user = true; } else { ListView_SetExtendedListViewStyleEx(hlv, LVS_EX_CHECKBOXES, LVS_EX_CHECKBOXES); setCheck(IDC_CHB_OSD_USER, 0); enable(0, IDC_ED_OSD_USER); strtok(osdsStr, _l(" "), osds); int cnt = ListView_GetItemCount(hlv); nostate = true; for (int j = 0; j < cnt; j++) { ListView_SetCheckState(hlv, j, FALSE); } nostate = false; for (ints::const_iterator i = osds.begin(); i != osds.end(); i++) { checkOSDline(*i, true); } ListView_SortItems(hlv, osdsSort, LPARAM(this)); user = false; } int isAutoHide = cfgGet(IDFF_OSDisAutoHide); setCheck(IDC_CHB_OSD_IS_AUTO_HIDE, isAutoHide); enable(isAutoHide, IDC_ED_OSD_DURATION_VISIBLE); SetDlgItemInt(m_hwnd, IDC_ED_OSD_DURATION_VISIBLE, cfgGet(IDFF_OSDdurationVisible), FALSE); save2dlg(); }
int GenerateList(HWND hList, HWND hStatus) { TFlashHeader *headers; uint32_t i; int side = 0, empty = 0; char str[128]; ListView_DeleteAllItems(hList); EnableWindow(hList, FALSE); SetWindowText(hStatus, "Reading disk headers..."); CheckMessages(); fdsemu->dev->FlashUtil->ReadHeaders(); headers = fdsemu->dev->FlashUtil->GetHeaders(); if (headers == 0) { return(-1); } for (i = 0; i < fdsemu->dev->Slots; i++) { TFlashHeader *header = &headers[i]; uint8_t *buf = headers[i].filename; //empty slot if (buf[0] == 0xFF) { empty++; continue; } //this slot has valid ownerid/nextid if (header->flags & 0x20) { //first disk image of a set if (header->ownerid == i) { InsertListViewItem(hList, (char*)buf, i); } } else { //filename is here if (buf[0] != 0) { InsertListViewItem(hList, (char*)buf, i); } } } ListView_SortItems(hList, CompareFunc, 0); EnableWindow(hList, TRUE); //update teh status bar if (empty >= 0) { sprintf(str, "%d slots used, %d remaining.", fdsemu->dev->Slots - empty, empty); } else { sprintf(str, "Error reading flash headers."); } SetWindowText(hStatus, str); return(empty); }
void CManageBookmarksDialog::SetupListView() { HWND hListView = GetDlgItem(m_hDlg,IDC_MANAGEBOOKMARKS_LISTVIEW); m_pBookmarkListView = new CBookmarkListView(hListView); int iColumn = 0; for each(auto ci in m_pmbdps->m_vectorColumnInfo) { if(ci.bActive) { LVCOLUMN lvCol; TCHAR szTemp[128]; GetColumnString(ci.ColumnType,szTemp,SIZEOF_ARRAY(szTemp)); lvCol.mask = LVCF_TEXT|LVCF_WIDTH; lvCol.pszText = szTemp; lvCol.cx = ci.iWidth; ListView_InsertColumn(hListView,iColumn,&lvCol); ++iColumn; } } m_pBookmarkListView->InsertBookmarksIntoListView(m_AllBookmarks); int iItem = 0; /* Update the data for each of the sub-items. */ /* TODO: This needs to be done by CBookmarkListView. */ for(auto itr = m_AllBookmarks.begin();itr != m_AllBookmarks.end();++itr) { int iSubItem = 1; for each(auto ci in m_pmbdps->m_vectorColumnInfo) { /* The name column will always appear first in the set of columns and can be skipped here. */ if(ci.bActive && ci.ColumnType != CManageBookmarksDialogPersistentSettings::COLUMN_TYPE_NAME) { TCHAR szColumn[256]; GetBookmarkItemColumnInfo(*itr,ci.ColumnType,szColumn,SIZEOF_ARRAY(szColumn)); ListView_SetItemText(hListView,iItem,iSubItem,szColumn); ++iSubItem; } } ++iItem; } ListView_SortItems(hListView,NManageBookmarksDialog::SortBookmarksStub,reinterpret_cast<LPARAM>(this)); NListView::ListView_SelectItem(hListView,0,TRUE); m_bListViewInitialized = true; }
int sort_listview(HWND hlistview,int dir,int column) { struct find_helper fh; fh.hlistview=hlistview; fh.dir=dir; fh.col=column; ListView_SortItems(hlistview,compare_func,&fh); return TRUE; }
void UpdateProcesses() { int i; ULONG l; LV_ITEM item; LPPROCESS_PAGE_LIST_ITEM pData; SendMessage(hProcessPageListCtrl, WM_SETREDRAW, FALSE, 0); /* Remove old processes */ for (i = 0; i < ListView_GetItemCount(hProcessPageListCtrl); i++) { memset(&item, 0, sizeof (LV_ITEM)); item.mask = LVIF_PARAM; item.iItem = i; (void)ListView_GetItem(hProcessPageListCtrl, &item); pData = (LPPROCESS_PAGE_LIST_ITEM)item.lParam; if (!ProcessRunning(pData->ProcessId)) { (void)ListView_DeleteItem(hProcessPageListCtrl, i); HeapFree(GetProcessHeap(), 0, pData); } } /* Check for difference in listview process and performance process counts */ if (ListView_GetItemCount(hProcessPageListCtrl) != PerfDataGetProcessCount()) { /* Add new processes by checking against the current items */ for (l = 0; l < PerfDataGetProcessCount(); l++) { AddProcess(l); } } if (TaskManagerSettings.SortColumn != -1) { (void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL); } SendMessage(hProcessPageListCtrl, WM_SETREDRAW, TRUE, 0); /* Select first item if any */ if ((ListView_GetNextItem(hProcessPageListCtrl, -1, LVNI_FOCUSED | LVNI_SELECTED) == -1) && (ListView_GetItemCount(hProcessPageListCtrl) > 0) && !bProcessPageSelectionMade) { ListView_SetItemState(hProcessPageListCtrl, 0, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED); bProcessPageSelectionMade = TRUE; } /* else { bProcessPageSelectionMade = FALSE; } */ }
void ListSort::sort() { int idx = ListView_GetSelectionMark(_hwnd); LPARAM param = ListView_GetItemData(_hwnd, idx); ListView_SortItems(_hwnd, _compare_fct, (LPARAM)this); if (idx >= 0) { idx = ListView_FindItemPara(_hwnd, param); ListView_EnsureVisible(_hwnd, idx, FALSE); } }
void ListView::sort() { if (m_sortColumnIndex >= 0 && m_compareItem != 0) { // use sortColumnIndex (lParamSort) as an index of column and // as a flag: positive for ascending order, // negative for descending order int sortColumnIndex = m_sortColumnIndex + 1; if (!m_sortAscending) { sortColumnIndex = -sortColumnIndex; } ListView_SortItems(m_hwnd, m_compareItem, sortColumnIndex); } }
void CCCFrontEnd::OnColumnclickList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView && bAllowSort) { ListView_SortItems(pNMListView->hdr.hwndFrom, CCFEListViewCompareProc, (LPARAM)(pNMListView->iSubItem)); bSortForward[pNMListView->iSubItem] = !bSortForward[pNMListView->iSubItem]; } *pResult = 0; }
void CStopConnection::OnColumnclickTo(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView && m_bAllowSort) { ListView_SortItems(pNMListView->hdr.hwndFrom, SCListViewToCompareProc, (LPARAM)(pNMListView->iSubItem)); bSortForwardTo[pNMListView->iSubItem] = !bSortForwardTo[pNMListView->iSubItem]; } *pResult = 0; }
void CServices::OnHdnItemclickServicesList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR); LVCOLUMN col; col.mask = LVCF_SUBITEM; /*Get the colum Info*/ ListView_GetColumn(hServicePageListCtrl,phdr->iItem,&col); serviceColumn = col.iSubItem; ListView_SortItems(hServicePageListCtrl,ServiceCompareFunc,NULL); serviceIsASC = !serviceIsASC; *pResult = 0; }
void CProcesses::OnHdnItemclickProcessList(NMHDR *pNMHDR, LRESULT *pResult) { LPNMHEADER phdr = reinterpret_cast<LPNMHEADER>(pNMHDR); LVCOLUMN col; col.mask = LVCF_SUBITEM; /*Get the colum Info*/ ListView_GetColumn(hProcPageListCtrl,phdr->iItem,&col); sortColum = col.iSubItem; isASC = !isASC; ListView_SortItems(hProcPageListCtrl,ProcessPageCompareFunc,NULL); *pResult = 0; }
static BOOL InitializeFileTypesListCtrl(HWND hwndDlg) { HWND hDlgCtrl; DWORD dwIndex = 0; WCHAR szName[50]; WCHAR szFile[100]; DWORD dwName; LVITEMW lvItem; INT iItem = 0; hDlgCtrl = GetDlgItem(hwndDlg, 14000); InitializeFileTypesListCtrlColumns(hDlgCtrl); szFile[0] = 0; if (!LoadStringW(shell32_hInstance, IDS_SHV_COLUMN1, szFile, sizeof(szFile) / sizeof(WCHAR))) { /* default to english */ wcscpy(szFile, L"File"); } szFile[(sizeof(szFile)/sizeof(WCHAR))-1] = 0; dwName = sizeof(szName) / sizeof(WCHAR); while(RegEnumKeyExW(HKEY_CLASSES_ROOT, dwIndex++, szName, &dwName, NULL, NULL, NULL, NULL) == ERROR_SUCCESS) { InsertFileType(hDlgCtrl, szName, &iItem, szFile); dwName = sizeof(szName) / sizeof(WCHAR); } /* sort list */ ListView_SortItems(hDlgCtrl, ListViewCompareProc, NULL); /* select first item */ ZeroMemory(&lvItem, sizeof(LVITEMW)); lvItem.mask = LVIF_STATE; lvItem.stateMask = (UINT) - 1; lvItem.state = LVIS_FOCUSED | LVIS_SELECTED; lvItem.iItem = 0; (void)SendMessageW(hDlgCtrl, LVM_SETITEMW, 0, (LPARAM)&lvItem); return TRUE; }
BOOL CProcesses::OnInitDialog() { CDialogEx::OnInitDialog(); SetBackgroundColor(RGB(255, 255,255)); hProcPageListCtrl = ::GetDlgItem(this->m_hWnd, IDC_Process_LIST); columnMgr.AddColumns(hProcPageListCtrl); m_Process.SetExtendedStyle(m_Process.GetExtendedStyle()|LVS_EX_FULLROWSELECT); CTaskSetting taskSetting; sortColum = taskSetting.GetSortColumn(); isASC = taskSetting.IsASC(); CreateThread(NULL, 0, ProcPageRefreshThread, NULL, 0, NULL); ListView_SortItems(hProcPageListCtrl,ProcessPageCompareFunc,NULL); SetTimer(1,1000,NULL); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }
INT_PTR CALLBACK DlgPluginOpt(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_INITDIALOG: TranslateDialogDefault(hwndDlg); timerID = 0; { HWND hwndList = GetDlgItem(hwndDlg, IDC_PLUGLIST); mir_subclassWindow(hwndList, PluginListWndProc); HIMAGELIST hIml = ImageList_Create(16, 16, ILC_MASK | ILC_COLOR32, 4, 0); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_UNICODE); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_ANSI); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_LOADED); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_NOTLOADED); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_LOADEDGRAY); ImageList_AddIcon_IconLibLoaded(hIml, SKINICON_OTHER_NOTLOADEDGRAY); ListView_SetImageList(hwndList, hIml, LVSIL_SMALL); LVCOLUMN col; col.mask = LVCF_TEXT | LVCF_WIDTH; col.pszText = _T(""); col.cx = 40; ListView_InsertColumn(hwndList, 0, &col); col.pszText = TranslateT("Plugin"); col.cx = 180; ListView_InsertColumn(hwndList, 1, &col); col.pszText = TranslateT("Name"); col.cx = 180;//max = 220; ListView_InsertColumn(hwndList, 2, &col); col.pszText = TranslateT("Version"); col.cx = 75; ListView_InsertColumn(hwndList, 3, &col); ListView_SetExtendedListViewStyleEx(hwndList, 0, LVS_EX_SUBITEMIMAGES | LVS_EX_CHECKBOXES | LVS_EX_LABELTIP | LVS_EX_FULLROWSELECT); // scan the plugin dir for plugins, cos arPluginList.destroy(); szFilter.Empty(); enumPlugins(dialogListPlugins, (WPARAM)hwndDlg, (LPARAM)hwndList); // sort out the headers ListView_SetColumnWidth(hwndList, 1, LVSCW_AUTOSIZE); // dll name int w = ListView_GetColumnWidth(hwndList, 1); if (w > 110) { ListView_SetColumnWidth(hwndList, 1, w = 110); } int max = w < 110 ? 189 + 110 - w : 189; ListView_SetColumnWidth(hwndList, 3, LVSCW_AUTOSIZE); // short name w = ListView_GetColumnWidth(hwndList, 2); if (w > max) ListView_SetColumnWidth(hwndList, 2, max); ListView_SortItems(hwndList, SortPlugins, (LPARAM)hwndDlg); } return TRUE; case WM_NOTIFY: if (lParam) { NMLISTVIEW *hdr = (NMLISTVIEW *)lParam; if (hdr->hdr.code == LVN_ITEMCHANGED && IsWindowVisible(hdr->hdr.hwndFrom)) { if (hdr->uOldState != 0 && (hdr->uNewState == 0x1000 || hdr->uNewState == 0x2000)) { HWND hwndList = GetDlgItem(hwndDlg, IDC_PLUGLIST); LVITEM it; it.mask = LVIF_PARAM | LVIF_STATE; it.iItem = hdr->iItem; if (!ListView_GetItem(hwndList, &it)) break; PluginListItemData *dat = (PluginListItemData*)it.lParam; if (dat->flags & STATIC_PLUGIN) { ListView_SetItemState(hwndList, hdr->iItem, 0x3000, LVIS_STATEIMAGEMASK); return FALSE; } // find all another standard plugins by mask and disable them if ((hdr->uNewState == 0x2000) && dat->stdPlugin != 0) { for (int iRow = 0; iRow != -1; iRow = ListView_GetNextItem(hwndList, iRow, LVNI_ALL)) { if (iRow != hdr->iItem) { // skip the plugin we're standing on LVITEM dt; dt.mask = LVIF_PARAM; dt.iItem = iRow; if (ListView_GetItem(hwndList, &dt)) { PluginListItemData *dat2 = (PluginListItemData*)dt.lParam; if (dat2->stdPlugin & dat->stdPlugin) {// mask differs // the lParam is unset, so when the check is unset the clist block doesnt trigger int iSave = dat2->stdPlugin; dat2->stdPlugin = 0; ListView_SetItemState(hwndList, iRow, 0x1000, LVIS_STATEIMAGEMASK); dat2->stdPlugin = iSave; } } } } } if (bOldMode) ShowWindow(GetDlgItem(hwndDlg, IDC_RESTART), TRUE); // this here only in "ghazan mode" SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); break; } if (hdr->iItem != -1) { int sel = hdr->uNewState & LVIS_SELECTED; HWND hwndList = GetDlgItem(hwndDlg, IDC_PLUGLIST); LVITEM lvi = { 0 }; lvi.mask = LVIF_PARAM; lvi.iItem = hdr->iItem; if (ListView_GetItem(hwndList, &lvi)) { PluginListItemData *dat = (PluginListItemData*)lvi.lParam; TCHAR buf[1024]; ListView_GetItemText(hwndList, hdr->iItem, 2, buf, _countof(buf)); SetDlgItemText(hwndDlg, IDC_PLUGININFOFRAME, sel ? buf : _T("")); ptrT tszAuthor(latin2t(sel ? dat->author : NULL)); SetDlgItemText(hwndDlg, IDC_PLUGINAUTHOR, tszAuthor); ptrT tszEmail(latin2t(sel ? dat->authorEmail : NULL)); SetDlgItemText(hwndDlg, IDC_PLUGINEMAIL, tszEmail); ptrT p(Langpack_PcharToTchar(dat->description)); SetDlgItemText(hwndDlg, IDC_PLUGINLONGINFO, sel ? p : _T("")); ptrT tszCopyright(latin2t(sel ? dat->copyright : NULL)); SetDlgItemText(hwndDlg, IDC_PLUGINCPYR, tszCopyright); ptrT tszUrl(latin2t(sel ? dat->homepage : NULL)); SetDlgItemText(hwndDlg, IDC_PLUGINURL, tszUrl); if (!equalUUID(miid_last, dat->uuid)) { char szUID[128]; uuidToString(dat->uuid, szUID, sizeof(szUID)); SetDlgItemTextA(hwndDlg, IDC_PLUGINPID, sel ? szUID : ""); } else SetDlgItemText(hwndDlg, IDC_PLUGINPID, sel ? TranslateT("<none>") : _T("")); } } } if (hdr->hdr.code == PSN_APPLY) { bool needRestart = false; TCHAR bufRestart[1024]; int bufLen = mir_sntprintf(bufRestart, _T("%s\n"), TranslateT("Miranda NG must be restarted to apply changes for these plugins:")); HWND hwndList = GetDlgItem(hwndDlg, IDC_PLUGLIST); for (int iRow = 0; iRow != -1;) { TCHAR buf[1024]; ListView_GetItemText(hwndList, iRow, 1, buf, _countof(buf)); int iState = ListView_GetItemState(hwndList, iRow, LVIS_STATEIMAGEMASK); SetPluginOnWhiteList(buf, (iState & 0x2000) ? 1 : 0); if (!bOldMode && iState != 0x3000) { LVITEM lvi = { 0 }; lvi.mask = LVIF_IMAGE | LVIF_PARAM; lvi.stateMask = -1; lvi.iItem = iRow; lvi.iSubItem = 0; if (ListView_GetItem(hwndList, &lvi)) { lvi.mask = LVIF_IMAGE; PluginListItemData *dat = (PluginListItemData*)lvi.lParam; if (iState == 0x2000) { // enabling plugin if (lvi.iImage == 3 || lvi.iImage == 5) { if (lvi.iImage == 3 && LoadPluginDynamically(dat)) { lvi.iImage = 2; ListView_SetItem(hwndList, &lvi); } else { bufLen += mir_sntprintf(bufRestart + bufLen, _countof(bufRestart) - bufLen, _T(" - %s\n"), buf); needRestart = true; } } } else { // disabling plugin if (lvi.iImage == 2 || lvi.iImage == 4) { if (lvi.iImage == 2 && UnloadPluginDynamically(dat)) { lvi.iImage = 3; ListView_SetItem(hwndList, &lvi); } else { bufLen += mir_sntprintf(bufRestart + bufLen, _countof(bufRestart) - bufLen, _T(" - %s\n"), buf); needRestart = true; } } } } } iRow = ListView_GetNextItem(hwndList, iRow, LVNI_ALL); } LoadStdPlugins(); ShowWindow(GetDlgItem(hwndDlg, IDC_RESTART), needRestart); if (needRestart) { mir_sntprintf(bufRestart + bufLen, _countof(bufRestart) - bufLen, _T("\n%s"), TranslateT("Do you want to restart it now?")); if (MessageBox(NULL, bufRestart, _T("Miranda NG"), MB_ICONWARNING | MB_YESNO) == IDYES) CallService(MS_SYSTEM_RESTART, 1, 0); } } } break; case WM_COMMAND: if (HIWORD(wParam) == STN_CLICKED) { switch (LOWORD(wParam)) { case IDC_GETMOREPLUGINS: Utils_OpenUrl("http://miranda-ng.org/downloads/"); break; case IDC_PLUGINEMAIL: case IDC_PLUGINURL: char buf[512]; char *p = &buf[7]; mir_strcpy(buf, "mailto:"); if (GetDlgItemTextA(hwndDlg, LOWORD(wParam), p, _countof(buf) - 7)) Utils_OpenUrl(LOWORD(wParam) == IDC_PLUGINEMAIL ? buf : p); break; } } break; case WM_DESTROY: arPluginList.destroy(); RemoveAllItems(GetDlgItem(hwndDlg, IDC_PLUGLIST)); break; } return FALSE; }
//----------------------------------------------------------------------------- void SCRIPT_DEBUGGER_SetParams(ScriptDebuggerInfos & _s) { if (_s.bClear) { _s.bClear = false; SendMessage(iInfo.hGlobals, LVM_DELETEALLITEMS, 0, 0); SendMessage(iInfo.hLocals, LVM_DELETEALLITEMS, 0, 0); SendMessage(iInfo.hObjName, WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hTargetName, WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hTargetPos[0], WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hTargetPos[1], WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hTargetPos[2], WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hBehavior, WM_SETTEXT, 0, (LPARAM) ""); SendMessage(iInfo.hTimers, WM_SETTEXT, (WPARAM) 0, (LPARAM) ""); SendMessage(iInfo.hEvents, WM_SETTEXT, (WPARAM) 0, (LPARAM) ""); } SendMessage(iInfo.hObjName, WM_SETTEXT, 0, (LPARAM) _s.lpszObjName); SendMessage(iInfo.hObjPos[0], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[0]); SendMessage(iInfo.hObjPos[1], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[1]); SendMessage(iInfo.hObjPos[2], WM_SETTEXT, 0, (LPARAM) _s.p3ObjPos[2]); SendMessage(iInfo.hTargetName, WM_SETTEXT, 0, (LPARAM) _s.lpszTargetName); SendMessage(iInfo.hTargetPos[0], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[0]); SendMessage(iInfo.hTargetPos[1], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[1]); SendMessage(iInfo.hTargetPos[2], WM_SETTEXT, 0, (LPARAM) _s.p3TargetPos[2]); //SendMessage(iInfo.hGlobals, LVM_DELETEALLITEMS, 0, 0); if (sdu.bVariables) { // Global Vars for (int k = 0; k < _s.iNbGlobals; k++) { int t = -1; char buf[256]; for (int j = 0; j < ListView_GetItemCount(iInfo.hGlobals); j++) { ListView_GetItemText(iInfo.hGlobals, j, 0, buf, 256); if (strcmp(buf, _s.pGlobalVars[k].lpszVarName) == 0) { t = j; } } if (t != -1) { ListView_SetItemText(iInfo.hGlobals, t, 0, _s.pGlobalVars[k].lpszVarName); ListView_SetItemText(iInfo.hGlobals, t, 1, _s.pGlobalVars[k].lpszVarValue); } else { InsertItem(iInfo.hGlobals, _s.pGlobalVars[k].lpszVarName, _s.pGlobalVars[k].lpszVarValue); (void)ListView_SortItems(iInfo.hGlobals, MyCompareFunc, 0); } } // Local Vars if (_s.iNbLocals == 0) SendMessage(iInfo.hLocals, LVM_DELETEALLITEMS, 0, 0); for (int i = 0; i < _s.iNbLocals; i++) { int t = -1; char buf[256]; for (int j = 0; j < ListView_GetItemCount(iInfo.hLocals); j++) { ListView_GetItemText(iInfo.hLocals, j, 0, buf, 256); if (strcmp(buf, _s.pLocalVars[i].lpszVarName) == 0) { t = j; } } if (t != -1) { ListView_SetItemText(iInfo.hLocals, t, 0, _s.pLocalVars[i].lpszVarName); ListView_SetItemText(iInfo.hLocals, t, 1, _s.pLocalVars[i].lpszVarValue); } else { InsertItem(iInfo.hLocals, _s.pLocalVars[i].lpszVarName, _s.pLocalVars[i].lpszVarValue); (void)ListView_SortItems(iInfo.hLocals, MyCompareFunc, 0); } } } SendMessage(iInfo.hBehavior, WM_SETTEXT, 0, (LPARAM) _s.lpszBehavior); if (sdu.bEvents) { if (_s.bEvents) { int iSize = SendMessage(iInfo.hEvents, WM_GETTEXTLENGTH, 0, 0); SendMessage(iInfo.hEvents, EM_SETSEL, (WPARAM) iSize, (LPARAM) iSize); SendMessage(iInfo.hEvents, EM_REPLACESEL, (WPARAM) true, (LPARAM) _s.lpszEvents); // slide tout en bas SendMessage(iInfo.hEvents, WM_VSCROLL, SB_BOTTOM, 0); } } if (sdu.bTimers) { if (_s.bTimers) { SendMessage(iInfo.hTimers, WM_SETTEXT, (WPARAM) 0, (LPARAM) _s.lpszTimers); // slide tout en bas SendMessage(iInfo.hTimers, WM_VSCROLL, SB_BOTTOM, 0); } } UpdateWindow(ghDialog); }
/* ** Updates the list of measures and values. ** */ void CDialogAbout::CTabSkins::UpdateMeasureList(CMeterWindow* meterWindow) { if (!meterWindow) { // Find selected skin HWND item = GetDlgItem(m_Window, IDC_ABOUTSKINS_ITEMS_LISTBOX); int selected = (int)SendMessage(item, LB_GETCURSEL, NULL, NULL); const std::map<std::wstring, CMeterWindow*>& windows = Rainmeter->GetAllMeterWindows(); std::map<std::wstring, CMeterWindow*>::const_iterator iter = windows.begin(); while (selected && iter != windows.end()) { ++iter; --selected; } m_SkinWindow = (*iter).second; } else if (meterWindow != m_SkinWindow) { // Called by a skin other than currently visible one, so return return; } HWND item = GetDlgItem(m_Window, IDC_ABOUTSKINS_ITEMS_LISTVIEW); SendMessage(item, WM_SETREDRAW, FALSE, 0); int count = ListView_GetItemCount(item); LVITEM lvi; lvi.mask = LVIF_TEXT | LVIF_GROUPID | LVIF_PARAM; lvi.iSubItem = 0; lvi.iItem = 0; lvi.lParam = 0; lvi.iGroupId = 0; const std::list<CMeasure*>& measures = m_SkinWindow->GetMeasures(); std::list<CMeasure*>::const_iterator j = measures.begin(); for ( ; j != measures.end(); ++j) { lvi.pszText = (WCHAR*)(*j)->GetName(); if (lvi.iItem < count) { ListView_SetItem(item, &lvi); } else { ListView_InsertItem(item, &lvi); } WCHAR buffer[256]; CMeasure::GetScaledValue(AUTOSCALE_ON, 1, (*j)->GetMinValue(), buffer, _countof(buffer)); std::wstring range = buffer; range += L" - "; CMeasure::GetScaledValue(AUTOSCALE_ON, 1, (*j)->GetMaxValue(), buffer, _countof(buffer)); range += buffer; ListView_SetItemText(item, lvi.iItem, 1, (WCHAR*)range.c_str()); ListView_SetItemText(item, lvi.iItem, 2, (WCHAR*)(*j)->GetStringValue(AUTOSCALE_OFF, 1, -1, false)); ++lvi.iItem; } lvi.iGroupId = 1; const auto& variables = m_SkinWindow->GetParser().GetVariables(); for (auto iter = variables.cbegin(); iter != variables.cend(); ++iter) { lvi.pszText = (WCHAR*)(*iter).first.c_str(); lvi.lParam = (LPARAM)lvi.pszText; if (lvi.iItem < count) { ListView_SetItem(item, &lvi); } else { ListView_InsertItem(item, &lvi); } ListView_SetItemText(item, lvi.iItem, 1, L""); ListView_SetItemText(item, lvi.iItem, 2, (WCHAR*)(*iter).second.c_str()); ++lvi.iItem; } // Delete unnecessary items while (count > lvi.iItem) { ListView_DeleteItem(item, lvi.iItem); --count; } int selIndex = ListView_GetNextItem(item, -1, LVNI_FOCUSED | LVNI_SELECTED); ListView_SortItems(item, ListSortProc, 0); if (selIndex != -1) { // Re-select previously selected item ListView_SetItemState(item, selIndex, LVIS_FOCUSED | LVNI_SELECTED, LVIS_FOCUSED | LVNI_SELECTED); } SendMessage(item, WM_SETREDRAW, TRUE, 0); }
/**************************************************************************** * * FUNCTION: NotifyHandler(HWND, UINT, UINT, LONG) * * PURPOSE: This function is the handler for the WM_NOTIFY that is * sent to the parent of the list view window. * ****************************************************************************/ LRESULT NotifyHandler( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { LV_DISPINFO *pLvdi = (LV_DISPINFO *)lParam; NM_LISTVIEW *pNm = (NM_LISTVIEW *)lParam; HOUSEINFO *pHouse = (HOUSEINFO *)(pLvdi->item.lParam); static TCHAR szText[10]; if (wParam != ID_LISTVIEW) return 0L; switch(pLvdi->hdr.code) { case LVN_GETDISPINFO: switch (pLvdi->item.iSubItem) { case 0: // Address pLvdi->item.pszText = pHouse->szAddress; break; case 1: // City pLvdi->item.pszText = pHouse->szCity; break; case 2: // Price sprintf(szText, "$%u", pHouse->iPrice); pLvdi->item.pszText = szText; break; case 3: // Number of bedrooms sprintf(szText, "%u", pHouse->iBeds); pLvdi->item.pszText = szText; break; case 4: // Number of bathrooms sprintf(szText, "%u", pHouse->iBaths); pLvdi->item.pszText = szText; break; default: break; } break; case LVN_BEGINLABELEDIT: { HWND hWndEdit; // Get the handle to the edit box. hWndEdit = (HWND)SendMessage(hWnd, LVM_GETEDITCONTROL, 0, 0); // Limit the amount of text that can be entered. SendMessage(hWndEdit, EM_SETLIMITTEXT, (WPARAM)20, 0); } break; case LVN_ENDLABELEDIT: // Save the new label information if ((pLvdi->item.iItem != -1) && (pLvdi->item.pszText != NULL)) lstrcpy(pHouse->szAddress, pLvdi->item.pszText); break; case LVN_COLUMNCLICK: // The user clicked on one of the column headings - sort by // this column. ListView_SortItems( pNm->hdr.hwndFrom, ListViewCompareProc, (LPARAM)(pNm->iSubItem)); break; default: break; } return 0L; }
static LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { PMAIN_WND_INFO Info; LRESULT Ret = 0; /* Get the window context */ Info = (PMAIN_WND_INFO)GetWindowLongPtr(hwnd, GWLP_USERDATA); if (Info == NULL && msg != WM_CREATE) { goto HandleDefaultMessage; } switch(msg) { case WM_CREATE: { Info = (PMAIN_WND_INFO)(((LPCREATESTRUCT)lParam)->lpCreateParams); /* Initialize the main window context */ Info->hMainWnd = hwnd; Info->SelectedItem = NO_ITEM_SELECTED; SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)Info); if (!InitMainWnd(Info)) return -1; /* Fill the list-view before showing the main window */ RefreshServiceList(Info); /* Show the window */ ShowWindow(hwnd, Info->nCmdShow); SetFocus(Info->hListView); } break; case WM_SIZE: { MainWndResize(Info, LOWORD(lParam), HIWORD(lParam)); } break; case WM_NOTIFY: { LPNMHDR pnmhdr = (LPNMHDR)lParam; switch (pnmhdr->code) { case NM_DBLCLK: { POINT pt; RECT rect; GetCursorPos(&pt); GetWindowRect(Info->hListView, &rect); if (PtInRect(&rect, pt)) { SendMessage(hwnd, WM_COMMAND, //ID_PROP, MAKEWPARAM((WORD)ID_PROP, (WORD)0), 0); } //OpenPropSheet(Info); } break; case NM_RETURN: { SendMessage(hwnd, WM_COMMAND, //ID_PROP, MAKEWPARAM((WORD)ID_PROP, (WORD)0), 0); } break; case LVN_COLUMNCLICK: { LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; (void)ListView_SortItems(Info->hListView, CompareFunc, pnmv->iSubItem); bSortAscending = !bSortAscending; } break; case LVN_ITEMCHANGED: { LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; if (pnmv->uNewState != 0) { ListViewSelectionChanged(Info, pnmv); SetMenuAndButtonStates(Info); } } break; case TTN_GETDISPINFO: { LPTOOLTIPTEXT lpttt; UINT idButton; lpttt = (LPTOOLTIPTEXT)lParam; /* Specify the resource identifier of the descriptive * text for the given button. */ idButton = (UINT)lpttt->hdr.idFrom; switch (idButton) { case ID_PROP: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PROP); break; case ID_REFRESH: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_REFRESH); break; case ID_EXPORT: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_EXPORT); break; case ID_CREATE: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_CREATE); break; case ID_DELETE: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_DELETE); break; case ID_START: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_START); break; case ID_STOP: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_STOP); break; case ID_PAUSE: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_PAUSE); break; case ID_RESTART: lpttt->lpszText = MAKEINTRESOURCE(IDS_TOOLTIP_RESTART); break; } } break; } } break; case WM_CONTEXTMENU: { POINT pt; RECT lvRect; INT xPos = GET_X_LPARAM(lParam); INT yPos = GET_Y_LPARAM(lParam); GetCursorPos(&pt); /* display popup when cursor is in the list view */ GetWindowRect(Info->hListView, &lvRect); if (PtInRect(&lvRect, pt)) { TrackPopupMenuEx(GetSubMenu(Info->hShortcutMenu, 0), TPM_RIGHTBUTTON, xPos, yPos, Info->hMainWnd, NULL); } } break; case WM_COMMAND: { MainWndCommand(Info, LOWORD(wParam), (HWND)lParam); goto HandleDefaultMessage; } case WM_MENUSELECT: { if (Info->hStatus != NULL) { if (!MainWndMenuHint(Info, LOWORD(wParam), MainMenuHintTable, sizeof(MainMenuHintTable) / sizeof(MainMenuHintTable[0]), IDS_HINT_BLANK)) { MainWndMenuHint(Info, LOWORD(wParam), SystemMenuHintTable, sizeof(SystemMenuHintTable) / sizeof(SystemMenuHintTable[0]), IDS_HINT_BLANK); } } } break; case WM_ENTERMENULOOP: { Info->bInMenuLoop = TRUE; UpdateMainStatusBar(Info); break; } case WM_EXITMENULOOP: { Info->bInMenuLoop = FALSE; UpdateMainStatusBar(Info); break; } case WM_CLOSE: { HeapFree(ProcessHeap, 0, Info->pAllServices); DestroyMenu(Info->hShortcutMenu); DestroyWindow(hwnd); } break; case WM_DESTROY: { HeapFree(ProcessHeap, 0, Info); SetWindowLongPtr(hwnd, GWLP_USERDATA, 0); PostQuitMessage(0); } break; default: { HandleDefaultMessage: Ret = DefWindowProc(hwnd, msg, wParam, lParam); } break; } return Ret; }
/////////////////////////////////////////////////////////////////////////////////////////// // Function: NLSDlgProc // // Description: Message-processing function for text tab // // Comments: // /////////////////////////////////////////////////////////////////////////////////////////// INT_PTR CALLBACK NLSDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { BOOL bProcessedMsg = TRUE; switch(uMsg) { case WM_INITDIALOG: { LVCOLUMN lvcCol = {0}; UINT lcid = 0; LVFINDINFO lvInfo = {0}; int iItem = 0; // load our own icon SendMessage(GetParent(hDlg), WM_SETICON, ICON_BIG, (LPARAM) (LoadIcon(g_hInst, MAKEINTRESOURCE(IDI_MAINICON)))); // Create our list column for the listview control g_hwndList = GetDlgItem(hDlg, IDC_LV_LCID); g_hDlg = hDlg; lvcCol.mask = LVCF_TEXT; LoadString(g_hRes, STR_LANGID, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_LANGID, (LV_COLUMN *)&lvcCol); LoadString(g_hRes, STR_LANG, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_LANGUAGE, (LV_COLUMN *)&lvcCol); LoadString(g_hRes, STR_NLANG, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_NATIVELANG, (LV_COLUMN *)&lvcCol); LoadString(g_hRes, STR_NCOUNTRY, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_NATIVECOUNTRYREGION, (LV_COLUMN *)&lvcCol); LoadString(g_hRes, STR_ACP, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_ACP, (LV_COLUMN *)&lvcCol); LoadString(g_hRes, STR_OEMCP, g_tcsTemp, MAX_STR); lvcCol.pszText = g_tcsTemp; ListView_InsertColumn(g_hwndList, COLUMN_OEMCP, (LV_COLUMN *)&lvcCol); // fill out our listview control with available locales (supported ones). EnumSystemLocales(EnumLocalesProc, LCID_SUPPORTED); // Initialize formatting fields related to the selected locale in the listview InitNLSFields(hDlg, LOCALE_USER_DEFAULT); // Set the column width of the listview control. ListView_SetColumnWidth(g_hwndList, COLUMN_LANGID, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(g_hwndList, COLUMN_LANGUAGE, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(g_hwndList, COLUMN_NATIVELANG, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(g_hwndList, COLUMN_NATIVECOUNTRYREGION, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(g_hwndList, COLUMN_ACP, LVSCW_AUTOSIZE_USEHEADER); ListView_SetColumnWidth(g_hwndList, COLUMN_OEMCP, LVSCW_AUTOSIZE_USEHEADER); // Find user's current locale and select that item in the listview control. lcid = GetUserDefaultLCID(); // Our list has all the LCIDs in 4 digits (0409) whereas GetUserDefaultLCID returs (409). if (lcid < 0x1000) { _sntprintf(g_tcsTemp,MAX_STR,TEXT("0%x"), lcid); } else { _sntprintf(g_tcsTemp,MAX_STR,TEXT("%x"), lcid); } lvInfo.flags = LVFI_STRING; lvInfo.psz = g_tcsTemp; iItem = ListView_FindItem(g_hwndList, 0, &lvInfo); ListView_SetItemState (g_hwndList, iItem, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); ListView_EnsureVisible(g_hwndList, iItem, FALSE); // Set some of the extended styles of our list view (cool reports ;-) ListView_SetExtendedListViewStyle(g_hwndList, LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP | LVS_EX_GRIDLINES | LVS_EX_TWOCLICKACTIVATE); } break; case WM_NOTIFY: switch (((NMHDR *)lParam)->code) { case LVN_COLUMNCLICK: { NM_LISTVIEW nmv; static int iLastSort = COLUMN_LANGID; LPARAM lSortParam = -1; LVFINDINFO lvInfo; int iItem; // When a column is clicked we need to redo our sorting of preview table. nmv = *(const NM_LISTVIEW *) lParam; // We don't sort for native language and native country name (avoid confusion). if ((nmv.iSubItem == COLUMN_NATIVELANG) || (nmv.iSubItem == COLUMN_NATIVECOUNTRYREGION)) { break; } // If our last sorting was on a different column, we need to do more // than simply reverting our sorting. // Because of listview sorting limitations, we need to redo our list... if (iLastSort != nmv.iSubItem) { // The list view sorting is based on a q-sort, we need to redo our list! ListView_DeleteAllItems(g_hwndList); g_iCounter = 0; EnumSystemLocales(EnumLocalesProc, LCID_SUPPORTED); // Make sure the last selection remains active after sorting... if (g_iCurLocale < 0x1000) { _sntprintf(g_tcsTemp,MAX_STR,TEXT("0%x"), g_iCurLocale); } else { _sntprintf(g_tcsTemp,MAX_STR,TEXT("%x"), g_iCurLocale); } lvInfo.flags = LVFI_STRING; lvInfo.psz = g_tcsTemp; iItem = ListView_FindItem(g_hwndList, 0, &lvInfo); ListView_SetItemState (g_hwndList, iItem, LVIS_FOCUSED | LVIS_SELECTED, 0x000F); // Update our flag for the last column sorted and set the sorting flag iLastSort = nmv.iSubItem; lSortParam = iLastSort; } // Do the actual sorting... ListView_SortItems(g_hwndList, (PFNLVCOMPARE)CompareFunc, lSortParam); // Make sure our selection is visible after the sorting! ListView_EnsureVisible(g_hwndList, ListView_GetSelectionMark(g_hwndList), FALSE); } break; case LVN_ITEMCHANGED: /* fall-through */ case LVN_ITEMACTIVATE: { LPNM_LISTVIEW lpnmlv = (LPNM_LISTVIEW)lParam; static int iItem; LVITEM lvItem = {0}; // Item selection has been changed. // Find the new langId and update our formatting fields... if (iItem != lpnmlv->iItem) { iItem = lpnmlv->iItem; lvItem.mask = LVIF_TEXT; lvItem.iItem = iItem; lvItem.pszText = g_tcsTemp; lvItem.cchTextMax = STR_LEN; ListView_GetItem(g_hwndList, &lvItem); g_iCurLocale = iConvertStrToInt(lvItem.pszText); InitNLSFields(hDlg, g_iCurLocale); } // Show advanced data on the selected locale... if (((NMHDR *)lParam)->code == LVN_ITEMACTIVATE) { bProcessedMsg = (DialogBox(g_hRes, MAKEINTRESOURCE(DLG_LCID), hDlg, LcidDlgProc) != -1); } } break; } break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDCANCEL: /* fall-through*/ case IDOK: break; case IDC_TIMEFORMAT: { if(HIWORD(wParam) == CBN_SELCHANGE) { // Time formating selection has been changed. // Re-edit time HWND hList = NULL; LRESULT index = 0; TCHAR tcTemp[MAX_STR]; hList = GetDlgItem(hDlg, IDC_TIMEFORMAT); if(NULL == hList) { bProcessedMsg = FALSE; break; } index = SendMessage(hList, CB_GETCURSEL, 0, 0); SendMessage(hList, CB_GETLBTEXT, index, (LPARAM) g_tcsTemp); GetTimeFormat(g_iCurLocale, 0, NULL, g_tcsTemp, tcTemp, MAX_STR); SetWindowText(GetDlgItem(hDlg, IDC_TIMESAMPLE), tcTemp); } } break; case IDC_SDATEFORMAT: { if(HIWORD(wParam) == CBN_SELCHANGE) { // short date formating selection has been changed. // Re-edit short date HWND hList = NULL; LRESULT index = 0; TCHAR tcTemp[MAX_STR]; hList = GetDlgItem(hDlg, IDC_SDATEFORMAT); if(NULL == hList) { bProcessedMsg = FALSE; break; } index = SendMessage(hList, CB_GETCURSEL, 0, 0); SendMessage(hList, CB_GETLBTEXT, index, (LPARAM) g_tcsTemp); GetDateFormat(g_iCurLocale, 0, NULL, g_tcsTemp, tcTemp, MAX_STR); SetWindowText(GetDlgItem(hDlg, IDC_SDATESAMPLE), tcTemp); } } break; case IDC_LDATEFORMAT: { if(HIWORD(wParam) == CBN_SELCHANGE) { // long date formating selection has been changed. // Re-edit long date HWND hList = NULL; LRESULT index = 0; TCHAR tcTemp[MAX_STR]; hList = GetDlgItem(hDlg, IDC_LDATEFORMAT); if(NULL == hList) { bProcessedMsg = FALSE; break; } index = SendMessage(hList, CB_GETCURSEL, 0, 0); SendMessage(hList, CB_GETLBTEXT, index, (LPARAM) g_tcsTemp); GetDateFormat(g_iCurLocale, 0, NULL, g_tcsTemp, tcTemp, MAX_STR); SetWindowText(GetDlgItem(hDlg, IDC_LDATESAMPLE), tcTemp); } } break; } break; default: bProcessedMsg = FALSE; } return bProcessedMsg; }
void SortListView( HWND hListview, int iSubItem, LISTVIEW_COLUMN * ColumnList, bool Reverse ) { bool SortReversed = false; int PrevColumn = 0; // If column is negative then repeat the last sort if ( iSubItem < 0 ) { iSubItem = GetListViewSortColumn( ColumnList ); if ( iSubItem >= 0 ) SortListView( hListview, iSubItem, ColumnList, false ); return; } HCURSOR hSaveCursor = SetCursor( LoadCursor( NULL, IDC_WAIT ) ); // if sorting the same column twice in a row then reverse the sort order if ( ColumnList[ iSubItem ].SortDir == SORTDIR_UNDEF ) { // clicked on a new column for ( PrevColumn = 0; ColumnList[PrevColumn].Title; ++PrevColumn ) if ( ColumnList[PrevColumn].SortDir != SORTDIR_UNDEF ) break; ColumnList[PrevColumn].SortDir = SORTDIR_UNDEF; SortReversed = false; } else { // reverse sort direction if requested if ( Reverse ) SortReversed = ColumnList[ iSubItem ].SortDir == SORTDIR_UP; else SortReversed = ColumnList[ iSubItem ].SortDir != SORTDIR_UP; } ColumnList[ iSubItem ].SortDir = SortReversed ? SORTDIR_DOWN : SORTDIR_UP; // remove arrow from previously sorted column LVCOLUMN lvc; lvc.mask = LVCF_FMT; ListView_GetColumn( hListview, PrevColumn, &lvc ); lvc.fmt &= ~(LVCFMT_IMAGE | LVCFMT_COL_HAS_IMAGES | LVCFMT_BITMAP_ON_RIGHT); ListView_SetColumn( hListview, PrevColumn, &lvc ); // add arrow to sorted column lvc.mask = LVCF_FMT | LVCF_IMAGE; ListView_GetColumn( hListview, iSubItem, &lvc ); lvc.fmt |= LVCFMT_IMAGE | LVCFMT_COL_HAS_IMAGES | LVCFMT_BITMAP_ON_RIGHT; lvc.iImage = SortReversed ? LISTVIEW_IMG_DESCENDING : LISTVIEW_IMG_ASCENDING; ListView_SetColumn( hListview, iSubItem, &lvc ); // Perform sort LISTVIEW_SORT ctx; ctx.Column = iSubItem; ctx.ColumnList = ColumnList; ctx.hList = hListview; ctx.UsingEx = true; // Version 5.80 and later of Comctl32.dll BOOL ok = ListView_SortItemsEx( hListview, CompareListViewColumn, (LPARAM)&ctx ); if ( !ok ) { // Use old, slow way of sorting. ctx.UsingEx = false; ListView_SortItems( hListview, CompareListViewColumn, (LPARAM)&ctx ); } SetCursor( hSaveCursor ); }
void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam) { LPNMHDR pnmh; NMLVDISPINFO* pnmdi; LPNMHEADER pnmhdr; ULONG Index; ULONG ColumnIndex; LPPROCESS_PAGE_LIST_ITEM pData; pnmh = (LPNMHDR) lParam; pnmdi = (NMLVDISPINFO*) lParam; pnmhdr = (LPNMHEADER) lParam; if (pnmh->hwndFrom == hProcessPageListCtrl) { switch (pnmh->code) { #if 0 case LVN_ITEMCHANGED: ProcessPageUpdate(); break; #endif case LVN_GETDISPINFO: if (!(pnmdi->item.mask & LVIF_TEXT)) break; pData = (LPPROCESS_PAGE_LIST_ITEM)pnmdi->item.lParam; Index = PerfDataGetProcessIndex(pData->ProcessId); ColumnIndex = pnmdi->item.iSubItem; PerfDataGetText(Index, ColumnIndex, pnmdi->item.pszText, pnmdi->item.cchTextMax); break; case NM_RCLICK: ProcessPageShowContextMenu(GetSelectedProcessId()); break; case LVN_KEYDOWN: if (((LPNMLVKEYDOWN)lParam)->wVKey == VK_DELETE) ProcessPage_OnEndProcess(); break; } } else if (pnmh->hwndFrom == hProcessPageHeaderCtrl) { switch (pnmh->code) { case HDN_ITEMCLICK: TaskManagerSettings.SortColumn = ColumnDataHints[pnmhdr->iItem]; TaskManagerSettings.SortAscending = !TaskManagerSettings.SortAscending; (void)ListView_SortItems(hProcessPageListCtrl, ProcessPageCompareFunc, NULL); break; case HDN_ITEMCHANGED: UpdateColumnDataHints(); break; case HDN_ENDDRAG: UpdateColumnDataHints(); break; } } }
static BOOL CALLBACK JabberGroupchatDlgProc( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ) { HWND lv; LVCOLUMN lvCol; LVITEM lvItem; JABBER_LIST_ITEM *item; switch ( msg ) { case WM_INITDIALOG: // lParam is the initial conference server ( if any ) SendMessage( hwndDlg, WM_SETICON, ICON_BIG, ( LPARAM )iconBigList[0] ); TranslateDialogDefault( hwndDlg ); sortColumn = -1; // Add columns lv = GetDlgItem( hwndDlg, IDC_ROOM ); lvCol.mask = LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM; lvCol.pszText = TranslateT( "JID" ); lvCol.cx = 210; lvCol.iSubItem = 0; ListView_InsertColumn( lv, 0, &lvCol ); lvCol.pszText = TranslateT( "Name" ); lvCol.cx = 150; lvCol.iSubItem = 1; ListView_InsertColumn( lv, 1, &lvCol ); lvCol.pszText = TranslateT( "Type" ); lvCol.cx = 60; lvCol.iSubItem = 2; ListView_InsertColumn( lv, 2, &lvCol ); if ( jabberOnline ) { if (( TCHAR* )lParam != NULL ) { SetDlgItemText( hwndDlg, IDC_SERVER, ( TCHAR* )lParam ); int iqId = JabberSerialNext(); JabberIqAdd( iqId, IQ_PROC_DISCOROOMSERVER, JabberIqResultDiscoRoomItems ); XmlNodeIq iq( "get", iqId, ( TCHAR* )lParam ); XmlNode* query = iq.addQuery( "http://jabber.org/protocol/disco#items" ); JabberSend( jabberThreadInfo->s, iq ); } else { for ( int i=0; i < GC_SERVER_LIST_SIZE; i++ ) { char text[100]; mir_snprintf( text, sizeof( text ), "GcServerLast%d", i ); DBVARIANT dbv; if ( !JGetStringT( NULL, text, &dbv )) { SendDlgItemMessage( hwndDlg, IDC_SERVER, CB_ADDSTRING, 0, ( LPARAM )dbv.ptszVal ); JFreeVariant( &dbv ); } } } } else EnableWindow( GetDlgItem( hwndDlg, IDC_JOIN ), FALSE ); return TRUE; case WM_JABBER_ACTIVATE: // lParam = server from which agent information is obtained if ( lParam ) SetDlgItemText( hwndDlg, IDC_SERVER, ( TCHAR* )lParam ); ListView_DeleteAllItems( GetDlgItem( hwndDlg, IDC_ROOM )); EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), FALSE ); return TRUE; case WM_JABBER_REFRESH: // lParam = server from which agent information is obtained { int i; TCHAR szBuffer[256]; char text[128]; if ( lParam ){ _tcsncpy( szBuffer, ( TCHAR* )lParam, SIZEOF( szBuffer )); for ( i=0; i<GC_SERVER_LIST_SIZE; i++ ) { mir_snprintf( text, SIZEOF( text ), "GcServerLast%d", i ); DBVARIANT dbv; if ( !JGetStringT( NULL, text, &dbv )) { JSetStringT( NULL, text, szBuffer ); if ( !_tcsicmp( dbv.ptszVal, ( TCHAR* )lParam )) { JFreeVariant( &dbv ); break; } _tcsncpy( szBuffer, dbv.ptszVal, SIZEOF( szBuffer )); JFreeVariant( &dbv ); } else { JSetStringT( NULL, text, szBuffer ); break; } } SendDlgItemMessage( hwndDlg, IDC_SERVER, CB_RESETCONTENT, 0, 0 ); for ( i=0; i<GC_SERVER_LIST_SIZE; i++ ) { mir_snprintf( text, SIZEOF( text ), "GcServerLast%d", i ); DBVARIANT dbv; if ( !JGetStringT( NULL, text, &dbv )) { SendDlgItemMessage( hwndDlg, IDC_SERVER, CB_ADDSTRING, 0, ( LPARAM )dbv.ptszVal ); JFreeVariant( &dbv ); } } SetDlgItemText( hwndDlg, IDC_SERVER, ( TCHAR* )lParam ); } i = 0; lv = GetDlgItem( hwndDlg, IDC_ROOM ); ListView_DeleteAllItems( lv ); LVITEM lvItem; lvItem.iItem = 0; while (( i=JabberListFindNext( LIST_ROOM, i )) >= 0 ) { if (( item=JabberListGetItemPtrFromIndex( i )) != NULL ) { lvItem.mask = LVIF_PARAM | LVIF_TEXT; lvItem.iSubItem = 0; _tcsncpy( szBuffer, item->jid, SIZEOF(szBuffer)); szBuffer[ SIZEOF(szBuffer)-1 ] = 0; lvItem.lParam = ( LPARAM )item->jid; lvItem.pszText = szBuffer; ListView_InsertItem( lv, &lvItem ); lvItem.mask = LVIF_TEXT; lvItem.iSubItem = 1; lvItem.pszText = item->name; ListView_SetItem( lv, &lvItem ); lvItem.iSubItem = 2; lvItem.pszText = item->type; ListView_SetItem( lv, &lvItem ); lvItem.iItem++; } i++; } EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), TRUE ); } return TRUE; case WM_JABBER_CHECK_ONLINE: { TCHAR text[128]; if ( jabberOnline ) { EnableWindow( GetDlgItem( hwndDlg, IDC_JOIN ), TRUE ); GetDlgItemText( hwndDlg, IDC_SERVER, text, SIZEOF( text )); EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), ( text[0]!='\0' )); } else { EnableWindow( GetDlgItem( hwndDlg, IDC_JOIN ), FALSE ); EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), FALSE ); SetDlgItemTextA( hwndDlg, IDC_SERVER, "" ); lv = GetDlgItem( hwndDlg, IDC_ROOM ); ListView_DeleteAllItems( lv ); } break; } case WM_NOTIFY: switch ( wParam ) { case IDC_ROOM: switch (( ( LPNMHDR )lParam )->code ) { case LVN_COLUMNCLICK: { LPNMLISTVIEW pnmlv = ( LPNMLISTVIEW ) lParam; if ( pnmlv->iSubItem>=0 && pnmlv->iSubItem<=1 ) { if ( pnmlv->iSubItem == sortColumn ) sortAscending = !sortAscending; else { sortAscending = TRUE; sortColumn = pnmlv->iSubItem; } ListView_SortItems( GetDlgItem( hwndDlg, IDC_ROOM ), GroupchatCompare, sortColumn ); } } break; } break; } break; case WM_COMMAND: switch ( LOWORD( wParam )) { case WM_JABBER_JOIN: if ( jabberChatDllPresent ) { lv = GetDlgItem( hwndDlg, IDC_ROOM ); if (( lvItem.iItem=ListView_GetNextItem( lv, -1, LVNI_SELECTED )) >= 0 ) { lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM; ListView_GetItem( lv, &lvItem ); ListView_SetItemState( lv, lvItem.iItem, 0, LVIS_SELECTED ); // Unselect the item DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_GROUPCHAT_JOIN ), hwndDlg, JabberGroupchatJoinDlgProc, ( LPARAM )lvItem.lParam ); } else { TCHAR text[128]; GetDlgItemText( hwndDlg, IDC_SERVER, text, SIZEOF( text )); DialogBoxParam( hInst, MAKEINTRESOURCE( IDD_GROUPCHAT_JOIN ), hwndDlg, JabberGroupchatJoinDlgProc, ( LPARAM )text ); } } else JabberChatDllError(); return TRUE; case WM_JABBER_ADD_TO_ROSTER: lv = GetDlgItem( hwndDlg, IDC_ROOM ); if (( lvItem.iItem=ListView_GetNextItem( lv, -1, LVNI_SELECTED )) >= 0 ) { lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM; ListView_GetItem( lv, &lvItem ); TCHAR* jid = ( TCHAR* )lvItem.lParam; { GCSESSION gcw = {0}; gcw.cbSize = sizeof(GCSESSION); gcw.iType = GCW_CHATROOM; gcw.pszID = t2a(jid); gcw.pszModule = jabberProtoName; gcw.pszName = NEWSTR_ALLOCA(gcw.pszID); char* p = ( char* )strchr( gcw.pszName, '@' ); if ( p != NULL ) *p = 0; CallService( MS_GC_NEWSESSION, 0, ( LPARAM )&gcw ); mir_free((void*)gcw.pszID); } { XmlNodeIq iq( "set" ); XmlNode* query = iq.addQuery( "jabber:iq:roster" ); XmlNode* item = query->addChild( "item" ); item->addAttr( "jid", jid ); JabberSend( jabberThreadInfo->s, iq ); } { XmlNode p( "presence" ); p.addAttr( "to", jid ); p.addAttr( "type", "subscribe" ); JabberSend( jabberThreadInfo->s, p ); } } break; case WM_JABBER_ADD_TO_BOOKMARKS: lv = GetDlgItem( hwndDlg, IDC_ROOM ); if (( lvItem.iItem=ListView_GetNextItem( lv, -1, LVNI_SELECTED )) >= 0 ) { lvItem.iSubItem = 0; lvItem.mask = LVIF_PARAM; ListView_GetItem( lv, &lvItem ); JABBER_LIST_ITEM* item = JabberListGetItemPtr( LIST_BOOKMARK, ( TCHAR* )lvItem.lParam ); if ( item == NULL ) { item = JabberListGetItemPtr( LIST_ROOM, ( TCHAR* )lvItem.lParam ); if (item != NULL) { item->type = _T("conference"); JabberAddEditBookmark(NULL, (LPARAM) item); } } } break; case IDC_SERVER: { TCHAR text[ 128 ]; GetDlgItemText( hwndDlg, IDC_SERVER, text, SIZEOF( text )); if ( jabberOnline && ( text[0] || HIWORD( wParam )==CBN_SELCHANGE )) EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), TRUE ); break; } case IDC_BROWSE: { TCHAR text[ 128 ]; GetDlgItemText( hwndDlg, IDC_SERVER, text, SIZEOF( text )); if ( jabberOnline && text[0] ) { EnableWindow( GetDlgItem( hwndDlg, IDC_BROWSE ), FALSE ); ListView_DeleteAllItems( GetDlgItem( hwndDlg, IDC_ROOM )); GetDlgItemText( hwndDlg, IDC_SERVER, text, SIZEOF( text )); int iqId = JabberSerialNext(); JabberIqAdd( iqId, IQ_PROC_DISCOROOMSERVER, JabberIqResultDiscoRoomItems ); XmlNodeIq iq( "get", iqId, text ); XmlNode* query = iq.addQuery( "http://jabber.org/protocol/disco#items" ); JabberSend( jabberThreadInfo->s, iq ); } return TRUE; } case IDCLOSE: DestroyWindow( hwndDlg ); return TRUE; } break; case WM_CONTEXTMENU: if (( HWND )wParam == GetDlgItem( hwndDlg, IDC_ROOM )) { HMENU hMenu = CreatePopupMenu(); AppendMenu( hMenu, MF_STRING, WM_JABBER_JOIN, TranslateT( "Join" )); AppendMenu( hMenu, MF_STRING, WM_JABBER_ADD_TO_ROSTER, TranslateT( "Add to roster" )); if ( jabberThreadInfo->caps & CAPS_BOOKMARK ) AppendMenu( hMenu, MF_STRING, WM_JABBER_ADD_TO_BOOKMARKS, TranslateT( "Add to Bookmarks" )); TrackPopupMenu( hMenu, TPM_LEFTALIGN | TPM_NONOTIFY, LOWORD(lParam), HIWORD(lParam), 0, hwndDlg, 0 ); ::DestroyMenu( hMenu ); return TRUE; } break; case WM_CLOSE: DestroyWindow( hwndDlg ); break; case WM_DESTROY: hwndJabberGroupchat = NULL; break; } return FALSE; }
LRESULT CALLBACK MainWindowProc(HWND hwnd, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { case WM_CREATE: if (!InitControls(hwnd)) PostMessage(hwnd, WM_CLOSE, 0, 0); if (SettingsInfo.bUpdateAtStart) UpdateAppsDB(); break; case WM_COMMAND: MainWndOnCommand(hwnd, wParam, lParam); break; case WM_NOTIFY: { LPNMHDR data = (LPNMHDR)lParam; switch (data->code) { case TVN_SELCHANGED: { if (data->hwndFrom == hTreeView) { switch (((LPNMTREEVIEW)lParam)->itemNew.lParam) { case IDS_INSTALLED: UpdateApplicationsList(ENUM_ALL_COMPONENTS); break; case IDS_APPLICATIONS: UpdateApplicationsList(ENUM_APPLICATIONS); break; case IDS_UPDATES: UpdateApplicationsList(ENUM_UPDATES); break; case IDS_AVAILABLEFORINST: UpdateApplicationsList(ENUM_ALL_AVAILABLE); break; case IDS_CAT_AUDIO: UpdateApplicationsList(ENUM_CAT_AUDIO); break; case IDS_CAT_DEVEL: UpdateApplicationsList(ENUM_CAT_DEVEL); break; case IDS_CAT_DRIVERS: UpdateApplicationsList(ENUM_CAT_DRIVERS); break; case IDS_CAT_EDU: UpdateApplicationsList(ENUM_CAT_EDU); break; case IDS_CAT_ENGINEER: UpdateApplicationsList(ENUM_CAT_ENGINEER); break; case IDS_CAT_FINANCE: UpdateApplicationsList(ENUM_CAT_FINANCE); break; case IDS_CAT_GAMES: UpdateApplicationsList(ENUM_CAT_GAMES); break; case IDS_CAT_GRAPHICS: UpdateApplicationsList(ENUM_CAT_GRAPHICS); break; case IDS_CAT_INTERNET: UpdateApplicationsList(ENUM_CAT_INTERNET); break; case IDS_CAT_LIBS: UpdateApplicationsList(ENUM_CAT_LIBS); break; case IDS_CAT_OFFICE: UpdateApplicationsList(ENUM_CAT_OFFICE); break; case IDS_CAT_OTHER: UpdateApplicationsList(ENUM_CAT_OTHER); break; case IDS_CAT_SCIENCE: UpdateApplicationsList(ENUM_CAT_SCIENCE); break; case IDS_CAT_TOOLS: UpdateApplicationsList(ENUM_CAT_TOOLS); break; case IDS_CAT_VIDEO: UpdateApplicationsList(ENUM_CAT_VIDEO); break; } } } break; case LVN_ITEMCHANGED: { LPNMLISTVIEW pnic = (LPNMLISTVIEW) lParam; if (pnic->hdr.hwndFrom == hListView) { /* Check if this is a valid item * (technically, it can be also an unselect) */ INT ItemIndex = pnic->iItem; if (ItemIndex == -1 || ItemIndex >= ListView_GetItemCount(pnic->hdr.hwndFrom)) { break; } /* Check if the focus has been moved to another item */ if ((pnic->uChanged & LVIF_STATE) && (pnic->uNewState & LVIS_FOCUSED) && !(pnic->uOldState & LVIS_FOCUSED)) { if (IS_INSTALLED_ENUM(SelectedEnumType)) ShowInstalledAppInfo(ItemIndex); if (IS_AVAILABLE_ENUM(SelectedEnumType)) ShowAvailableAppInfo(ItemIndex); } } } break; case LVN_COLUMNCLICK: { LPNMLISTVIEW pnmv = (LPNMLISTVIEW) lParam; (VOID) ListView_SortItems(hListView, ListViewCompareFunc, pnmv->iSubItem); bAscending = !bAscending; } break; case NM_CLICK: if (data->hwndFrom == hListView) { if (IS_INSTALLED_ENUM(SelectedEnumType)) ShowInstalledAppInfo(-1); if (IS_AVAILABLE_ENUM(SelectedEnumType)) ShowAvailableAppInfo(-1); } break; case NM_RCLICK: if (data->hwndFrom == hListView) ShowPopupMenu(hListView, IDR_APPLICATIONMENU); break; case EN_LINK: RichEditOnLink(hwnd, (ENLINK*)lParam); break; case TTN_GETDISPINFO: ToolBarOnGetDispInfo((LPTOOLTIPTEXT)lParam); break; } } break; case WM_PAINT: break; case WM_SIZE: { if ((GetClientWindowHeight(hMainWnd) - GetWindowHeight(hStatusBar) - SPLIT_WIDTH) < GetHSplitterPos()) { INT NewSplitPos = GetClientWindowHeight(hwnd) - 100 - GetWindowHeight(hStatusBar) - SPLIT_WIDTH; if (NewSplitPos > GetWindowHeight(hToolBar) + SPLIT_WIDTH) SetHSplitterPos(NewSplitPos); } MainWndOnSize(hwnd, wParam, lParam); } break; case WM_SIZING: { int RichEditHeight = GetWindowHeight(hRichEdit); LPRECT pRect = (LPRECT)lParam; while (RichEditHeight <= 100) { if (GetHSplitterPos() - 1 < GetWindowHeight(hToolBar) + GetWindowHeight(hListView) + SPLIT_WIDTH) break; SetHSplitterPos(GetHSplitterPos() - 1); RichEditHeight++; } if (pRect->right-pRect->left < 565) pRect->right = pRect->left + 565; if (pRect->bottom-pRect->top < 300) pRect->bottom = pRect->top + 300; return TRUE; } case WM_SYSCOLORCHANGE: { /* Forward WM_SYSCOLORCHANGE to common controls */ SendMessage(hListView, WM_SYSCOLORCHANGE, 0, 0); SendMessage(hTreeView, WM_SYSCOLORCHANGE, 0, 0); SendMessage(hToolBar, WM_SYSCOLORCHANGE, 0, 0); SendMessageW(hRichEdit, EM_SETBKGNDCOLOR, 0, GetSysColor(COLOR_BTNFACE)); } break; case WM_DESTROY: { ShowWindow(hwnd, SW_HIDE); SaveSettings(hwnd); FreeLogs(); if (IS_AVAILABLE_ENUM(SelectedEnumType)) FreeAvailableAppList(); if (IS_INSTALLED_ENUM(SelectedEnumType)) FreeInstalledAppList(); if (hImageTreeView) ImageList_Destroy(hImageTreeView); PostQuitMessage(0); return 0; } break; } return DefWindowProc(hwnd, Msg, wParam, lParam); }
/** * @brief WM_NOTIFY handler of Preview dialog. * @param hwnd - window handle. * @param idCtrl - identifier of the common control sending the message. * @param pnmh - pointer to an NMHDR structure that contains the notification code and additional information. */ static LRESULT PreviewDlg_OnNotify(HWND hwnd, int idCtrl, LPNMHDR pnmh) { switch (pnmh->code) { case LVN_ITEMCHANGED: { if (idCtrl != IDC_FILESLIST) break; LPNMLISTVIEW pnmv = (LPNMLISTVIEW)pnmh; if ((pnmv->uNewState & LVIS_SELECTED) != (pnmv->uOldState & LVIS_SELECTED)) { if (pnmv->uNewState & LVIS_SELECTED) { _ASSERTE(g_hFile == INVALID_HANDLE_VALUE && g_hBitmap == NULL); HWND hwndFileList = GetDlgItem(hwnd, IDC_FILESLIST); LVITEM lvi; ZeroMemory(&lvi, sizeof(lvi)); lvi.mask = LVIF_PARAM; lvi.iItem = pnmv->iItem; ListView_GetItem(hwndFileList, &lvi); FILE_ITEM_INFO* pFileItemInfo = (FILE_ITEM_INFO*)lvi.lParam; if (pFileItemInfo != NULL) { CWaitCursor wait(true); if (! OpenImageFile(hwnd, pFileItemInfo->szFileName)) OpenRegularFile(hwnd, pFileItemInfo->szFileName); } } else CloseViewPane(hwnd); } } break; case LVN_COLUMNCLICK: { if (idCtrl != IDC_FILESLIST) break; LPNMLISTVIEW pnmv = (LPNMLISTVIEW)pnmh; HWND hwndFileList = GetDlgItem(hwnd, IDC_FILESLIST); g_FilesListOrder.ToggleSortParams(hwndFileList, pnmv->iSubItem); LISTVIEW_SORT_PARAMS lvSortParams; lvSortParams.hwndList = hwndFileList; lvSortParams.iColumnNumber = pnmv->iSubItem; lvSortParams.bAscending = g_FilesListOrder.GetSortOrder(); switch (pnmv->iSubItem) { case CID_FILE_NAME: case CID_FILE_TYPE: lvSortParams.eCompareType = LISTVIEW_SORT_PARAMS::ICT_STRING; ListView_SortItemsEx(hwndFileList, &ListViewCompareFunc, (LPARAM)&lvSortParams); break; case CID_FILE_SIZE: lvSortParams.eCompareType = LISTVIEW_SORT_PARAMS::ICT_INTEGER; ListView_SortItems(hwndFileList, &FileSizeCompareFunc, (LPARAM)&lvSortParams); break; } } break; case TTN_GETDISPINFO: { LPTOOLTIPTEXT ptt = (LPTOOLTIPTEXT)pnmh; ptt->hinst = g_hInstance; ptt->uFlags |= TTF_DI_SETITEM; switch (ptt->hdr.idFrom) { case IDC_ZOOMIN: ptt->lpszText = MAKEINTRESOURCE(IDS_ZOOMIN); break; case IDC_ZOOMOUT: ptt->lpszText = MAKEINTRESOURCE(IDS_ZOOMOUT); break; case IDC_RESETSIZE: ptt->lpszText = MAKEINTRESOURCE(IDS_RESETSIZE); break; case IDC_FITIMAGE: ptt->lpszText = MAKEINTRESOURCE(IDS_FITIMAGE); break; } } break; } return FALSE; }
INT_PTR WINAPI doDebug(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_INITDIALOG: { RestoreWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY); HWND listView = GetDlgItem(hwndDlg, IDC_LIST); LineParser lp(false); char cFile[256]; strcpy(cFile, get_ini_file()); strcpy(strrchr(cFile, '.'), "-kb.ini"); FILE* f = fopen(cFile, "r"); char cLine[65536]; int i = 0; LVITEM item; item.mask = LVIF_TEXT | LVIF_PARAM; item.iSubItem = 0; while (f && fgets(cLine, 65536, f)) { lp.parse(cLine); if (lp.getnumtokens() - 5 > 0 && strcmp(lp.gettoken_str(0), "ACT") == 0) { Macro* m = g_macros.Add(new Macro(&lp)); item.lParam = (LPARAM)m; item.iItem = i++; item.pszText = m->m_cName; ListView_InsertItem(listView, &item); } } if (f) fclose(f); ListView_SortItems(listView, MacroSort, 0); return 0; } case WM_NOTIFY: { NMLISTVIEW* s = (NMLISTVIEW*)lParam; if (s->hdr.code == LVN_ITEMCHANGED && s->uNewState & LVIS_SELECTED) g_selectedMacro = (Macro*)s->lParam; break; } case WM_COMMAND: //if you need to debug commands, you probably want to ignore the focus stuff. Break a few lines down. if (wParam == 33555433 || wParam == 16778217) return 0; if (LOWORD(wParam)==IDCANCEL) { g_selectedMacro = NULL; SaveWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY); EndDialog(hwndDlg,0); } if (LOWORD(wParam)==IDOK) { SaveWindowPos(hwndDlg, DEBUG_WINDOWPOS_KEY); EndDialog(hwndDlg,0); } return 0; case WM_DESTROY: // We're done return 0; } return 0; }
void OnColumnClick(LPNMLISTVIEW pLVInfo, HWND hWnd) { static int nSortColumn = 0; static BOOL bSortAscending = TRUE; LPARAM lParamSort; // get new sort parameters if (pLVInfo->iSubItem == nSortColumn) bSortAscending = !bSortAscending; else { nSortColumn = pLVInfo->iSubItem; bSortAscending = !bSortAscending; } // combine sort info into a single value we can send to our sort function lParamSort = 1 + nSortColumn; if (!bSortAscending) lParamSort = -lParamSort; // click_hWnd = pLVInfo->hdr.hwndFrom; // HL_hWnd = hWnd; // TS_hWnd = hWnd; // HL_hWnd = GetDlgItem(hWnd, IDC_RACESCORING); // TS_hWnd = GetDlgItem(hWnd, IDC_TIMINGSCORING); // sort list if ( HL_hWnd && pLVInfo->hdr.hwndFrom == HL_hWnd) ListView_SortItems(pLVInfo->hdr.hwndFrom, CompareHLListItems, lParamSort); else ListView_SortItems(pLVInfo->hdr.hwndFrom, CompareTSListItems, lParamSort); }