青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 16,  comments - 81,  trackbacks - 0
        因為筆者是以前是做C#的,對Winform情有獨鐘,最近想轉(zhuǎn)C++,想把以前的一些Delphi轉(zhuǎn)成c++,MFC我不熟而且用起來相當(dāng)煩效果又丑,GTK圖形庫用起來太麻煩,琢磨著研究一下WInform前臺,C++做后臺的方法,谷歌了一下,沒看到什么中國資料,我草,我以前看過的啊,找來找去,找到一篇英文的,寫得太糾結(jié),我結(jié)合自己使用的經(jīng)驗,重新整理一下,言簡意賅,簡明易懂。謹(jǐn)供新人參考,老鳥勿拍。
      
  1. 首先打開你的VS2005
  2. 依次點擊菜單欄的文件-->新建-->項目
  3. 在左邊的語言列表選里,選擇C++分支下的CLR,然后在右邊單擊“CLR 空項目”
  4. 在名稱框里輸入Exercise2:
  5. 點擊“OK”,創(chuàng)建項目成功。
  6. 好了,這只是創(chuàng)建了好了一個托管C++項目,要使用WINFORM,我們要引入相關(guān)的.NET組件。
  7. 在vs主界面上依次點擊菜單欄的項目-->"引用";
  8. 在彈出的子窗口中選擇添加新引用;
  9. 在.NET標(biāo)簽頁下選擇System,點確定,再點擊添加新應(yīng)用,在.NET標(biāo)簽頁下選擇System.Window.Forms,然后確定,如圖
  10. 都完成后,應(yīng)該像這樣,然后點擊確定
  11. 創(chuàng)建一個新的類,點擊VS主界面菜單欄的項目-->添加類;
  12. 在彈出的子窗體右邊選擇C++類,點確定,會出現(xiàn)添加類向?qū)В陬惷休斎隒Exercise,基類中填Form
  13. 然后我們來到自動生成的頭文件代碼中,添加System和Form的引用,修改后的文件應(yīng)該如下
  14.  1
     2#pragma once
     3
     4using namespace System;
     5using namespace System::Windows::Forms;
     6
     7public ref class CExercise : public Form
     8{
     9public:
    10    CExercise(void);
    11}
    ;

    然后我們要創(chuàng)建一個主程序來調(diào)用這個類。這個大家應(yīng)該都比我熟的,右擊源文件文件夾,點擊添加-->新建項,選擇CPP文件,代碼如下:
  15.  1
     2
     3#include <windows.h>
     4#include "Exercise.h"
     5
     6int APIENTRY WinMain(HINSTANCE hInstance,
     7             HINSTANCE hPrevInstance,
     8             LPSTR lpCmdLine,
     9             int nCmdShow)
    10{
    11    Application::Run(gcnew CExercise());
    12
    13    return 0;
    14}

    含義我不多說了,把那個Cexercise換成你自己別的名字的類就可以運行那個類了,當(dāng)然了,要注意包含頭文件。點擊運行看看,一個白白的窗體,對嗎,好的,革命成功邁出了堅實的一步。
  16. 下面我們來試著添加一個button按鈕,修改Exercise.cpp的代碼如下
  17. 1
    2#include "Exercise.h"
    3
    4CExercise::CExercise(void)
    5{
    6    System::Windows::Forms::Button^  button1=gcnew Button;//創(chuàng)建按鈕
    7    this->Controls->Add(button1);//把按鈕附加到我們的窗體上
    8}

    9

    在運行看看,應(yīng)該像這樣
  18. 然后如果你還想繼續(xù)給這個按鈕添加文字設(shè)置尺寸什么的,你可以通過像這樣的代碼,具體我不說多少,因為選擇Winform就是看中快速的控件拖拉功能,都是手寫我還不如用GTK
  19. this->button1->Name = L"button1";//設(shè)置按鈕文字
    this->button1->Size = System::Drawing::Size(7523);//設(shè)置按鈕尺寸

  20. 好了,下面重點來了,如何像C#一樣自由地拖拉控件改屬性呢,我們右擊項目,選擇添加-->新建項。
  21. 在彈出的子窗體右邊選擇Windows窗體,輸入一個名字,比如“HelloWorld”,點擊確定
  22. 然后我們就欣喜的發(fā)現(xiàn),哇,又回到Winform拖拉控件的時代啦,是的,沒錯,而且我們可以以C++寫后臺。沒用過c#的朋友請在界面上找找工具箱,實在沒找到請依次點擊主窗體上菜單欄的視圖-->工具箱,然后從工具箱里找到一個button控件拖動到主窗體上。
  23. 之后雙擊這個button,會自動添加一個button的單擊事件,我們希望單擊的時候彈出一個“我是傻逼”的消息框,代碼如下:
  24. 1    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    2                 //MessageBox.Show(this,"wocao");//C#格式的調(diào)用方法是不行的
    3                 MessageBox::Show(this,"我是傻逼");//這才是正確的
    4         }

    5    };
    6}

  25. 第一個參數(shù)是父窗體,第二個參數(shù)是消息框的內(nèi)容。細心的同學(xué)發(fā)現(xiàn)了,這里和C#不太一樣,是的,如果你按C#的寫法:Messsage.Show(...),這樣程序是沒法通過編譯的,畢竟是兩種語言嘛。
  26. 好了,我們回到主程序入口那里,修改Exercise()為HelloWorld(),運行看看,出錯了!!沒錯,你還得添加頭文件,添加引用,真是麻煩啊,沒辦法,這兒還沒有在C#下的引用添加提示,不知道Clipse下的Cdt有沒有這個功能,最終代碼如下
     1#include <windows.h>
     2#include "Hello World.h"
     4using namespace WInformCpp;
     5int APIENTRY WinMain(HINSTANCE hInstance,
     6                     HINSTANCE hPrevInstance,
     7                     LPSTR lpCmdLine,
     8                     int nCmdShow)
     9{
    10    Application::Run(gcnew HelloWorld());
    11
    12    return 0;
    13}

    好了,運行一下看看。像這樣,那就對了,再深入地使用就不是本貼討論的范疇了,在C++上,各位都是我的前輩
