GeniusDlg.cpp
上传用户:tjfeida
上传日期:2013-03-10
资源大小:1917k
文件大小:6k
源码类别:

Ftp客户端

开发平台:

Visual C++

  1. // GeniusDlg.cpp : implementation file
  2. //
  3. /*********************************************
  4. **该文件是属于WolfFTP工程中的。如果有什么问题
  5. **请联系
  6. **         tablejiang@21cn.com
  7. **或者访问
  8. **         http://wolfftp.51.net
  9. **以得到最新的支持。
  10. *********************************************/
  11. #include "stdafx.h"
  12. #include "quickftp.h"
  13. #include "GeniusDlg.h"
  14. #include "Windows.h"
  15. #ifdef _DEBUG
  16. #define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CGeniusDlg dialog
  22. CGeniusDlg::CGeniusDlg(CWnd* pParent /*=NULL*/)
  23. : CDialog(CGeniusDlg::IDD, pParent)
  24. {
  25. //{{AFX_DATA_INIT(CGeniusDlg)
  26. // NOTE: the ClassWizard will add member initialization here
  27. //}}AFX_DATA_INIT
  28. }
  29. void CGeniusDlg::DoDataExchange(CDataExchange* pDX)
  30. {
  31. CDialog::DoDataExchange(pDX);
  32. //{{AFX_DATA_MAP(CGeniusDlg)
  33. // NOTE: the ClassWizard will add DDX and DDV calls here
  34. //}}AFX_DATA_MAP
  35. }
  36. BEGIN_MESSAGE_MAP(CGeniusDlg, CDialog)
  37. //{{AFX_MSG_MAP(CGeniusDlg)
  38. ON_WM_LBUTTONDOWN()
  39. ON_WM_PAINT()
  40. ON_WM_ERASEBKGND()
  41. ON_WM_LBUTTONDBLCLK()
  42. ON_WM_RBUTTONDOWN()
  43. //}}AFX_MSG_MAP
  44. END_MESSAGE_MAP()
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CGeniusDlg message handlers
  47. void CGeniusDlg::OnOK() 
  48. {
  49. // TODO: Add extra validation here
  50. //CDialog::OnOK();
  51. }
  52. void CGeniusDlg::OnCancel() 
  53. {
  54. // TODO: Add extra cleanup here
  55. //CDialog::OnCancel();
  56. }
  57. BOOL CGeniusDlg::OnInitDialog() 
  58. {
  59. CDialog::OnInitDialog();
  60. // TODO: Add extra initialization here
  61. //it need new SDK . And it only apply in win2000 system.
  62. /*
  63. // Set WS_EX_LAYERED on this window 
  64. SetWindowLong( m_hWnd , GWL_EXSTYLE , GetWindowLong(m_hWnd , GWL_EXSTYLE) | WS_EX_LAYERED );
  65. // Make this window 70% alpha
  66. SetLayeredWindowAttributes( m_hWnd , 0 , (255 * 70) / 100, LWA_ALPHA);
  67. */
  68. ShowWindow( SW_HIDE ) ;
  69. RECT rect ;
  70. BITMAP bm ;
  71. m_BackBmp.LoadBitmap( IDB_BITMAP_GENIUS ) ;
  72. m_BackBmp.GetBitmap( &bm ) ;
  73. //set window pos .
  74. GetWindowRect( &rect ) ;
  75. rect.left = ::GetSystemMetrics(SM_CXSCREEN) - 50 ;
  76. rect.top = 10 ;
  77. rect.right = rect.left + bm.bmWidth ;
  78. rect.bottom = rect.top + bm.bmHeight ;
  79. MoveWindow( &rect , true ) ;
  80. m_iHeight = bm.bmHeight ;
  81. m_iWidth = bm.bmWidth ;
  82. ShowWindow( SW_SHOW ) ;
  83. return TRUE;  // return TRUE unless you set the focus to a control
  84.               // EXCEPTION: OCX Property Pages should return FALSE
  85. }
  86. void CGeniusDlg::OnLButtonDown(UINT nFlags, CPoint point) 
  87. {
  88. // TODO: Add your message handler code here and/or call default
  89. PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
  90. CDialog::OnLButtonDown(nFlags, point);
  91. }
  92. void CGeniusDlg::OnPaint()
  93. {
  94. CPaintDC dc(this); // device context for painting
  95. // TODO: Add your message handler code here
  96. // Do not call CDialog::OnPaint() for painting messages
  97. }
  98. BOOL CGeniusDlg::DestroyWindow() 
  99. {
  100. // TODO: Add your specialized code here and/or call the base class
  101. m_BackBmp.DeleteObject( ) ;
  102. return CDialog::DestroyWindow();
  103. }
  104. BOOL CGeniusDlg::OnEraseBkgnd(CDC* pDC) 
  105. {
  106. // TODO: Add your message handler code here and/or call default
  107. CDialog::OnEraseBkgnd(pDC);
  108. //draw the bitmap on erase .
  109. CDC memDC ;
  110. memDC.CreateCompatibleDC( pDC ) ;
  111. CBitmap * pOldBmp = memDC.SelectObject( &m_BackBmp ) ;
  112. pDC->BitBlt( 0 , 0 , m_iWidth , m_iHeight , &memDC , 
  113. 0 , 0 , SRCCOPY ) ;
  114. memDC.SelectObject( pOldBmp ) ;
  115. return true ;
  116. }
  117. BOOL CGeniusDlg::SplitterWindow()
  118. {
  119. CDC memdc ;
  120. CClientDC dc( this ) ;
  121. //make background 
  122. RECT rect ;
  123. CBrush Brush ;
  124. ::SetRect( &rect , 0 , 0 , m_iWidth , m_iHeight ) ;
  125. Brush.CreateSolidBrush( RGB( 10 , 5 , 5 ) ) ;
  126. dc.FillRect( &rect , &Brush ) ;
  127. memdc.CreateCompatibleDC( &dc ) ;
  128. CBitmap* pBak= memdc.SelectObject( &m_BackBmp ) ;
  129. //split window move.
  130. for(int i=0;i<m_iHeight/2+1;i++)
  131. {
  132. dc.BitBlt (0 , 0 , m_iWidth , i+1 , &memdc , 0 , m_iHeight/2-i , SRCCOPY);
  133. dc.BitBlt (0 , m_iHeight-i , m_iWidth , i , &memdc , 0 , m_iHeight/2 , SRCCOPY);
  134. Sleep(10);
  135. }
  136. dc.BitBlt( 0 , 0 , m_iWidth , m_iHeight , &memdc , 
  137. 0 , 0 , SRCCOPY ) ;
  138. memdc.SelectObject( pBak ) ;
  139. Brush.DeleteObject( ) ;
  140. return true ;
  141. }
  142. LRESULT CGeniusDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
  143. {
  144. // TODO: Add your specialized code here and/or call the base class
  145. switch( message )
  146. {
  147. case GENIUS_WND_SPLIT_MSG :
  148. {
  149. SplitterWindow( ) ;
  150. }
  151. break ;
  152. default :
  153. break ;
  154. }
  155. return CDialog::DefWindowProc(message, wParam, lParam);
  156. }
  157. void CGeniusDlg::SetTransmitWnd(HWND hWnd)
  158. {
  159. m_hTransmitWnd = hWnd ;
  160. }
  161. void CGeniusDlg::OnLButtonDblClk(UINT nFlags, CPoint point) 
  162. {
  163. // TODO: Add your message handler code here and/or call default
  164. if( ::IsWindowVisible( m_hTransmitWnd ) )
  165. {
  166. ::ShowWindow( m_hTransmitWnd , SW_HIDE ) ;
  167. }
  168. else
  169. {
  170. ::ShowWindow( m_hTransmitWnd , SW_SHOW ) ;
  171. }
  172. CDialog::OnLButtonDblClk(nFlags, point);
  173. }
  174. void CGeniusDlg::SetMainWnd(CWnd *pWnd)
  175. {
  176. m_pMainWnd = pWnd ;
  177. }
  178. void CGeniusDlg::OnRButtonDown(UINT nFlags, CPoint point) 
  179. {
  180. // TODO: Add your message handler code here and/or call default
  181. CPoint myPoint ;
  182. myPoint = point ;
  183. ClientToScreen( &myPoint ) ;
  184. CMenu PopMenu ;
  185. PopMenu.LoadMenu( IDR_MAINFRAME ) ;
  186. CMenu *pPopMenu = PopMenu.GetSubMenu( 5 ) ;
  187. pPopMenu->EnableMenuItem( IDR_REMOTE_UPLOAD , MF_DISABLED | MF_GRAYED) ;
  188. pPopMenu->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON , myPoint.x , myPoint.y , m_pMainWnd ) ;
  189. CDialog::OnRButtonDown(nFlags, point);
  190. }