author | Michael Krelin <hacker@klever.net> | 2006-02-03 01:05:14 (UTC) |
---|---|---|
committer | Michael Krelin <hacker@klever.net> | 2006-02-03 01:05:14 (UTC) |
commit | 51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d (patch) (side-by-side diff) | |
tree | a6693752131aaa39e56ebbca841179a8df4230ef /PumpKINDlg.cpp | |
parent | a772d9f284b4c2a909c30ea33a132a487d932600 (diff) | |
download | pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.zip pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.tar.gz pumpkin-51d59e6f7f45b8f4a60d2933e50bb8ee0c2ea20d.tar.bz2 |
made main window resizable
git-svn-id: http://svn.klever.net/kin/pumpkin/trunk@146 fe716a7a-6dde-0310-88d9-d003556173a8
-rw-r--r-- | PumpKINDlg.cpp | 84 |
1 files changed, 82 insertions, 2 deletions
diff --git a/PumpKINDlg.cpp b/PumpKINDlg.cpp index 4cb1633..9786ef0 100644 --- a/PumpKINDlg.cpp +++ b/PumpKINDlg.cpp @@ -124,16 +124,20 @@ CPumpKINDlg::CPumpKINDlg(CWnd* pParent /*=NULL*/) /* -- */
LoadSettings();
}
void CPumpKINDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPumpKINDlg)
+ DDX_Control(pDX, ID_HELP, m_HelpCtl);
+ DDX_Control(pDX, IDC_PUT, m_PutCtl);
+ DDX_Control(pDX, IDC_GET, m_GetCtl);
+ DDX_Control(pDX, IDC_EXIT, m_ExitCtl);
DDX_Control(pDX, IDC_LISTENING, m_ListenCtl);
DDX_Control(pDX, IDC_ABORT, m_AbortCtl);
DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl);
DDX_Control(pDX, IDC_LOG, m_Log);
DDX_Control(pDX, IDC_CONNECTIONS, m_List);
//}}AFX_DATA_MAP
}
@@ -151,29 +155,31 @@ BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) ON_BN_CLICKED(IDC_GET, OnGet)
ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections)
ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections)
ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections)
ON_BN_CLICKED(IDC_ABORT, OnAbort)
ON_WM_CLOSE()
ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow)
+ ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen)
ON_COMMAND(ID_TRAY_EXIT, OnTrayExit)
ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin)
ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile)
ON_COMMAND(ID_TRAY_HELP, OnTrayHelp)
ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions)
ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile)
ON_WM_WINDOWPOSCHANGING()
ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog)
ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder)
ON_WM_DROPFILES()
ON_BN_CLICKED(ID_HELP, OnHelp)
ON_BN_CLICKED(IDC_LISTENING, OnListening)
- ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen)
+ ON_WM_GETMINMAXINFO()
+ ON_WM_SIZE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPumpKINDlg message handlers
BOOL CPumpKINDlg::OnInitDialog()
{
@@ -196,17 +202,16 @@ BOOL CPumpKINDlg::OnInitDialog() // Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0));
-
m_Images.Create(16,16,TRUE,2,1);
m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ));
m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ));
ASSERT(m_iRRQ>=0);
ASSERT(m_iWRQ>=0);
m_List.SetImageList(&m_Images,LVSIL_NORMAL);
m_List.SetImageList(&m_Images,LVSIL_SMALL);
m_List.SetImageList(&m_Images,LVSIL_STATE);
@@ -220,16 +225,30 @@ CRect listrc; m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer);
m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes);
m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize);
LogLine(IDS_LOG_START);
SetupButtons();
+CRect wrci, wrco;
+ GetWindowRect(&wrco);
+ GetClientRect(&wrci);
+CRect brc;
+ m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_rightGapButtons = wrci.right-brc.right;
+ m_List.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_rightGapList = wrci.right-brc.right;
+ m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_bottomGapListen = wrci.bottom-brc.bottom;
+ m_Log.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_bottomGapLog = wrci.bottom-brc.bottom;
+ m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height();
+
CRect rc, drc;
GetWindowRect(rc);
GetDesktopWindow()->GetWindowRect(drc);
SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER);
if(m_bShown)
ShowWindow(SW_SHOW);
else
@@ -2072,8 +2091,69 @@ void CPumpKINDlg::LogLine(LPCTSTR str) CString tmp;
tmp.Format(IDS_LOG_LOGERROR,m_LogFile);
LogLineToScreen(tmp);
m_lastlogerr=m_LogFile;
}
}
}
}
+
+void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
+{
+ CDialog::OnGetMinMaxInfo(lpMMI);
+ if(m_MinSize.cx>0 && m_MinSize.cy>0){
+ lpMMI->ptMinTrackSize.x = m_MinSize.cx;
+ lpMMI->ptMinTrackSize.y = m_MinSize.cy;
+ }
+}
+
+void CPumpKINDlg::OnSize(UINT nType, int cx, int cy)
+{
+ CDialog::OnSize(nType, cx, cy);
+ if(nType==SIZE_RESTORED)
+ RecalcLayout(cx,cy);
+}
+
+void CPumpKINDlg::RecalcLayout(int,int)
+{
+ CRect wrc;
+ GetClientRect(&wrc);
+ AdjustButton(m_GetCtl,wrc);
+ AdjustButton(m_PutCtl,wrc);
+ AdjustButton(m_AbortCtl,wrc);
+ AdjustButton(m_HelpCtl,wrc);
+ AdjustButton(m_ExitCtl,wrc);
+ AdjustButton(m_OptionsCtl,wrc);
+ CRect brc;
+ m_List.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_List.SetWindowPos(
+ 0,
+ brc.left, brc.top,
+ wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top,
+ SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS );
+ m_Log.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_Log.SetWindowPos(
+ 0,
+ brc.left, brc.top,
+ wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top,
+ SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS );
+ m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc);
+ m_ListenCtl.SetWindowPos(
+ 0,
+ wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen,
+ 0,0,
+ SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS );
+ int i = m_Log.GetCount();
+ if(i!=LB_ERR)
+ m_Log.SetCurSel(i-1);
+}
+
+void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc)
+{
+ CRect brc;
+ w.GetWindowRect(&brc); ScreenToClient(&brc);
+ w.SetWindowPos(
+ 0,
+ wrc.right-brc.Width()-m_rightGapButtons, brc.top,
+ 0, 0,
+ SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS );
+}
|