posted on 2010-12-16 22:23 叫我老王吧 閱讀(38875) 評論(27)  編輯 收藏 引用 所屬分類: C++

FeedBack:
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 10:26 | waiting4you
google一下"C++/CLI,WinForm",就能找到不少關(guān)于“C++與WinForm”的文章了。
樓主的這篇文件卻是我見過的最簡潔,最容易上手的一篇,支持!尤其是彈出信息很給力!!!  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 15:17 | crossgate
剛在vs 2010里,用非托管C++項目,也成功實現(xiàn)了上述功能。
  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 15:58 | Skill
雖然那個對話框上彈出的字不登大雅之堂,但文章還是蠻基礎(chǔ)的,謝謝了  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 16:49 | 叫我老王吧
謝謝您的支持@waiting4you
  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 16:49 | 叫我老王吧
@crossgate
求細節(jié)
  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 16:50 | 叫我老王吧
@Skill
您的支持是我最大的動力,彈出信息神馬的是個人風(fēng)格,沒法改  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 19:20 | right
C++/cli這東西沒多少人用的,新語法和新關(guān)鍵字實在太令人反胃了。  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-17 19:36 | 叫我老王吧
@right
正因為用的人少,文檔少,所以才要寫出來,哪怕只能幫到一兩個人也是好的,學(xué)冷門東西時的那個孤獨無助感我太難忘了  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-18 11:17 | crossgate
@叫我老王吧
項目可以不是clr項目,比如win32 空項目就可以。也就是非托管的VC項目。
然后在項目屬性的general里,"Common Language Runtime Support"里選中“Common Language Runtime Support(/clr)”。這樣就可以繼續(xù)貼子里的操作,引用.net庫了。后續(xù)一樣。如果想用到.net庫的winform,還是得聲明托管指針,也就是必須用^而不是*來表示指針。相當(dāng)于混合編程,主體是C++,搭配C++.net代碼來做界面。  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-18 14:33 | 唐焱
其實MFC也是這個效果,你沒有發(fā)現(xiàn)這個按鈕都很丑么,win7上的按鈕可不是這樣的!  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-19 23:26 | 未注冊
我也是C#轉(zhuǎn)C++,用C++開發(fā)桌面窗口程序就是為了丟開那沉重的framework。
你這個效果MFC做出來的是一樣的。  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-19 23:37 | 叫我老王吧
@唐焱@未注冊
首先感謝你們能花時間看完我這篇爛帖
按鈕樣式你可以直接在屬性里設(shè)定背景圖片,換到MFC這又得做刷子了吧。.NET的強大并非是他默認(rèn)的樣式有多好看,否則DirectUI也不會賣那么貴,而是他的方便快捷,多種多樣個性化的控件而不是MFC數(shù)來數(shù)去還不到VCL的一半,說句不正經(jīng)的話,至少他不用給窗體換個背景色還要花好幾行代碼做刷子。
最好,即使你們再怎么討厭.NET,喜歡MFC,總有一些VCL或者GTK過來的人不更習(xí)慣控件拖拉而不是把菜單和用戶區(qū)分開做不是嗎?每個人都有自己選擇的自由  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-19 23:39 | 叫我老王吧
@crossgate
你把項目屬性里德CLR托管選上了,他不就是已經(jīng)變成了CLR項目了。  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-20 13:54 | ABC
為什么不考慮使用QT呢?  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2010-12-20 13:57 | 叫我老王吧
@ABC
有了GTK就不考慮QT了  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2011-02-23 00:14 | fei
為什么不直接在VC++里新建windows form 的工程呢.... 我以為是講界面調(diào)用clr的程序..  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2011-02-23 00:20 | 叫我老王吧
@fei
哎呀,純屬是我不知道有這個功能,我無知了  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2012-11-17 15:05 | 村雨Hectic
http://www.t-hart.org/vs2012/
這個補丁可以讓vs2012增加vs2008那樣可以直接創(chuàng)建windows form工程  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2013-09-19 11:07 | fq
# re: c++用WinForm做界面的實現(xiàn)
2013-12-23 16:00 | lw
項目屬性-》配置屬性-》連接器-》系統(tǒng)-》-》子系統(tǒng)(窗口:(subsystem:windows))。
項目屬性-》配置屬性-》連接器-》系統(tǒng)-》-》高級 (入口:main)  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)[未登錄]
2014-05-05 15:55 | cl
這個挺簡單明了的,就是第33點里面using namespace WInformCpp;
中的WinformCpp是哪里來的呢?  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2014-07-14 11:38 | AlvenBlack
第33點里面using namespace WInformCpp;
中的WinformCpp報錯a namespace with this name does not exist?  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)[未登錄]
2014-07-17 13:28 | 菜鳥
樓主寫的很實用,也很詳細,只是有一點點沒有說,在地33點中的WInformCpp是HelloWord中的命名空間,一般默認(rèn)生成,我剛開始就沒找到,對菜鳥來說還真的不好找啊  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2014-12-03 22:11 | hooknn
非常感謝@fei
  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2015-04-12 21:35 |
