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

首頁 > 學院 > 開發設計 > 正文

【win32】vs2010的窗體程序Helloworld

2019-11-11 04:21:21
字體:
來源:轉載
供稿:網友

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

具體這樣做:

1、打開VS2010,廢話,如下圖,創建一個win32窗體程序。

2、點下一步,直接默認設置點完成,創建一個Windows應用程序

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

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

但其實并不是,在VC6同樣如此的。而且你還可以發現,其實VC6那些文件和這里VS2010文件也是差不多的。

實際上VS2010只是放了些兼容性文件上去而已。來來去去還是那一套,繪出一個窗體,然后在這個窗體有一個函數在不停地循環,就是為了讀鼠標或者鍵盤的響應信息。然后這些信息統統扔到LRESULT CALLBACK WndPRoc這個消息回調函數里面,你要弄什么就在這個函數里面寫吧。

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

好,說了這么多,到底怎么完成我們去掉菜單欄和輸出一個Helloworld文件的夢想呢?

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

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

同時注釋或者刪去142-158行消息回調函數中關于菜單欄單機處理的case WM_COMMAND事件。

172-190行一大段關于“關于”對話框的函數。

(2)輸出Helloworld

接下我們需要對消息回調函數中的case WM_PAINT:這個所謂的“重繪事件”進行入手,就是你每次移動、最大化這個窗口,這個事件都會被觸發的,窗體會被重繪,人家vs2010也非常好心你就是應該在這里開始你的win32窗體程序的旅程,將case WM_PAINT:修改成如下所示,其實就是加了SetTextColor和TextOut兩個函數而已:

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

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

寫到這里就寫完了,運行結果如下圖所示:

最后,做個小終結吧。

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

起步的時候,并不需要對這個框架有多熟悉,先從這個框架的一些基本東西入手,實現一些最基本的功能。

程序猿出來混也基本上是如此,很少讓你拿一門語言從0開始的,基本上都是在框架中修修補補,創造。

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高碑店市| 大名县| 五莲县| 丹棱县| 陈巴尔虎旗| 孙吴县| 双鸭山市| 正蓝旗| 神农架林区| 凌源市| 通化县| 营山县| 云浮市| 思茅市| 若羌县| 广西| 福鼎市| 喀喇| 平昌县| 红安县| 利津县| 荆州市| 商河县| 紫金县| 化隆| 辛集市| 石门县| 温州市| 遂平县| 澄江县| 马关县| 湛江市| 江安县| 淮南市| 许昌县| 钟祥市| 襄城县| 吉隆县| 大石桥市| 桐庐县| 泗水县|