版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- mfc 設(shè)置對話框背景圖片
- mfc對話框打印預(yù)覽實現(xiàn)
- mfc中設(shè)置對話框顏色、添加背景圖片、添加音樂的方法
- java課程設(shè)計報告--利用java設(shè)計簡單聊天對話框
- 對話框初步和公用對話框的使用
- vb編程之對話框設(shè)計1
- 對話框及其控件的使用
- vcmfc對話框和常用教程
- vcmfc對話框和常用教程
- 對話框程序界面設(shè)計--計算器
- orcadcapture對話框中英對照表
- orcadlayout對話框中英對照表
- 第01課使用creo parametric窗口和對話框
- vba中的對話框和自定義窗體
- 修改對話框為bcg工程、手動添加控件
- mfc課程設(shè)計實驗報告
- mfc計算器課程設(shè)計報告
- 基于linuxqt4下自定義對話框的設(shè)計與實現(xiàn)
- mfc程序設(shè)計課程設(shè)計---考勤系統(tǒng)
- mfc課程設(shè)計---綜合調(diào)色板
評論
0/150
提交評論