RECT TaskList::adjustSize() { RECT rc; ListView_GetItemRect(_hSelf, 0, &rc, LVIR_ICON); const int imgWidth = rc.right - rc.left; const int leftMarge = 30; const int xpBottomMarge = 5; const int w7BottomMarge = 15; // Temporary set "selected" font to get the worst case widths ::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFontSelected), 0); int maxwidth = -1; _rc.left = 0; _rc.top = 0; _rc.bottom = 0; for (int i = 0 ; i < _nbItem ; ++i) { TCHAR buf[MAX_PATH]; ListView_GetItemText(_hSelf, i, 0, buf, MAX_PATH); int width = ListView_GetStringWidth(_hSelf, buf); if (width > maxwidth) maxwidth = width; _rc.bottom += rc.bottom - rc.top; } _rc.right = maxwidth + imgWidth + leftMarge; ListView_SetColumnWidth(_hSelf, 0, _rc.right); ::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFont), 0); reSizeTo(_rc); winVer ver = (NppParameters::getInstance())->getWinVersion(); _rc.bottom += (ver <= WV_XP && ver != WV_UNKNOWN)?xpBottomMarge:w7BottomMarge; return _rc; }
RECT TaskList::adjustSize() { RECT rc; ListView_GetItemRect(_hSelf, 0, &rc, LVIR_ICON); const int imgWidth = rc.right - rc.left; const int marge = 30; for (int i = 0 ; i < _nbItem ; i++) { char buf[MAX_PATH]; ListView_GetItemText(_hSelf, i, 0, buf, sizeof(buf)); int width = ListView_GetStringWidth(_hSelf, buf); if (width > (_rc.right - _rc.left)) _rc.right = _rc.left + width + imgWidth + marge; _rc.bottom += rc.bottom - rc.top; } // additional space for horizontal scroll-bar _rc.bottom += rc.bottom - rc.top; reSizeTo(_rc); return _rc; }
RECT TaskList::adjustSize() { RECT rc; ListView_GetItemRect(_hSelf, 0, &rc, LVIR_ICON); const int imgWidth = rc.right - rc.left; const int marge = 30; // Temporary set "selected" font to get the worst case widths ::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFontSelected), 0); int maxwidth = -1; _rc.left = 0; _rc.top = 0; _rc.bottom = 0; for (int i = 0 ; i < _nbItem ; i++) { TCHAR buf[MAX_PATH]; ListView_GetItemText(_hSelf, i, 0, buf, MAX_PATH); int width = ListView_GetStringWidth(_hSelf, buf); if (width > maxwidth) maxwidth = width; _rc.bottom += rc.bottom - rc.top; } _rc.right = maxwidth + imgWidth + marge; ::SendMessage(_hSelf, WM_SETFONT, reinterpret_cast<WPARAM>(_hFont), 0); reSizeTo(_rc); return _rc; }
void DockingManager::onSize() { reSizeTo(_rect); }
INT_PTR CALLBACK TaskListDlg::run_dlgProc(UINT Message, WPARAM wParam, LPARAM lParam) { switch (Message) { case WM_INITDIALOG : { ::SendMessage(_hParent, WM_GETTASKLISTINFO, reinterpret_cast<WPARAM>(&_taskListInfo), 0); int nbTotal = static_cast<int32_t>(_taskListInfo._tlfsLst.size()); int i2set = _taskListInfo._currentIndex + (_initDir == dirDown?1:-1); if (i2set < 0) i2set = nbTotal - 1; if (i2set > (nbTotal - 1)) i2set = 0; _taskList.init(_hInst, _hSelf, _hImalist, nbTotal, i2set); _taskList.setFont(TEXT("Verdana"), NppParameters::getInstance()->_dpiManager.scaleY(14)); _rc = _taskList.adjustSize(); reSizeTo(_rc); goToCenter(); _taskList.display(true); hWndServer = _hSelf; windowsVersion = NppParameters::getInstance()->getWinVersion(); #ifndef WH_MOUSE_LL #define WH_MOUSE_LL 14 #endif _hHooker = ::SetWindowsHookEx(WH_MOUSE_LL, hookProc, _hInst, 0); hook = _hHooker; return FALSE; } case WM_DESTROY : { _taskList.destroy(); ::UnhookWindowsHookEx(_hHooker); _instanceCount--; return TRUE; } case WM_RBUTTONUP: { ::SendMessage(_hSelf, WM_COMMAND, ID_PICKEDUP, _taskList.getCurrentIndex()); return TRUE; } case WM_MOUSEWHEEL: { ::SendMessage(_taskList.getHSelf(), WM_MOUSEWHEEL, wParam, lParam); return TRUE; } case WM_DRAWITEM : { drawItem((DRAWITEMSTRUCT *)lParam); return TRUE; } case WM_NOTIFY: { switch (((LPNMHDR)lParam)->code) { case LVN_GETDISPINFO: { LV_ITEM &lvItem = reinterpret_cast<LV_DISPINFO*>(reinterpret_cast<LV_DISPINFO FAR *>(lParam))->item; TaskLstFnStatus & fileNameStatus = _taskListInfo._tlfsLst[lvItem.iItem]; lvItem.pszText = (TCHAR *)fileNameStatus._fn.c_str(); lvItem.iImage = fileNameStatus._status; return TRUE; } case NM_CLICK : case NM_RCLICK : { ::SendMessage(_hSelf, WM_COMMAND, ID_PICKEDUP, _taskList.updateCurrentIndex()); return TRUE; } default: break; } break; } case WM_COMMAND : { switch (wParam) { case ID_PICKEDUP : { auto listIndex = lParam; int view2set = _taskListInfo._tlfsLst[listIndex]._iView; int index2Switch = _taskListInfo._tlfsLst[listIndex]._docIndex; ::SendMessage(_hParent, NPPM_ACTIVATEDOC, view2set, index2Switch); ::EndDialog(_hSelf, -1); return TRUE; } default: return FALSE; } } default : return FALSE; } return FALSE; }