Page MenuHomedesp's stash

No OneTemporary

diff --git a/Scylla/PickDllGui.cpp b/Scylla/PickDllGui.cpp
index 39832bb..939102b 100644
--- a/Scylla/PickDllGui.cpp
+++ b/Scylla/PickDllGui.cpp
@@ -1,61 +1,115 @@
#include "PickDllGui.h"
BOOL PickDllGui::OnInitDialog(CWindow wndFocus, LPARAM lInitParam)
{
ListDLLSelect.Attach(GetDlgItem(IDC_LIST_DLLSELECT));
addColumnsToModuleList(ListDLLSelect);
displayModuleList(ListDLLSelect);
CenterWindow();
+ GetClientRect(&MinSize);
+
return TRUE;
}
+void PickDllGui::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
+{
+ lpMMI->ptMinTrackSize.x = MinSize.right;
+ lpMMI->ptMinTrackSize.y = MinSize.bottom;
+}
+
+void PickDllGui::OnSizing(UINT fwSide, RECT* pRect)
+{
+ int toResize[] = {IDC_LIST_DLLSELECT};
+ int toMove[] = {IDC_BTN_PICKDLL_OK, IDC_BTN_PICKDLL_CANCEL};
+
+ // Get size difference
+ RECT rectOld;
+ GetWindowRect(&rectOld);
+ long deltaX = (pRect->right - pRect->left) - (rectOld.right - rectOld.left);
+ long deltaY = (pRect->bottom - pRect->top) - (rectOld.bottom - rectOld.top);
+
+ HDWP hdwp = BeginDeferWindowPos(_countof(toResize) + _countof(toMove));
+
+ for(int i = 0; i < _countof(toResize); i++)
+ {
+ RECT rectControl;
+ CWindow control(GetDlgItem(toResize[i]));
+
+ control.GetWindowRect(&rectControl); // Why doesn't GetClientRect work?
+ // calculate new width and height
+ int cx = rectControl.right - rectControl.left + deltaX;
+ int cy = rectControl.bottom - rectControl.top + deltaY;
+
+ control.DeferWindowPos(hdwp, NULL, 0, 0, cx, cy, SWP_NOMOVE | SWP_NOOWNERZORDER);
+ }
+
+ for(int i = 0; i < _countof(toMove); i++)
+ {
+ RECT rectControl;
+ CWindow control(GetDlgItem(toMove[i]));
+ control.GetClientRect(&rectControl);
+ control.MapWindowPoints(m_hWnd, &rectControl);
+ control.DeferWindowPos(hdwp, NULL, rectControl.left + deltaX, rectControl.top + deltaY, 0, 0, SWP_NOSIZE | SWP_NOOWNERZORDER);
+ }
+
+ EndDeferWindowPos(hdwp);
+}
+
void PickDllGui::OnOK(UINT uNotifyCode, int nID, CWindow wndCtl)
{
int index = ListDLLSelect.GetSelectionMark();
if (index != -1)
{
selectedModule = &moduleList[index];
EndDialog(1);
}
}
void PickDllGui::OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl)
{
EndDialog(0);
}
void PickDllGui::addColumnsToModuleList(CListViewCtrl& list)
{
list.SetExtendedListViewStyle(LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
list.InsertColumn(COL_PATH, L"Path", LVCFMT_LEFT, 210);
list.InsertColumn(COL_NAME, L"Name", LVCFMT_CENTER, 130);
list.InsertColumn(COL_IMAGEBASE, L"ImageBase", LVCFMT_CENTER, 70);
list.InsertColumn(COL_IMAGESIZE, L"ImageSize", LVCFMT_CENTER, 70);
}
void PickDllGui::displayModuleList(CListViewCtrl& list)
{
WCHAR temp[20];
list.DeleteAllItems();
std::vector<ModuleInfo>::const_iterator iter;
int count = 0;
for( iter = moduleList.begin(); iter != moduleList.end(); iter++ , count++)
{
list.InsertItem(count, iter->fullPath);
list.SetItemText(count, COL_NAME, iter->getFilename());
swprintf_s(temp,_countof(temp),L"%08X",iter->modBaseAddr);
list.SetItemText(count, COL_IMAGEBASE, temp);
swprintf_s(temp,_countof(temp),L"%08X",iter->modBaseSize);
list.SetItemText(count, COL_IMAGESIZE, temp);
}
+
+ //list.SetColumnWidth(COL_PATH, LVSCW_AUTOSIZE);
+ list.SetColumnWidth(COL_NAME, LVSCW_AUTOSIZE);
+ //list.SetColumnWidth(COL_IMAGEBASE, LVSCW_AUTOSIZE);
+
+ list.SetColumnWidth(COL_IMAGESIZE, LVSCW_AUTOSIZE_USEHEADER);
+
+ //m_hotkeysListView.SetColumnWidth(1, LVSCW_AUTOSIZE_USEHEADER);
}
diff --git a/Scylla/PickDllGui.h b/Scylla/PickDllGui.h
index e677e0d..dd23c8d 100644
--- a/Scylla/PickDllGui.h
+++ b/Scylla/PickDllGui.h
@@ -1,64 +1,70 @@
#pragma once
#include <windows.h>
#include "resource.h"
// WTL
#include <atlbase.h> // base ATL classes
#include <atlapp.h> // base WTL classes
#include <atlwin.h> // ATL GUI classes
#include <atlmisc.h> // WTL utility classes like CString
#include <atlcrack.h> // WTL enhanced msg map macros
#include <atlctrls.h> // WTL controls
#include <vector>
#include "ProcessAccessHelp.h"
class PickDllGui : public CDialogImpl<PickDllGui>
{
public:
enum { IDD = IDD_DLG_PICKDLL };
BEGIN_MSG_MAP(PickDllGui)
MSG_WM_INITDIALOG(OnInitDialog)
+ MSG_WM_GETMINMAXINFO(OnGetMinMaxInfo)
+ MSG_WM_SIZING(OnSizing)
COMMAND_ID_HANDLER_EX(IDC_BTN_PICKDLL_OK, OnOK)
COMMAND_ID_HANDLER_EX(IDC_BTN_PICKDLL_CANCEL, OnCancel)
COMMAND_ID_HANDLER_EX(IDCANCEL, OnCancel)
END_MSG_MAP()
PickDllGui(std::vector<ModuleInfo> &moduleList) : moduleList(moduleList), selectedModule(0) { }
ModuleInfo* getSelectedModule() const { return selectedModule; }
protected:
// Variables
std::vector<ModuleInfo> &moduleList;
ModuleInfo* selectedModule;
// Controls
CListViewCtrl ListDLLSelect;
enum ListColumns {
COL_PATH,
COL_NAME,
COL_IMAGEBASE,
COL_IMAGESIZE
};
+ RECT MinSize;
+
protected:
// Message handlers
BOOL OnInitDialog(CWindow wndFocus, LPARAM lInitParam);
+ void OnGetMinMaxInfo(MINMAXINFO* lpMMI);
+ void OnSizing(UINT fwSide, RECT* pRect);
void OnOK(UINT uNotifyCode, int nID, CWindow wndCtl);
void OnCancel(UINT uNotifyCode, int nID, CWindow wndCtl);
// GUI functions
void addColumnsToModuleList(CListViewCtrl& list);
void displayModuleList(CListViewCtrl& list);
};

File Metadata

Mime Type
text/x-diff
Expires
Sat, Sep 21, 8:27 PM (1 d, 20 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
70/2e/229e8795e10c66e935b457ad931a

Event Timeline