2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  MFC課程設(shè)計</b></p><p>  課題名稱:調(diào)整對話框背景顏色</p><p>  專業(yè)班級:1020562班</p><p><b>  學(xué)生學(xué)號:</b></p><p><b>  學(xué)生姓名: </b></p><

2、;p><b>  指導(dǎo)教師: </b></p><p>  提交時間:2011年12月10日</p><p><b>  目錄</b></p><p><b>  1.設(shè)計描述3</b></p><p><b>  1.1課題背景3</b><

3、;/p><p><b>  1.2功能描述3</b></p><p><b>  2.設(shè)計分析4</b></p><p><b>  2.1應(yīng)用的類4</b></p><p><b>  2.2成員函數(shù)4</b></p><p>

4、;  3.源代碼及圖形6</p><p><b>  4.設(shè)計總結(jié)17</b></p><p>  4.1個人心得17</p><p>  4.2參考文獻(xiàn)17</p><p><b>  1.設(shè)計描述</b></p><p><b>  1.1課題背景<

5、;/b></p><p>  本課題主要是在為了讓自己更加了解在MFC中框架類中的各種函數(shù)的應(yīng)用。本程序是在VC6.0中使用AppWizard創(chuàng)建基于對話框的應(yīng)用程序。</p><p><b>  1.2功能描述</b></p><p>  本程序能夠改變對話框的背景顏色。對話框中有滾動條和滑動塊,通過調(diào)節(jié)滾動條或滑動塊來改變對話框的背景

6、顏色。</p><p>  除此以外,該對話框可以最小化,最大化功能。點擊關(guān)閉按鈕時,會出現(xiàn)提示對話框,提示對話框中有“退出應(yīng)用程序”,“返回到托盤”,“不再提示”選擇按鈕供你選擇。另外托盤圖標(biāo)是閃動變換的,托盤圖標(biāo)還可以打開子菜單。</p><p><b>  最小化:</b></p><p><b>  最大化:</b>

7、;</p><p><b>  2.設(shè)計分析</b></p><p>  本程序用到了一些基于對話框的類,實現(xiàn)對話框的各種功能</p><p><b>  2.1應(yīng)用的類</b></p><p>  圖2.1 ClassView</p><p><b>  2.

8、2成員函數(shù)</b></p><p>  程序里的成員函數(shù)如下</p><p>  1、BOOL CWLHDlg::OnInitDialog()</p><p>  2、void CWLHDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) </p><p>

9、  3、HBRUSH CWLHDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) </p><p>  4、BOOL CWLHDlg::AddTray(HWND hWnd, LPSTR lpszTip)//添加圖標(biāo)到托盤</p><p>  5、BOOL CTestDlg::RemoveTray(HWND hwnd)//刪除托盤中的圖

10、標(biāo)</p><p>  6、BOOL CTestDlg::ModifyTray(HWND hwnd,UINT uID)//修改托盤中的圖標(biāo)</p><p>  7、void CWLHDlg::OnTimer(UINT nIDEvent) //更換圖標(biāo)</p><p>  8、void CTestDlg::OnTrayNotify(WPARAM wParam, LPA

11、RAM lParam)</p><p>  9、void CTestDlg::OnDestroy()//結(jié)束圖標(biāo)更換 </p><p>  10、void CTestDlg::OnOpen()//打開子菜單項 </p><p>  11、void CTestDlg::OnExit()//退出子菜單項</p><p>  12、void CWL

12、HDlg::OnAbout() //關(guān)于子菜單</p><p>  13、void CWLHDlg::OnClose() //關(guān)閉背景對話框</p><p>  14、void CWLHDlg::Inquiry()//詢問對話框</p><p>  各個類的成員函數(shù)和數(shù)據(jù)成員如圖2.2-1,圖2.2-2所示</p><p><b>

13、  圖2.2-1</b></p><p><b>  圖2.2-2</b></p><p><b>  3.源代碼及圖形</b></p><p>  BOOL CWLHDlg::OnInitDialog()</p><p><b>  {</b></p>

14、<p>  CDialog::OnInitDialog();</p><p>  // Add "About..." menu item to system menu.</p><p>  // IDM_ABOUTBOX must be in the system command range.</p><p>  ASSERT((I

15、DM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);</p><p>  ASSERT(IDM_ABOUTBOX < 0xF000);</p><p>  CMenu* pSysMenu = GetSystemMenu(FALSE);</p><p>  if (pSysMenu != NULL)</p><