我按你的步驟 怎么操作不成功呢  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2015-05-24 10:14 | wenluderen
多謝博主的講解 , 我在VS2012 測試了

結(jié)果不是很好 報錯。


1> Exercise.cpp
1>e:\exercise2\exercise2\Exercise.h(9): error C3624: “System::ComponentModel::Component”: 使用此類型需要引用 程序集“System”
1> 在導(dǎo)入類型“System::Windows::Forms::Control ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::ScrollableControl ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::ContainerControl ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::Form ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1>Exercise.cpp(5): fatal error C1903: 無法從以前的錯誤中恢復(fù);正在停止編譯
1> MainGsz.cpp
1>e:\exercise2\exercise2\Exercise.h(9): error C3624: “System::ComponentModel::Component”: 使用此類型需要引用 程序集“System”
1> 在導(dǎo)入類型“System::Windows::Forms::Control ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::ScrollableControl ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::ContainerControl ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 在導(dǎo)入類型“System::Windows::Forms::Form ”(從程序集“System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中導(dǎo)入)時發(fā)生此診斷。
1> 正在生成代碼...
========== 全部重新生成: 成功 0 個,失敗 1 個,跳過 0 個 ==========
  回復(fù)  更多評論
  
# re: c++用WinForm做界面的實現(xiàn)
2015-12-07 10:32 | Taoism
@wenluderen
項目屬性, 添加新引用"System", 和文章第11步一樣  回復(fù)  更多評論
  

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2014年12月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

常用鏈接

留言簿(4)

隨筆分類

