Page Menu
Home
desp's stash
Search
Configure Global Search
Log In
Files
F191355
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
View Options
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
Details
Attached
Mime Type
text/x-diff
Expires
Sat, Sep 21, 8:27 PM (1 d, 18 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
70/2e/229e8795e10c66e935b457ad931a
Attached To
rSCY Scylla
Event Timeline
Log In to Comment