MainFrm.cpp
上传用户:power_led
上传日期:2013-04-11
资源大小:373k
文件大小:5k
源码类别:

ICQ/即时通讯

开发平台:

Visual C++

  1. // MainFrm.cpp : implementation of the CMainFrame class
  2. //
  3. #include "stdafx.h"
  4. #include "ChatClient.h"
  5. #include "MyTreeView.h"
  6. #include "MyEditView.h"
  7. #include "ClientFormView.h"
  8. #include "MainFrm.h"
  9. #ifdef _DEBUG
  10. #define new DEBUG_NEW
  11. #undef THIS_FILE
  12. static char THIS_FILE[] = __FILE__;
  13. #endif
  14. /////////////////////////////////////////////////////////////////////////////
  15. // CMainFrame
  16. IMPLEMENT_DYNCREATE(CMainFrame, CFrameWnd)
  17. BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
  18. //{{AFX_MSG_MAP(CMainFrame)
  19. ON_WM_CREATE()
  20. ON_WM_GETMINMAXINFO()
  21. ON_WM_SHOWWINDOW()
  22. ON_WM_SIZE()
  23. ON_WM_CLOSE()
  24. ON_COMMAND(ID_ROOM_QUIT, OnRoomQuit)
  25. ON_COMMAND(IDR_QUIT_SYSABOUT, OnQuitSysabout)
  26. //}}AFX_MSG_MAP
  27. ON_MESSAGE(WM_TASKICON,OnTaskIcon)
  28. END_MESSAGE_MAP()
  29. static UINT indicators[] =
  30. {
  31. ID_SEPARATOR,           // status line indicator
  32. ID_INDICATOR_CAPS,
  33. ID_INDICATOR_NUM,
  34. ID_INDICATOR_SCRL,
  35. };
  36. /////////////////////////////////////////////////////////////////////////////
  37. // CMainFrame construction/destruction
  38. CMainFrame::CMainFrame()
  39. {
  40. // TODO: add member initialization code here
  41. }
  42. CMainFrame::~CMainFrame()
  43. {
  44. }
  45. extern CChatClientApp theApp;
  46. int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
  47. {
  48. if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
  49. return -1;
  50. // TODO: Delete these three lines if you don't want the toolbar to
  51. //  be dockable
  52. CRect rect;
  53. //应该首先得到屏幕的分辨率
  54. int iCxWidth = GetSystemMetrics(SM_CXFULLSCREEN);
  55. int iCyWidth = GetSystemMetrics(SM_CYFULLSCREEN);
  56. rect.SetRect(iCxWidth - 150,iCyWidth - 420,iCxWidth,iCyWidth);
  57. MoveWindow(&rect);
  58. SetWindowPos(&wndTopMost,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
  59. // CenterWindow();
  60. NOTIFYICONDATA &TaskIcon = theApp.TaskIcon;
  61. TaskIcon.cbSize = sizeof(TaskIcon);
  62. TaskIcon.hIcon = AfxGetApp()->LoadIcon(IDI_TASKICON);
  63. TaskIcon.hWnd = this->GetSafeHwnd();
  64. TaskIcon.uFlags = 0x7;
  65. lstrcpy(TaskIcon.szTip,_T("未登陆"));
  66. TaskIcon.uCallbackMessage = WM_TASKICON;
  67. Shell_NotifyIcon(NIM_ADD,&TaskIcon);
  68. return 0;
  69. }
  70. BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
  71. {
  72. if( !CFrameWnd::PreCreateWindow(cs) )
  73. return FALSE;
  74. return TRUE;
  75. }
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CMainFrame diagnostics
  78. #ifdef _DEBUG
  79. void CMainFrame::AssertValid() const
  80. {
  81. CFrameWnd::AssertValid();
  82. }
  83. void CMainFrame::Dump(CDumpContext& dc) const
  84. {
  85. CFrameWnd::Dump(dc);
  86. }
  87. #endif //_DEBUG
  88. /////////////////////////////////////////////////////////////////////////////
  89. // CMainFrame message handlers
  90. BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
  91. {
  92. // TODO: Add your specialized code here and/or call the base class
  93. CSize size;
  94. size.cx = 100;
  95. size.cy = 80;
  96. // m_wndSplitter.Create(this,2,1,size,pContext);
  97. if(!m_wndSplitter.CreateStatic(this,2,1))
  98. {
  99. return FALSE;
  100. }
  101. if(!m_wndSplitter.CreateView(0,0,RUNTIME_CLASS(CClientFormView),size,pContext))
  102. return FALSE;
  103. if(!m_wndSplitter.CreateView(1,0,RUNTIME_CLASS(CMyTreeView),size,pContext))
  104. return FALSE;
  105. return TRUE;
  106. }
  107. CMyTreeView * CMainFrame::GetTreeView()
  108. {
  109. return (CMyTreeView *)m_wndSplitter.GetPane(1,0);
  110. }
  111. CWnd * CMainFrame::GetFormView()
  112. {
  113. return m_wndSplitter.GetPane(0,0);
  114. }
  115. BOOL CMainFrame::DestroyWindow() 
  116. {
  117. // TODO: Add your specialized code here and/or call the base class
  118. return CFrameWnd::DestroyWindow();
  119. }
  120. void CMainFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI) 
  121. {
  122. // TODO: Add your message handler code here and/or call default
  123. CFrameWnd::OnGetMinMaxInfo(lpMMI);
  124. }
  125. void CMainFrame::OnTaskIcon(WPARAM wParam,LPARAM lParam)
  126. {
  127. POINT point;
  128. GetCursorPos(&point);
  129. // CTreeView::OnLButtonDown(0,point);
  130. // ScreenToClient(&point);
  131. CMenu * pContextMenu ;
  132. if(lParam == WM_LBUTTONDBLCLK)
  133. ShowWindow(SW_SHOWNORMAL);
  134. else if(lParam == WM_RBUTTONDOWN)
  135. {
  136. CMenu menu;
  137. menu.LoadMenu(IDR_QUIT);
  138. pContextMenu = menu.GetSubMenu(0);
  139. pContextMenu->TrackPopupMenu(TPM_LEFTBUTTON,point.x,point.y,this);
  140. }
  141. return;
  142. }
  143. void CMainFrame::OnShowWindow(BOOL bShow, UINT nStatus) 
  144. {
  145. CFrameWnd::OnShowWindow(bShow, nStatus);
  146. // TODO: Add your message handler code here
  147. }
  148. void CMainFrame::OnSize(UINT nType, int cx, int cy) 
  149. {
  150. CFrameWnd::OnSize(nType, cx, cy);
  151. if(nType == SW_SHOWNORMAL)
  152. ShowWindow(SW_HIDE);
  153. //if(nType == SC_MINIMIZE) ShowWindow(SW_HIDE);
  154. // TODO: Add your message handler code here
  155. }
  156. BOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) 
  157. {
  158. // TODO: Add your specialized code here and/or call the base class
  159. return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);
  160. }
  161. void CMainFrame::OnClose() 
  162. {
  163. // TODO: Add your message handler code here and/or call default
  164. ShowWindow(SW_HIDE);
  165. }
  166. void CMainFrame::OnRoomQuit() 
  167. {
  168. // TODO: Add your command handler code here
  169. PostMessage(WM_QUIT);
  170. }
  171. void CMainFrame::OnQuitSysabout() 
  172. {
  173. // TODO: Add your command handler code here
  174. theApp.OnAppAbout();
  175. }