隨筆檔案

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久一区二区三区四区| 国产一在线精品一区在线观看| 免费成人av在线| 一区二区三区日韩精品视频| 激情一区二区| 国产精品久在线观看| 欧美福利一区二区三区| 欧美在线网站| 欧美在线观看视频一区二区三区 | 欧美国产一区二区在线观看 | 久久综合久久综合久久综合| 亚洲欧美日韩精品久久| 亚洲尤物在线| 午夜欧美理论片| 亚洲曰本av电影| 中日韩美女免费视频网站在线观看| 亚洲黄色精品| 欧美成人午夜剧场免费观看| 久久久久中文| 午夜精品在线视频| 欧美一区二区精品在线| 香蕉久久夜色精品| 久久久久国产精品厨房| 快射av在线播放一区| 欧美xxxx在线观看| 亚洲精品久久久久中文字幕欢迎你| 亚洲激情国产| 欧美福利网址| 亚洲精品免费网站| 亚洲一级黄色片| 久久精品亚洲一区二区三区浴池 | 亚洲电影免费在线| 国内一区二区三区在线视频| 99精品国产在热久久婷婷| 亚洲国产天堂网精品网站| 136国产福利精品导航网址| 精品福利av| 一区二区在线观看视频在线观看| 在线观看日韩精品| 一本色道久久综合亚洲二区三区| 亚洲四色影视在线观看| 亚洲精品日韩一| 亚洲一区二区精品视频| 久久久99爱| 亚洲精品视频免费| 亚洲综合电影| 欧美aⅴ99久久黑人专区| 欧美视频中文在线看| 黄色成人av网| 在线欧美日韩| 亚洲欧美电影在线观看| 免费成人av在线| 亚洲在线国产日韩欧美| 欧美99在线视频观看| 国产欧美一区二区三区在线老狼 | 欧美激情综合五月色丁香小说| 欧美连裤袜在线视频| 国产亚洲综合性久久久影院| 亚洲国产另类精品专区| 欧美一区二区视频网站| 欧美在线二区| 日韩视频国产视频| 欧美日韩www| 中文无字幕一区二区三区| 亚洲欧洲另类国产综合| 免费欧美在线| 99av国产精品欲麻豆| 最新热久久免费视频| 欧美女激情福利| 一区二区三区久久| 中日韩在线视频| 国产欧美日韩亚州综合| 久久久久久久波多野高潮日日| 欧美一区在线直播| 亚洲缚视频在线观看| 最新精品在线| 国产精品久久夜| 久久久久久网站| 欧美国产免费| 亚洲欧美激情诱惑| 欧美有码视频| 亚洲精品一二三| 在线视频中文亚洲| 韩日精品在线| 亚洲精品系列| 国产在线欧美日韩| 亚洲激情第一区| 国产乱码精品一区二区三区忘忧草 | 亚洲裸体视频| 日韩亚洲精品电影| 国产日韩成人精品| 欧美69视频| 国产精品久久久久国产精品日日| 欧美一区二区三区在线看| 久久久久久亚洲精品不卡4k岛国| 亚洲精品久久久久中文字幕欢迎你| 一本色道久久综合亚洲精品婷婷| 国产精品试看| 亚洲福利视频一区二区| 国产精品色网| 亚洲激情啪啪| 国产欧美欧洲在线观看| 亚洲第一成人在线| 国产欧美一区二区三区久久人妖| 亚洲福利在线看| 国产日韩精品视频一区二区三区| 欧美国产国产综合| 国产婷婷色一区二区三区在线| 欧美激情一区二区在线| 国产网站欧美日韩免费精品在线观看| 亚洲大胆人体视频| 国产三级精品三级| 亚洲香蕉网站| 亚洲一级影院| 欧美日韩国产精品专区| 久久视频这里只有精品| 国产精品毛片| 中文国产一区| 亚洲午夜免费视频| 欧美激情一区二区久久久| 免费在线观看精品| 韩国精品在线观看| 久久成人免费网| 久久国内精品视频| 国产精品一区2区| 亚洲一区欧美一区| 午夜视频一区在线观看| 国产精品高潮呻吟| 在线视频精品一| 亚洲一区在线观看视频| 欧美日韩精品中文字幕| 亚洲破处大片| 亚洲视频成人| 欧美女同在线视频| 99成人在线| 午夜精品婷婷| 国产一区二区三区高清在线观看| 一区二区三区国产在线| 亚洲欧美日韩一区二区三区在线观看| 欧美日本网站| 一区二区三区视频观看| 亚洲欧美成人| 国产一区二区日韩精品欧美精品| 亚洲午夜精品一区二区| 欧美一区二区精品久久911| 国产精品乱看| 久久成人精品一区二区三区| 久久婷婷国产综合国色天香| 国产日韩精品一区二区| 亚洲欧美日韩国产综合| 免费久久99精品国产自在现线| 免费久久久一本精品久久区| 国产精品久久毛片a| 亚洲欧美影院| 老司机精品视频网站| 亚洲国产小视频| 欧美日精品一区视频| 日韩系列欧美系列| 性8sex亚洲区入口| 在线电影国产精品| 欧美激情黄色片| 亚洲永久免费| 欧美高清在线一区二区| 在线亚洲免费| 黄色日韩精品| 欧美日韩美女| 性视频1819p久久| 亚洲国产一区视频| 久久国产黑丝| 夜夜爽av福利精品导航| 国产久一道中文一区| 久久久无码精品亚洲日韩按摩| 欧美国产一区二区在线观看 | 欧美成人免费视频| 一区二区三区久久久| 国产亚洲综合精品| 欧美日韩国产美女| 久久婷婷色综合| 亚洲在线观看免费| 亚洲欧洲美洲综合色网| 久久国产66| 亚洲免费网站| 亚洲精品少妇网址| 韩国久久久久| 国产欧美日韩亚洲一区二区三区 | 亚洲一二三四区| 农夫在线精品视频免费观看| 亚洲一区国产| 91久久综合| 国内精品久久久久伊人av| 欧美三级乱人伦电影| 欧美91视频| 久久人人九九| 欧美在线观看你懂的| 亚洲深爱激情| 一本久久精品一区二区| 亚洲国产欧美一区| 欧美大胆成人| 嫩模写真一区二区三区三州| 久久国产精品99久久久久久老狼|