16、;p><b>  {</b></p><p>  CString strAboutMenu;</p><p>  strAboutMenu.LoadString(IDS_ABOUTBOX);</p><p>  if (!strAboutMenu.IsEmpty())</p><p><b>  {<

17、;/b></p><p>  pSysMenu->AppendMenu(MF_SEPARATOR);</p><p>  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);</p><p><b>  }</b></p><p>&l

18、t;b>  }</b></p><p>  // Set the icon for this dialog. The framework does this automatically</p><p>  // when the application's main window is not a dialog</p><p>  Se

19、tIcon(m_hIcon, TRUE);// Set big icon</p><p>  SetIcon(m_hIcon, FALSE);// Set small icon</p><p>  // TODO: Add extra initialization here</p><p>  m_scrollRed.SetScrollRange(0, 2

20、55);</p><p>  m_sliderBlue.SetRange(0, 255);</p><p>  m_sliderGreen.SetRange(0, 255);</p><p>  m_nBlue = m_nGreen = m_nRedValue = 192;</p><p>  UpdateData( FALSE );<

21、/p><p>  m_scrollRed.SetScrollPos(m_nRedValue);</p><p>  SetWindowText("調(diào)整對話框背景顏色");</p><p>  return TRUE; // return TRUE unless you set the focus to a control</p>

22、<p><b>  }</b></p><p>  void CWLHDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) </p><p><b>  {</b></p><p>  // TODO: Add your message h

23、andler code here and/or call default</p><p>  int nID = pScrollBar->GetDlgCtrlID();// 獲取對話框中控件ID值</p><p>  if (nID == IDC_SCROLLBAR_RED){// 若是滾動條產(chǎn)生的水平滾動消息</p><p>  switch(n

24、SBCode){</p><p>  case SB_LINELEFT:m_nRedValue--;// 單擊滾動條左邊箭頭</p><p><b>  break;</b></p><p>  case SB_LINERIGHT:m_nRedValue++;// 單擊滾動條右邊箭頭</p><p><

25、b>  break;</b></p><p>  case SB_PAGELEFT:m_nRedValue -= 10;</p><p><b>  break;</b></p><p>  case SB_PAGERIGHT:m_nRedValue += 10;</p><p><b&g

26、t;  break;</b></p><p>  case SB_THUMBTRACK:m_nRedValue = nPos;</p><p><b>  break;</b></p><p><b>  }</b></p><p>  if (m_nRedValue<0) m

27、_nRedValue = 0;</p><p>  if (m_nRedValue>255) m_nRedValue = 255;</p><p>  m_scrollRed.SetScrollPos(m_nRedValue);</p><p><b>  }</b></p><p>  Invalidate();

28、// 使對話框無效,強(qiáng)迫系統(tǒng)重繪對話框</p><p>  CDialog::OnHScroll(nSBCode, nPos, pScrollBar);</p><p><b>  }</b></p><p>  HBRUSH CWLHDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

29、 </p><p><b>  {</b></p><p>  HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);</p><p>  // TODO: Change any attributes of the DC here</p><p>  // TODO

30、: Return a different brush if the default is not desired</p><p>  UpdateData(TRUE);</p><p>  COLORREF color = RGB(m_nRedValue, m_nGreen, m_nBlue);</p><p>  m_Brush.Detach();// 使

31、畫刷和對象分離</p><p>  m_Brush.CreateSolidBrush(color);// 創(chuàng)建顏色畫刷</p><p>  pDC->SetBkColor( color );// 設(shè)置背景顏色</p><p>  return (HBRUSH)m_Brush;// 返回畫刷句柄,以便系統(tǒng)使此畫刷繪制對話框</p>

32、<p>  return hbr;</p><p><b>  }</b></p><p>  以上代碼實現(xiàn)對話框背景顏色調(diào)整功能</p><p><b>  圖3-1</b></p><p><b>  //添加圖標(biāo)到托盤</b></p><p&

