OSDemoView.cpp
上传用户:tianjwyx
上传日期:2007-01-13
资源大小:813k
文件大小:6k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. // OSDemoView.cpp : implementation of the COSDemoView class
  2. //
  3. #include "stdafx.h"
  4. #include "OSDemo.h"
  5. #include "OSDemoDoc.h"
  6. #include "OSDemoView.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // COSDemoView
  14. IMPLEMENT_DYNCREATE(COSDemoView, CFormView)
  15. BEGIN_MESSAGE_MAP(COSDemoView, CFormView)
  16. //{{AFX_MSG_MAP(COSDemoView)
  17. ON_COMMAND(ID_MENU_TEST1, OnMenuTest1)
  18. ON_UPDATE_COMMAND_UI(ID_MENU_TEST1, OnUpdateMenuTest1)
  19. ON_COMMAND(ID_MENU_TEST2, OnMenuTest2)
  20. ON_COMMAND(ID_MENU_TEST3, OnMenuTest3)
  21. ON_COMMAND(ID_MENU_TEST4, OnMenuTest4)
  22. ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_DEMO, OnSelchangeTabDemo)
  23. //}}AFX_MSG_MAP
  24. END_MESSAGE_MAP()
  25. /////////////////////////////////////////////////////////////////////////////
  26. // COSDemoView construction/destruction
  27. COSDemoView::COSDemoView()
  28. : CFormView(COSDemoView::IDD)
  29. {
  30. //{{AFX_DATA_INIT(COSDemoView)
  31. // NOTE: the ClassWizard will add member initialization here
  32. //}}AFX_DATA_INIT
  33. // TODO: add construction code here
  34.     
  35. }
  36. COSDemoView::~COSDemoView()
  37. {
  38. }
  39. void COSDemoView::DoDataExchange(CDataExchange* pDX)
  40. {
  41. CFormView::DoDataExchange(pDX);
  42. //{{AFX_DATA_MAP(COSDemoView)
  43. DDX_Control(pDX, IDC_TAB_DEMO, m_Tab);
  44. //}}AFX_DATA_MAP
  45. }
  46. BOOL COSDemoView::PreCreateWindow(CREATESTRUCT& cs)
  47. {
  48. // TODO: Modify the Window class or styles here by modifying
  49. //  the CREATESTRUCT cs
  50.     
  51.     
  52. return CFormView::PreCreateWindow(cs);
  53. }
  54. void COSDemoView::OnInitialUpdate()
  55. {
  56. CFormView::OnInitialUpdate();
  57. GetParentFrame()->RecalcLayout();
  58. ResizeParentToFit();
  59.    
  60.    
  61. }
  62. /////////////////////////////////////////////////////////////////////////////
  63. // COSDemoView printing
  64. BOOL COSDemoView::OnPreparePrinting(CPrintInfo* pInfo)
  65. {
  66. // default preparation
  67. return DoPreparePrinting(pInfo);
  68. }
  69. void COSDemoView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  70. {
  71. // TODO: add extra initialization before printing
  72. }
  73. void COSDemoView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
  74. {
  75. // TODO: add cleanup after printing
  76. }
  77. void COSDemoView::OnPrint(CDC* pDC, CPrintInfo* /*pInfo*/)
  78. {
  79. // TODO: add customized printing code here
  80. }
  81. /////////////////////////////////////////////////////////////////////////////
  82. // COSDemoView diagnostics
  83. #ifdef _DEBUG
  84. void COSDemoView::AssertValid() const
  85. {
  86. CFormView::AssertValid();
  87. }
  88. void COSDemoView::Dump(CDumpContext& dc) const
  89. {
  90. CFormView::Dump(dc);
  91. }
  92. COSDemoDoc* COSDemoView::GetDocument() // non-debug version is inline
  93. {
  94. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COSDemoDoc)));
  95. return (COSDemoDoc*)m_pDocument;
  96. }
  97. #endif //_DEBUG
  98. /////////////////////////////////////////////////////////////////////////////
  99. // COSDemoView message handlers
  100. void COSDemoView::OnDraw(CDC* pDC) 
  101. {
  102.     CRect rcClient;
  103. pDC->GetClipBox(rcClient); //获取需刷新的逻辑坐标区域
  104. rcClient.NormalizeRect();
  105. if (rcClient.IsRectEmpty()) //不需刷新时直接返回
  106. return;
  107. //绘制客户区的底色
  108. CBrush brush;
  109. brush.CreateSolidBrush(RGB(222,227,247));
  110. pDC->FillRect(rcClient, &brush);
  111. brush.DeleteObject();
  112.     if (!bTabInit)
  113. bTabInit=true;
  114. m_Tab.AddPage(" 作业调度  ", &m_Tab1, IDD_TAB1);
  115. m_Tab.AddPage(" 进程调度  ", &m_Tab2, IDD_TAB2);
  116. m_Tab.AddPage(" 请求页式  ", &m_Tab3, IDD_TAB3);
  117. m_Tab.AddPage(" 文件管理  ", &m_Tab4, IDD_TAB4);
  118.     
  119. m_Tab.Show();
  120. }
  121.     
  122. }
  123. void COSDemoView::ApplySkin(int n)
  124. {
  125.        
  126. switch(n)
  127. {
  128.  case 1:
  129.   break;
  130.      case 7:
  131.   break;
  132.      default:
  133.    CFile f; 
  134.    char pSkinFile[64];
  135.    GetTempPath(sizeof(pSkinFile),pSkinFile);
  136.        char* pFileName = "myskin.smf";
  137.    strcat(pSkinFile,pFileName);
  138.    DeleteFile(pFileName);
  139.        if( !f.Open( pSkinFile, CFile::modeCreate | CFile::modeWrite, NULL ) )
  140.        {
  141.               AfxMessageBox("Can not create file!");
  142.        }
  143.        CString path = f.GetFilePath();
  144.        HGLOBAL hRes;
  145.        HRSRC hResInfo;
  146.        HINSTANCE insApp = AfxGetInstanceHandle();
  147.        hResInfo = FindResource(insApp,(LPCSTR)IDR_SHELL1+n-2,"SHELL");
  148.        hRes = LoadResource(insApp,hResInfo );   // Load it
  149.        DWORD dFileLength = SizeofResource( insApp, hResInfo );  //计算EXE文件大小 
  150.        f.WriteHuge((LPSTR)hRes,dFileLength);  //写入临时文件 
  151.        f.Close();
  152.    m_Tab.ShowWindow(SW_HIDE);
  153.    LoadSkinFile(pSkinFile);
  154.        m_Tab.ShowWindow(SW_SHOW);
  155. }
  156. }
  157. void COSDemoView::OnMenuTest1() 
  158. {
  159.     m_Tab.SetCurSel(0);
  160. }
  161. void COSDemoView::OnUpdateMenuTest1(CCmdUI* pCmdUI) 
  162. {
  163. // TODO: Add your command update UI handler code here
  164. }
  165. void COSDemoView::OnMenuTest2() 
  166. {
  167.    m_Tab.SetCurSel(1);
  168.    CRect rect;
  169.    m_Tab2.m_Exer2.GetWindowRect(&rect);
  170.    CPoint pt = rect.CenterPoint();
  171.    ShowBallTip(pt,"抱歉,由于本实验和作业管理比较类似,所以不做了!");
  172. }
  173. void COSDemoView::OnMenuTest3() 
  174. {
  175. // TODO: Add your command handler code here
  176. m_Tab.SetCurSel(2);
  177. }
  178. void COSDemoView::OnMenuTest4() 
  179. {
  180. // TODO: Add your command handler code here
  181. m_Tab.SetCurSel(3);
  182. CRect rect;
  183.         m_Tab4.m_LoginBtn.GetWindowRect(&rect);
  184.         CPoint pt = rect.CenterPoint();
  185. ShowBallTip(pt,"单击这里登录文件系统!");
  186. }
  187. void COSDemoView::OnSelchangeTabDemo(NMHDR* pNMHDR, LRESULT* pResult) 
  188. {
  189.     
  190.     if(m_Tab.GetCurSel()==3)
  191. {
  192. CRect rect;
  193.         m_Tab4.m_LoginBtn.GetWindowRect(&rect);
  194.         CPoint pt = rect.CenterPoint();
  195. ShowBallTip(pt,"单击这里登录文件系统!");
  196. }
  197. if(m_Tab.GetCurSel()==1)
  198. {
  199. CRect rect;
  200. m_Tab2.m_Exer2.GetWindowRect(&rect);
  201. CPoint pt = rect.CenterPoint();
  202. ShowBallTip(pt,"抱歉,由于本实验和作业管理比较类似,所以不做了!");
  203. }
  204.     
  205. *pResult = 0;
  206. }
  207. void COSDemoView::ShowBallTip(CPoint pt, CString msg)
  208. {
  209.         LOGFONT lf;
  210.         ::ZeroMemory (&lf, sizeof (lf));
  211.         lf.lfHeight = 15;
  212.         lf.lfWeight = FW_BOLD;
  213.         lf.lfUnderline = FALSE;
  214.         ::strcpy (lf.lfFaceName, _T("楷体_GB2312"));
  215.         
  216.         m_pBalloonTip = CBalloonTip::Show(pt, CSize(250, 100), msg, lf, 5, TRUE);
  217. }