国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【win32】vs2010的窗體程序Helloworld

2019-11-11 04:20:06
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本來(lái),mfc都已經(jīng)是很落后的東西,現(xiàn)在寫窗體都用C#,提到vs的窗體大家都想到c#。雖然如此,但本來(lái)了解Windows窗體的編程機(jī)制,同時(shí)又本著vc6可以實(shí)現(xiàn)的東西,vs都可以實(shí)現(xiàn)而且更進(jìn)步的理念,同時(shí)市面上大部分介紹win32窗體C++編程的書籍都是以VC6為版本的,所以開倒車也要在VS中實(shí)現(xiàn)win32窗體程序的了。

具體這樣做:

1、打開VS2010,廢話,如下圖,創(chuàng)建一個(gè)win32窗體程序。

2、點(diǎn)下一步,直接默認(rèn)設(shè)置點(diǎn)完成,創(chuàng)建一個(gè)Windows應(yīng)用程序

3、可以直接編譯,運(yùn)行了,但是生成出來(lái)的東西并不能讓我們滿意,如下圖所示,有一個(gè)我們并不需要出現(xiàn)的菜單欄,我們還想在窗體中輸出一個(gè)Helloworld。

或許此刻,你覺得VC6沒有這么亂吧,或者認(rèn)為VC6和VS2010差別很大?按照部分書上所示,在創(chuàng)建工程選擇第3項(xiàng),編譯運(yùn)行一勞永逸?

但其實(shí)并不是,在VC6同樣如此的。而且你還可以發(fā)現(xiàn),其實(shí)VC6那些文件和這里VS2010文件也是差不多的。

實(shí)際上VS2010只是放了些兼容性文件上去而已。來(lái)來(lái)去去還是那一套,繪出一個(gè)窗體,然后在這個(gè)窗體有一個(gè)函數(shù)在不停地循環(huán),就是為了讀鼠標(biāo)或者鍵盤的響應(yīng)信息。然后這些信息統(tǒng)統(tǒng)扔到LRESULT CALLBACK WndPRoc這個(gè)消息回調(diào)函數(shù)里面,你要弄什么就在這個(gè)函數(shù)里面寫吧。

就是個(gè)框架,沒有什么技術(shù)含量,和你改java web什么的,改win32窗體獨(dú)有的程序框架里面的東西,在里面加你自己的東西就行了。

好,說(shuō)了這么多,到底怎么完成我們?nèi)サ舨藛螜诤洼敵鲆粋€(gè)Helloworld文件的夢(mèng)想呢?

4、直接對(duì)Win_Helloworld.cpp(文件名根據(jù)你第一步的工程名不同而不同)這個(gè)主cpp入手,進(jìn)行修改。

(1)去掉菜單欄,對(duì)ATOM MyRegisterClass(HINSTANCE hInstance)函數(shù),整個(gè)程序的第87行入手,如下圖修改,將其值換成NULL。

同時(shí)注釋或者刪去142-158行消息回調(diào)函數(shù)中關(guān)于菜單欄單機(jī)處理的case WM_COMMAND事件。

172-190行一大段關(guān)于“關(guān)于”對(duì)話框的函數(shù)。

(2)輸出Helloworld

接下我們需要對(duì)消息回調(diào)函數(shù)中的case WM_PAINT:這個(gè)所謂的“重繪事件”進(jìn)行入手,就是你每次移動(dòng)、最大化這個(gè)窗口,這個(gè)事件都會(huì)被觸發(fā)的,窗體會(huì)被重繪,人家vs2010也非常好心你就是應(yīng)該在這里開始你的win32窗體程序的旅程,將case WM_PAINT:修改成如下所示,其實(shí)就是加了SetTextColor和TextOut兩個(gè)函數(shù)而已:

case WM_PAINT:	hdc = BeginPaint(hWnd, &ps);	// TODO: 在此添加任意繪圖代碼...	SetTextColor(hdc,RGB(0,0,0));//黑色的畫筆	TextOut(hdc,100,100,L"Helloworld",strlen("Helloworld"));//在(100,100)這個(gè)文件,輸出Helloworld。	EndPaint(hWnd, &ps);	break;即:

你可以將這個(gè)hdc,理解成在這個(gè)窗體畫東西的畫筆。然后呢,各個(gè)函數(shù)基本都是名副其實(shí)了,值得提醒在TextOut函數(shù)中,不像VC6,在VS2010中,所有那些LPCTSTR,不能直接放個(gè)字符串上去,要在前面加個(gè)大寫L,強(qiáng)行轉(zhuǎn)化一下。將一個(gè)普通字符串轉(zhuǎn)化為 系統(tǒng)中的窗體字符(大概就是這個(gè)意思)。所以你就知道C++各種各樣的變量是多么蛋疼,php等無(wú)變量類型的設(shè)計(jì)是多么偉大。

寫到這里就寫完了,運(yùn)行結(jié)果如下圖所示:

最后,做個(gè)小終結(jié)吧。

寫C++的Win32窗體程序,別拿以前C語(yǔ)言那種,從0開始的思維往上面套。就是系統(tǒng)已經(jīng)給你一個(gè)框架,你按照他的要求在這個(gè)框架上面改。

起步的時(shí)候,并不需要對(duì)這個(gè)框架有多熟悉,先從這個(gè)框架的一些基本東西入手,實(shí)現(xiàn)一些最基本的功能。

程序猿出來(lái)混也基本上是如此,很少讓你拿一門語(yǔ)言從0開始的,基本上都是在框架中修修補(bǔ)補(bǔ),創(chuàng)造。

或者在了解Win32窗體程序的同時(shí),Win32最基本的WIN API同時(shí),能提高一下自己面對(duì)框架的能力。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 长乐市| 东城区| 龙口市| 玛沁县| 封开县| 会同县| 台中县| 吴忠市| 呼伦贝尔市| 静安区| 丰县| 乡城县| 海口市| 鞍山市| 邵阳县| 大理市| 柳江县| 嘉鱼县| 湟源县| 墨脱县| 五寨县| 胶南市| 阿拉尔市| 台北市| 敦化市| 辉县市| 芜湖市| 金川县| 临颍县| 民权县| 布尔津县| 邢台市| 卓尼县| 临湘市| 凤凰县| 淄博市| 宁安市| 乌兰浩特市| 额尔古纳市| 萍乡市| 增城市|