33、gt;  BOOL CWLHDlg::AddTray(HWND hWnd, LPSTR lpszTip)</p><p><b>  {</b></p><p>  NOTIFYICONDATA tnid; </p><p>  tnid.cbSize=sizeof(NOTIFYICONDATA); </p><p> 

34、 tnid.hWnd=hWnd; </p><p>  tnid.uFlags=NIF_MESSAGE | NIF_ICON | NIF_TIP; </p><p>  tnid.uCallbackMessage=WM_ICON_NOTIFY; </p><p>  tnid.hIcon=AfxGetApp()->LoadIcon(IDI_ICON1);<

35、;/p><p>  strcpy(tnid.szTip,lpszTip); </p><p>  return Shell_NotifyIcon(NIM_ADD, &tnid); </p><p><b>  }</b></p><p>  添加圖標(biāo)到托盤如下圖圖3-2</p><p><

36、;b>  圖3-1</b></p><p>  //刪除托盤中的圖標(biāo)</p><p>  BOOL CTestDlg::RemoveTray(HWND hwnd)//刪除托盤中的圖標(biāo)</p><p><b>  {</b></p><p>  NOTIFYICONDATA tnid; </p>

37、;<p>  tnid.cbSize=sizeof(NOTIFYICONDATA); </p><p>  tnid.hWnd=hwnd; </p><p>  return Shell_NotifyIcon(NIM_DELETE,&tnid);</p><p><b>  }</b></p><p&g

38、t;  //修改托盤中的圖標(biāo)</p><p>  BOOL CTestDlg::ModifyTray(HWND hwnd,UINT uID)//修改托盤中的圖標(biāo)</p><p><b>  {</b></p><p>  NOTIFYICONDATA tnid; </p><p>  tnid.cbSize=sizeof

39、(NOTIFYICONDATA); </p><p>  tnid.hWnd=hwnd; </p><p>  tnid.uFlags=NIF_ICON; </p><p>  tnid.hIcon=AfxGetApp()->LoadIcon(uID); </p><p>  return Shell_NotifyIcon(NIM_MO

40、DIFY, &tnid);</p><p><b>  }</b></p><p><b>  //更換圖標(biāo)</b></p><p>  void CWLHDlg::OnTimer(UINT nIDEvent) //更換圖標(biāo)</p><p><b>  {</b><

41、;/p><p>  // TODO: Add your message handler code here and/or call default</p><p>  staticUINT nIDs[]={IDI_ICON1,IDI_ICON2,IDI_ICON3,IDI_ICON4};</p><p>  static int nIndex=1;</p>

42、<p>  ModifyTray(m_hWnd,nIDs[nIndex]);</p><p>  nIndex=++nIndex%4;</p><p>  CDialog::OnTimer(nIDEvent);</p><p><b>  }</b></p><p><b>  //結(jié)束圖標(biāo)更換&l

43、t;/b></p><p>  void CTestDlg::OnDestroy()//結(jié)束圖標(biāo)更換 </p><p><b>  {</b></p><p>  CDialog::OnDestroy();</p><p>  // TODO: Add your message handler code here&

44、lt;/p><p>  KillTimer(1);</p><p>  RemoveTray(m_hWnd);</p><p><b>  }</b></p><p>  void CTestDlg::OnTrayNotify(WPARAM wParam, LPARAM lParam)</p><p>

45、;<b>  {</b></p><p>  if(WM_RBUTTONDOWN==lParam)</p><p><b>  {</b></p><p>  CMenu menu;</p><p>  menu.LoadMenu(IDR_MENU1);</p><p>  

46、CPoint point;</p><p>  GetCursorPos(&point);//得到鼠標(biāo)位置</p><p>  CMenu *popup=menu.GetSubMenu(0);</p><p>  popup->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point

47、.y, this);</p><p><b>  return;</b></p><p><b>  }</b></p><p>  if(WM_LBUTTONDOWN==lParam)</p><p><b>  {</b></p><p>  Sho

48、wWindow(SW_SHOWNORMAL); </p><p>  SetForegroundWindow();</p><p><b>  return;</b></p><p><b>  }</b></p><p><b>  }</b></p&g

49、t;<p><b>  圖3-3</b></p><p><b>  //打開子菜單項</b></p><p>  void CTestDlg::OnOpen()//打開子菜單項 </p><p><b>  {</b></p><p>  // TODO: Ad

