-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*/) | |||
124 | /* -- */ | 124 | /* -- */ |
125 | LoadSettings(); | 125 | LoadSettings(); |
126 | } | 126 | } |
127 | 127 | ||
128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) | 128 | void CPumpKINDlg::DoDataExchange(CDataExchange* pDX) |
129 | { | 129 | { |
130 | CDialog::DoDataExchange(pDX); | 130 | CDialog::DoDataExchange(pDX); |
131 | //{{AFX_DATA_MAP(CPumpKINDlg) | 131 | //{{AFX_DATA_MAP(CPumpKINDlg) |
132 | DDX_Control(pDX, ID_HELP, m_HelpCtl); | ||
133 | DDX_Control(pDX, IDC_PUT, m_PutCtl); | ||
134 | DDX_Control(pDX, IDC_GET, m_GetCtl); | ||
135 | DDX_Control(pDX, IDC_EXIT, m_ExitCtl); | ||
132 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); | 136 | DDX_Control(pDX, IDC_LISTENING, m_ListenCtl); |
133 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); | 137 | DDX_Control(pDX, IDC_ABORT, m_AbortCtl); |
134 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); | 138 | DDX_Control(pDX, IDC_OPTIONS, m_OptionsCtl); |
135 | DDX_Control(pDX, IDC_LOG, m_Log); | 139 | DDX_Control(pDX, IDC_LOG, m_Log); |
136 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); | 140 | DDX_Control(pDX, IDC_CONNECTIONS, m_List); |
137 | //}}AFX_DATA_MAP | 141 | //}}AFX_DATA_MAP |
138 | } | 142 | } |
139 | 143 | ||
@@ -151,29 +155,31 @@ BEGIN_MESSAGE_MAP(CPumpKINDlg, CDialog) | |||
151 | ON_BN_CLICKED(IDC_GET, OnGet) | 155 | ON_BN_CLICKED(IDC_GET, OnGet) |
152 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) | 156 | ON_NOTIFY(LVN_DELETEALLITEMS, IDC_CONNECTIONS, OnDeleteallitemsConnections) |
153 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) | 157 | ON_NOTIFY(LVN_DELETEITEM, IDC_CONNECTIONS, OnDeleteitemConnections) |
154 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) | 158 | ON_NOTIFY(LVN_INSERTITEM, IDC_CONNECTIONS, OnInsertitemConnections) |
155 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) | 159 | ON_NOTIFY(LVN_ITEMCHANGED, IDC_CONNECTIONS, OnItemchangedConnections) |
156 | ON_BN_CLICKED(IDC_ABORT, OnAbort) | 160 | ON_BN_CLICKED(IDC_ABORT, OnAbort) |
157 | ON_WM_CLOSE() | 161 | ON_WM_CLOSE() |
158 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) | 162 | ON_COMMAND(ID_TRAY_SHOWPUMPKINWINDOW, OnTrayShowpumpkinwindow) |
163 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | ||
159 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) | 164 | ON_COMMAND(ID_TRAY_EXIT, OnTrayExit) |
160 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) | 165 | ON_COMMAND(ID_TRAY_ABOUTPUMPKIN, OnTrayAboutpumpkin) |
161 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) | 166 | ON_COMMAND(ID_TRAY_FETCHFILE, OnTrayFetchfile) |
162 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) | 167 | ON_COMMAND(ID_TRAY_HELP, OnTrayHelp) |
163 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) | 168 | ON_COMMAND(ID_TRAY_OPTIONS, OnTrayOptions) |
164 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) | 169 | ON_COMMAND(ID_TRAY_SENDFILE, OnTraySendfile) |
165 | ON_WM_WINDOWPOSCHANGING() | 170 | ON_WM_WINDOWPOSCHANGING() |
166 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) | 171 | ON_LBN_SELCHANGE(IDC_LOG, OnSelchangeLog) |
167 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) | 172 | ON_COMMAND(ID_TRAY_OPENFILESFOLDER, OnTrayOpenfilesfolder) |
168 | ON_WM_DROPFILES() | 173 | ON_WM_DROPFILES() |
169 | ON_BN_CLICKED(ID_HELP, OnHelp) | 174 | ON_BN_CLICKED(ID_HELP, OnHelp) |
170 | ON_BN_CLICKED(IDC_LISTENING, OnListening) | 175 | ON_BN_CLICKED(IDC_LISTENING, OnListening) |
171 | ON_COMMAND(ID_TRAY_LISTEN, OnTrayListen) | 176 | ON_WM_GETMINMAXINFO() |
177 | ON_WM_SIZE() | ||
172 | //}}AFX_MSG_MAP | 178 | //}}AFX_MSG_MAP |
173 | END_MESSAGE_MAP() | 179 | END_MESSAGE_MAP() |
174 | 180 | ||
175 | ///////////////////////////////////////////////////////////////////////////// | 181 | ///////////////////////////////////////////////////////////////////////////// |
176 | // CPumpKINDlg message handlers | 182 | // CPumpKINDlg message handlers |
177 | 183 | ||
178 | BOOL CPumpKINDlg::OnInitDialog() | 184 | BOOL CPumpKINDlg::OnInitDialog() |
179 | { | 185 | { |
@@ -196,17 +202,16 @@ BOOL CPumpKINDlg::OnInitDialog() | |||
196 | 202 | ||
197 | // Set the icon for this dialog. The framework does this automatically | 203 | // Set the icon for this dialog. The framework does this automatically |
198 | // when the application's main window is not a dialog | 204 | // when the application's main window is not a dialog |
199 | SetIcon(m_hIcon, TRUE); // Set big icon | 205 | SetIcon(m_hIcon, TRUE); // Set big icon |
200 | SetIcon(m_hIcon, FALSE); // Set small icon | 206 | SetIcon(m_hIcon, FALSE); // Set small icon |
201 | 207 | ||
202 | VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); | 208 | VERIFY(m_Retrier->Create(NULL,"PumpKIN-Retrier",WS_CHILD,CRect(0,0,0,0),this,0)); |
203 | 209 | ||
204 | |||
205 | m_Images.Create(16,16,TRUE,2,1); | 210 | m_Images.Create(16,16,TRUE,2,1); |
206 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); | 211 | m_iRRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_RRQ)); |
207 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); | 212 | m_iWRQ = m_Images.Add(AfxGetApp()->LoadIcon(IDI_WRQ)); |
208 | ASSERT(m_iRRQ>=0); | 213 | ASSERT(m_iRRQ>=0); |
209 | ASSERT(m_iWRQ>=0); | 214 | ASSERT(m_iWRQ>=0); |
210 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); | 215 | m_List.SetImageList(&m_Images,LVSIL_NORMAL); |
211 | m_List.SetImageList(&m_Images,LVSIL_SMALL); | 216 | m_List.SetImageList(&m_Images,LVSIL_SMALL); |
212 | m_List.SetImageList(&m_Images,LVSIL_STATE); | 217 | m_List.SetImageList(&m_Images,LVSIL_STATE); |
@@ -220,16 +225,30 @@ CRect listrc; | |||
220 | m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); | 225 | m_List.InsertColumn(2,"peer",LVCFMT_LEFT,listrc.Width()*2/7,subitemPeer); |
221 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); | 226 | m_List.InsertColumn(3,"ACK",LVCFMT_RIGHT,listrc.Width()/7,subitemBytes); |
222 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); | 227 | m_List.InsertColumn(4,"tsize",LVCFMT_RIGHT,listrc.Width()/7,subitemTSize); |
223 | 228 | ||
224 | LogLine(IDS_LOG_START); | 229 | LogLine(IDS_LOG_START); |
225 | 230 | ||
226 | SetupButtons(); | 231 | SetupButtons(); |
227 | 232 | ||
233 | CRect wrci, wrco; | ||
234 | GetWindowRect(&wrco); | ||
235 | GetClientRect(&wrci); | ||
236 | CRect brc; | ||
237 | m_GetCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
238 | m_rightGapButtons = wrci.right-brc.right; | ||
239 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
240 | m_rightGapList = wrci.right-brc.right; | ||
241 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
242 | m_bottomGapListen = wrci.bottom-brc.bottom; | ||
243 | m_Log.GetWindowRect(&brc);ScreenToClient(&brc); | ||
244 | m_bottomGapLog = wrci.bottom-brc.bottom; | ||
245 | m_MinSize.cx = wrco.Width(); m_MinSize.cy=wrco.Height(); | ||
246 | |||
228 | CRect rc, drc; | 247 | CRect rc, drc; |
229 | GetWindowRect(rc); | 248 | GetWindowRect(rc); |
230 | GetDesktopWindow()->GetWindowRect(drc); | 249 | GetDesktopWindow()->GetWindowRect(drc); |
231 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); | 250 | SetWindowPos(NULL,drc.right-6-rc.Width(),6,0,0,SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOZORDER); |
232 | 251 | ||
233 | if(m_bShown) | 252 | if(m_bShown) |
234 | ShowWindow(SW_SHOW); | 253 | ShowWindow(SW_SHOW); |
235 | else | 254 | else |
@@ -2072,8 +2091,69 @@ void CPumpKINDlg::LogLine(LPCTSTR str) | |||
2072 | CString tmp; | 2091 | CString tmp; |
2073 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); | 2092 | tmp.Format(IDS_LOG_LOGERROR,m_LogFile); |
2074 | LogLineToScreen(tmp); | 2093 | LogLineToScreen(tmp); |
2075 | m_lastlogerr=m_LogFile; | 2094 | m_lastlogerr=m_LogFile; |
2076 | } | 2095 | } |
2077 | } | 2096 | } |
2078 | } | 2097 | } |
2079 | } | 2098 | } |
2099 | |||
2100 | void CPumpKINDlg::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) | ||
2101 | { | ||
2102 | CDialog::OnGetMinMaxInfo(lpMMI); | ||
2103 | if(m_MinSize.cx>0 && m_MinSize.cy>0){ | ||
2104 | lpMMI->ptMinTrackSize.x = m_MinSize.cx; | ||
2105 | lpMMI->ptMinTrackSize.y = m_MinSize.cy; | ||
2106 | } | ||
2107 | } | ||
2108 | |||
2109 | void CPumpKINDlg::OnSize(UINT nType, int cx, int cy) | ||
2110 | { | ||
2111 | CDialog::OnSize(nType, cx, cy); | ||
2112 | if(nType==SIZE_RESTORED) | ||
2113 | RecalcLayout(cx,cy); | ||
2114 | } | ||
2115 | |||
2116 | void CPumpKINDlg::RecalcLayout(int,int) | ||
2117 | { | ||
2118 | CRect wrc; | ||
2119 | GetClientRect(&wrc); | ||
2120 | AdjustButton(m_GetCtl,wrc); | ||
2121 | AdjustButton(m_PutCtl,wrc); | ||
2122 | AdjustButton(m_AbortCtl,wrc); | ||
2123 | AdjustButton(m_HelpCtl,wrc); | ||
2124 | AdjustButton(m_ExitCtl,wrc); | ||
2125 | AdjustButton(m_OptionsCtl,wrc); | ||
2126 | CRect brc; | ||
2127 | m_List.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2128 | m_List.SetWindowPos( | ||
2129 | 0, | ||
2130 | brc.left, brc.top, | ||
2131 | wrc.right-m_rightGapList-brc.left, brc.bottom-brc.top, | ||
2132 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2133 | m_Log.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2134 | m_Log.SetWindowPos( | ||
2135 | 0, | ||
2136 | brc.left, brc.top, | ||
2137 | wrc.right-m_rightGapButtons-brc.left, wrc.bottom-m_bottomGapLog-brc.top, | ||
2138 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2139 | m_ListenCtl.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2140 | m_ListenCtl.SetWindowPos( | ||
2141 | 0, | ||
2142 | wrc.right-brc.Width()-m_rightGapButtons, wrc.bottom-brc.Height()-m_bottomGapListen, | ||
2143 | 0,0, | ||
2144 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2145 | int i = m_Log.GetCount(); | ||
2146 | if(i!=LB_ERR) | ||
2147 | m_Log.SetCurSel(i-1); | ||
2148 | } | ||
2149 | |||
2150 | void CPumpKINDlg::AdjustButton(CWnd& w,CRect& wrc) | ||
2151 | { | ||
2152 | CRect brc; | ||
2153 | w.GetWindowRect(&brc); ScreenToClient(&brc); | ||
2154 | w.SetWindowPos( | ||
2155 | 0, | ||
2156 | wrc.right-brc.Width()-m_rightGapButtons, brc.top, | ||
2157 | 0, 0, | ||
2158 | SWP_NOACTIVATE|SWP_NOOWNERZORDER|SWP_NOSIZE|SWP_NOZORDER|SWP_NOCOPYBITS ); | ||
2159 | } | ||