亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        VC++中的對(duì)話框類重建和變量初始化

        2008-12-31 00:00:00崔榮華李元宗
        電腦知識(shí)與技術(shù) 2008年19期

        摘要:該文主要就VC++編程過(guò)程中對(duì)話框相關(guān)的兩個(gè)問(wèn)題做了比較詳細(xì)的闡述,并提供了相應(yīng)的解決方法:一是對(duì)話框類的刪除和重建問(wèn)題;二是對(duì)話框類的變量初始化問(wèn)題。

        關(guān)鍵詞:VC++;對(duì)話框類;類更名;初始化

        中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)19-30054-02

        The Rebuilding and Initialization of the Variable of Dialog Class in VC++

        CUI Rong-hua1,2, LI Yuan-zong1

        (1. Taiyuan University of Technology, Taiyuan 030024, China; 2. Nantong University, NanTong 226019, China)

        Abstract: The text talk about two problems in VC++ programming process in a detail way, and provided the corresponding solution. The first problem is the delete and rebuild of the dialog class; The second problem is the initialization of the variable in dialog class.

        Key words: VC++; Dialog Class; Class Rename; Initialization

        1 引言

        VC++是Microsoft推出編程軟件,它是集編輯、編譯、連接、調(diào)試、運(yùn)行于一身的目前綜合性最高最強(qiáng)大有力的高端軟件開發(fā)工具。VC++開發(fā)環(huán)境繼承了C及C++語(yǔ)言的高效率、靈活的指針應(yīng)用、嚴(yán)謹(jǐn)?shù)慕Y(jié)構(gòu)及數(shù)據(jù)封裝、所編輯的軟件運(yùn)行速度快等優(yōu)點(diǎn),又提供了方便實(shí)用的交互式可視化編程環(huán)境。熟練的掌握VC++能夠比較容易的開發(fā)出界面友好、操作簡(jiǎn)單的使用軟件。目前它的應(yīng)用極為廣泛。

        提供了強(qiáng)大編程功能的VC++,它同時(shí)也對(duì)編程人員有著較高的要求。它要求編程人員擁有C和C++語(yǔ)言的基礎(chǔ)、熟練掌握VC++所提供的常用的一些類的基本知識(shí)、熟悉VC++基本的編程基本思想、熟悉VC++的源代碼結(jié)構(gòu)等等。由于VC++的知識(shí)面廣,體系龐大。所以對(duì)VC++的使用者來(lái)說(shuō)經(jīng)常會(huì)遇到一些問(wèn)題。下面討論的是對(duì)話框類重建和變量初始化問(wèn)題。

        2 對(duì)話框類的刪除重建

        在使用VC++進(jìn)行編程的過(guò)程中,為了將一個(gè)功能獨(dú)立出來(lái)單獨(dú)處理或使用一個(gè)新的對(duì)話框,需要建立一個(gè)新的類。建立一個(gè)類非常方便,如果想將已有的類刪除,則就不容易了。

        先在VC++中的編程環(huán)境中新建一個(gè)基于對(duì)話框的程序TestProgram。在Workspace的ResourceView中的Dialog文件夾上右鍵選擇插入Dialog命令,ID為IDD_TRYCLASSDLG,建立一個(gè)跟新對(duì)話框?qū)?yīng)的類CTryClassDlg。

        在建立類CtryClassDlg后,由于某些原因,不想用該名稱作為該類的類名,想在已經(jīng)建立好的程序中對(duì)該類更名,VC++中就沒有提供任何的為類更名的直接途徑。這時(shí)候的唯一方法就是將已經(jīng)建立好的類刪除,然后從新建立。

        在VC++的編程界面中,Workspace的ClassView中列出了程序中的所有類,而在ClassView中并沒有提供類的任何刪除命令,包括右鍵菜單(如圖1),而且Delete鍵也不起作用。

        圖1 圖2

        只能先在Workspace的FileView中找到該類所對(duì)應(yīng)的頭文件(*.h)和源文件(*.cpp),選中后按Delete鍵刪除(注意:在FileView的頭文件和源文件刪除中,右鍵快捷菜單也不提供刪除命令)。這樣在的編程界面上已經(jīng)見不到已刪除的類留下的任何信息。但問(wèn)題并沒有解決。

        當(dāng)在已經(jīng)建立的對(duì)話框上想從新建立一個(gè)類的時(shí)候會(huì)發(fā)現(xiàn)VC++并沒有反映。而且在建立的工程文件夾中TryClassDlg.h,TryClassDlg.cpp兩個(gè)文件還在,如果將這兩個(gè)文件刪除(如圖3),則在對(duì)話框(IDD_TRYCLASSDLG)上建立對(duì)應(yīng)的類時(shí)會(huì)出現(xiàn)如圖4的提示——CtryClassDlg類所對(duì)應(yīng)的頭文件TryClassDlg.h,源文件TryClassDlg.cpp不存在或文件名非法。這說(shuō)明在工程的中,VC++還沒有真正的將CtryClassDlg類的關(guān)聯(lián)信息刪去。這個(gè)信息其實(shí)存在于工程文件夾的TestProgram.clw文件中。只要再將TestProgram.clw文件刪去,然后在對(duì)話框的編輯頁(yè)面上右鍵建立類向?qū)缓蟀凑仗崾菊兆?,即可進(jìn)行對(duì)話框?qū)?yīng)類的從建。同樣也就解決了類的更名問(wèn)題。

        圖3

        圖4

        3 對(duì)話框類的變量初始化

        一般來(lái)說(shuō)或者一些教程上都要求對(duì)話框變量的初始化都最好放在消息WM_INITDIALOG對(duì)應(yīng)的函數(shù)OnInitDialog()中進(jìn)行。而且在對(duì)消息WM_INITDIALOG添加函數(shù)以后選擇Edit Code時(shí)光標(biāo)自動(dòng)停留在CDialog::OnInitDialog()函數(shù)下面的一行“//TODO:Add extra initialization here”這段字符上,如圖5所示。

        圖5

        這對(duì)于對(duì)話框之間沒有什么數(shù)據(jù)的直接傳遞,或者不講求數(shù)據(jù)傳遞的實(shí)時(shí)性程序來(lái)說(shuō),可以這么做。但如果有對(duì)話框進(jìn)行的直接數(shù)據(jù)傳遞,或者要求對(duì)話框中(如編輯框)的數(shù)據(jù)的顯示值真實(shí)的反映其內(nèi)存中的值的時(shí)候,這樣做就有問(wèn)題了。

        在工程TestProgram中的對(duì)話框(IDD_TRYCLASSDLG)中添加一編輯框(IDC_EDITDATASHOW)用來(lái)顯示整形變量m_EditDataShow的值(對(duì)話框(IDD_TRYCLASSDLG)所對(duì)應(yīng)的類仍然使用CtryClassDlg)。直接用類向?qū)?duì)編輯框(IDC_EDITDATASHOW)定義變量,那VC++自動(dòng)將其初始化放在對(duì)話框類的構(gòu)造函數(shù)CtryClassDlg()中進(jìn)行。不妨先將該初始化注釋掉。然后在OnInitDialog()所規(guī)定的地方對(duì)其進(jìn)行初始化。OnInitDialog()函數(shù)內(nèi)容如下:

        BOOL CTryClassDlg::OnInitDialog()

        {

        CDialog::OnInitDialog();

        m_EditDataShow=0;

        return TRUE;//return TRUE unless you set the focus to a control

        // EXCEPTION: OCX Property Pages should return FALSE

        }

        這時(shí)對(duì)話框的中編輯框(IDC_EDITDATASHOW)中顯示的內(nèi)容并非為零。而是另外一個(gè)隨機(jī)的跟沒有初始化一樣的數(shù)值。然而,內(nèi)存中m_EditDataShow的值確實(shí)為零。

        如果在m_EditDataShow=0;代碼下面加上UpdateData(1)函數(shù),則從新運(yùn)行后的程序編輯框(IDC_EDITDATASHOW)中顯示的內(nèi)容為零。另外,也可以把m_EditDataShow=0;直接放在CDialog::OnInitDialog()代碼上面。

        BOOL CTryClassDlg::OnInitDialog()

        {

        m_EditDataShow=0;

        CDialog::OnInitDialog();

        return TRUE;// return TRUE unless you set the focus to a control

        // EXCEPTION: OCX Property Pages should return FALSE

        }

        運(yùn)行程序,編輯框(IDC_EDITDATASHOW)中的內(nèi)容也為零。

        如果在定義對(duì)話框(IDD_TRYCLASSDLG)類CTryClassDlg對(duì)象cTryClassDlg的時(shí)候給變量m_EditDataShow賦值:

        cTryClassDlg cTryClassDlg;

        cTryClassDlg.m_EditDataShow=9999;

        cTryClassDlg.DoModal();

        那這個(gè)時(shí)候?qū)_EditDataShow變量的初始化位置的不同,就會(huì)直接影響進(jìn)入該對(duì)話框后所見的m_EditDataShow的值和內(nèi)存中的值。

        1) 如果將m_EditDataShow的初始化放在WM_INITDIALOG對(duì)應(yīng)的函數(shù)OnInitDialog()中,不管是在CDialog::OnInitDialog()函數(shù)的前面還是后面,在進(jìn)入對(duì)話框(IDD_TRYCLASSDLG)的時(shí)候,m_EditDataShow內(nèi)存中和顯示的值為0,而不是9999。

        2) 如果將m_EditDataShow的初始化放在類CtryClassDlg的構(gòu)造函數(shù)CTryClassDlg::CtryClassDlg()中。

        CTryClassDlg::CTryClassDlg(CWnd* pParent /*=NULL*/) : CDialog(CTryClassDlg::IDD, pParent)

        {

        //{{AFX_DATA_INIT(CTryClassDlg)

        m_EditDataShow = 0;

        //}}AFX_DATA_INIT

        }

        那進(jìn)入對(duì)話框(IDD_TRYCLASSDLG)時(shí)的m_EditDataShow值才正常,為需要的值9999。

        所以,在對(duì)類對(duì)象初始化的時(shí)候,最好是在類的構(gòu)造函數(shù)中。如果在沒有外部數(shù)據(jù)輸入的時(shí)候也可以在OnInitDialog()函數(shù)中初始化。

        4 結(jié)束語(yǔ)

        本文談及VC++編程中兩個(gè)問(wèn)題,一對(duì)話框類的重建問(wèn)題;一為變量初始化問(wèn)題。本文通過(guò)具體例程來(lái)說(shuō)明問(wèn)題的解決方法。在對(duì)話框類的重建問(wèn)題上注重?cái)⑹鼋鉀Q問(wèn)題的方法和步驟;在變量初始化的問(wèn)題上注重分析不同變量初始化方法所獲得的不同程序結(jié)果。

        參考文獻(xiàn):

        [1] 范輝,等. Visual C++6.0 程序設(shè)計(jì)簡(jiǎn)明教程[M]. 北京:高等教育出版社,2001.

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文

        亚洲一区二区女搞男| 人妻中文字幕不卡精品 | 亚洲人成无码网站久久99热国产| 少妇寂寞难耐被黑人中出| 无码人妻专区免费视频| 亚洲天堂av中文字幕| 偷拍一区二区视频播放器| 日日摸天天摸97狠狠婷婷| 成人亚洲性情网站www在线观看| 在线精品国产一区二区| 亚洲精品美女久久久久网站| 日本高级黄色一区二区三区| 色婷婷色丁香久久婷婷| 色一情一区二区三区四区| 东方aⅴ免费观看久久av| 高清国产美女一级a毛片在线| 亚洲无av码一区二区三区| 亚洲gay片在线gv网站| 无遮无挡爽爽免费视频| 国产精品国产三级国产av创 | 国产一区二区中文字幕在线观看| 色欲欲www成人网站| 午夜福利电影| 青榴社区国产精品| 日本午夜精品一区二区三区| 四川发廊丰满老熟妇| 日本大尺度吃奶呻吟视频| 99久久综合狠狠综合久久一区| 色噜噜亚洲精品中文字幕| 日韩av高清在线观看| 免费现黄频在线观看国产| 91久久精品国产性色tv| 中文字幕乱码亚洲无限码| 亚洲精品92内射| 国产精品搭讪系列在线观看| 老熟女一区二区免费| 不卡视频在线观看网站| 亚洲 欧美 综合 在线 精品| 少妇饥渴xxhd麻豆xxhd骆驼| 高潮社区51视频在线观看| 亚洲中文av中文字幕艳妇|