50、d your command handler code here</p><p>  ShowWindow(SW_SHOWNORMAL); </p><p>  SetForegroundWindow();</p><p><b>  }</b></p><p><b>  //退出子菜單項</b&

51、gt;</p><p>  void CTestDlg::OnExit()//退出子菜單項</p><p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  PostQuitMessage(0);</p>

52、<p><b>  }</b></p><p>  以上代碼實現(xiàn)功能如下圖</p><p>  圖3-4 圖3-5</p><p><b>  //關(guān)于對話框</b></p><p>  void CWLHDlg::OnAbout() </p>&l

53、t;p><b>  {</b></p><p>  // TODO: Add your command handler code here</p><p>  MessageBox("WLH制作\n2011年12月","關(guān)于",MB_ICONEXCLAMATION |MB_OK);</p><p>

54、<b>  }</b></p><p><b>  //關(guān)閉背景對話框</b></p><p>  void CWLHDlg::OnClose() //關(guān)閉背景對話框</p><p><b>  {</b></p><p>  // TODO: Add your message

55、 handler code here and/or call default</p><p>  HKEY hKey;</p><p>  if(ERROR_SUCCESS==RegOpenKeyEx(HKEY_LOCAL_MACHINE,"wlh",0,KEY_READ,&hKey))</p><p><b>  {</

56、b></p><p>  if(1==nCheck)</p><p><b>  {</b></p><p>  if(0==nRadio)</p><p><b>  {</b></p><p>  PostQuitMessage(0);</p>&l

57、t;p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  AddTray(m_hWnd,"改變背景");</p><p>  ShowWindow(SW_HIDE);<

58、;/p><p>  SetTimer(1,500,NULL);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b><

59、/p><p>  Inquiry();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p>

60、<p>  Inquiry();</p><p><b>  }</b></p><p>  RegCloseKey(hKey);</p><p><b>  }</b></p><p><b>  //詢問對話框</b></p><p> 

61、 void CWLHDlg::Inquiry()//詢問對話框</p><p><b>  {</b></p><p>  CInquiry inq;</p><p>  inq.DoModal();//打開詢問對話框</p><p>  nRadio=inq.m_n;</p><p>  if(

62、inq.m_chk)//是否選擇不再提示選框</p><p>  nCheck=1;//標(biāo)志為1</p><p><b>  else</b></p><p>  nCheck=0;//標(biāo)志為0</p><p>  if(0==nRadio)//選擇直接退出</p><p><b> 

63、 {</b></p><p>  PostQuitMessage(0);</p><p><b>  }</b></p><p>  else//選擇返回托盤</p><p><b>  {</b></p><p>  AddTray(m_hWnd,"

64、;改變背景");</p><p>  ShowWindow(SW_HIDE);//隱藏主窗口</p><p>  SetTimer(1,500,NULL);</p><p><b>  }</b></p><p><b>  }</b></p><p>  所用功能

65、的實現(xiàn)如下圖</p><p><b>  運行結(jié)果:</b></p><p><b>  圖3-6</b></p><p><b>  最大化:</b></p><p><b>  圖3-7</b></p><p><b>

66、;  最小化:</b></p><p><b>  圖3-8</b></p><p><b>  點擊運行關(guān)閉按鈕:</b></p><p><b>  圖3-9</b></p><p><b>  圖3-10</b></p>&

67、lt;p><b>  托盤子菜單:</b></p><p><b>  圖3-11</b></p><p><b>  托盤圖標(biāo):</b></p><p><b>  圖3-12</b></p><p>  圖3-13(四種圖片更替變換)</p

68、><p><b>  關(guān)于程序:</b></p><p><b>  圖3-14</b></p><p><b>  4.設(shè)計總結(jié)</b></p><p><b>  4.1個人心得</b></p><p>  在課程設(shè)計的實踐中,我學(xué)

69、到很多的知識,積累了不少的經(jīng)驗。我深刻意識到自己在學(xué)習(xí)中的弱點,同時也找到了克服這些弱點的方法,就是要利用更多的時間去上機(jī)實驗,多編寫程序。要理論聯(lián)系實際</p><p><b>  4.2參考文獻(xiàn)</b></p><p>  1.《深入淺出MFC簡體第二版》</p><p>  2.嚴(yán)華峰. Visual C++課程設(shè)計案例精編. 北京:中國

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論