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

              然后我們要?jiǎng)?chuàng)建一個(gè)主程序來調(diào)用這個(gè)類。這個(gè)大家應(yīng)該都比我熟的,右擊源文件文件夾,點(diǎn)擊添加-->新建項(xià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}

              含義我不多說了,把那個(gè)Cexercise換成你自己別的名字的類就可以運(yùn)行那個(gè)類了,當(dāng)然了,要注意包含頭文件。點(diǎn)擊運(yùn)行看看,一個(gè)白白的窗體,對(duì)嗎,好的,革命成功邁出了堅(jiān)實(shí)的一步。
            16. 下面我們來試著添加一個(gè)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ùn)行看看,應(yīng)該像這樣
            18. 然后如果你還想繼續(xù)給這個(gè)按鈕添加文字設(shè)置尺寸什么的,你可以通過像這樣的代碼,具體我不說多少,因?yàn)檫x擇Winform就是看中快速的控件拖拉功能,都是手寫我還不如用GTK
            19. this->button1->Name = L"button1";//設(shè)置按鈕文字
              this->button1->Size = System::Drawing::Size(7523);//設(shè)置按鈕尺寸

            20. 好了,下面重點(diǎn)來了,如何像C#一樣自由地拖拉控件改屬性呢,我們右擊項(xiàng)目,選擇添加-->新建項(xiàng)。
            21. 在彈出的子窗體右邊選擇Windows窗體,輸入一個(gè)名字,比如“HelloWorld”,點(diǎn)擊確定
            22. 然后我們就欣喜的發(fā)現(xiàn),哇,又回到Winform拖拉控件的時(shí)代啦,是的,沒錯(cuò),而且我們可以以C++寫后臺(tái)。沒用過c#的朋友請?jiān)诮缑嫔险艺夜ぞ呦洌瑢?shí)在沒找到請依次點(diǎn)擊主窗體上菜單欄的視圖-->工具箱,然后從工具箱里找到一個(gè)button控件拖動(dòng)到主窗體上。
            23. 之后雙擊這個(gè)button,會(huì)自動(dòng)添加一個(gè)button的單擊事件,我們希望單擊的時(shí)候彈出一個(gè)“我是傻逼”的消息框,代碼如下:
            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. 第一個(gè)參數(shù)是父窗體,第二個(gè)參數(shù)是消息框的內(nèi)容。細(xì)心的同學(xué)發(fā)現(xiàn)了,這里和C#不太一樣,是的,如果你按C#的寫法:Messsage.Show(...),這樣程序是沒法通過編譯的,畢竟是兩種語言嘛。
            26. 好了,我們回到主程序入口那里,修改Exercise()為HelloWorld(),運(yùn)行看看,出錯(cuò)了!!沒錯(cuò),你還得添加頭文件,添加引用,真是麻煩啊,沒辦法,這兒還沒有在C#下的引用添加提示,不知道Clipse下的Cdt有沒有這個(gè)功能,最終代碼如下
               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}

              好了,運(yùn)行一下看看。像這樣,那就對(duì)了,再深入地使用就不是本貼討論的范疇了,在C++上,各位都是我的前輩
            posted @ 2010-12-16 22:23 叫我老王吧 閱讀(38805) | 評(píng)論 (27)編輯 收藏
                 摘要:                           Lesson 1: Getting Started with Direct3D Les...  閱讀全文
            posted @ 2010-11-11 11:57 叫我老王吧 閱讀(2993) | 評(píng)論 (14)編輯 收藏
             1GtkTreeIter iter;//定義一個(gè)迭代器
             2    GtkTreeModel *pmodel;
             3    char* pitem;
             4    pmodel=gtk_tree_view_get_model(GTK_TREE_VIEW1));//得到TREEVIEW的model
             5    gtk_tree_model_get_iter_first(pmodel,&iter);//迭代器定位到第一行
             6    int columns=gtk_tree_model_get_n_columns(pmodel);//獲取行數(shù)
             7    
             8    //獲取列名
             9    for(int i=0;i<columns;i++)
            10    {
            11        GtkTreeViewColumn *column = gtk_tree_view_get_column(GTK_TREE_VIEW(control),i);//遍歷header
            12        string coltitle(__(gtk_tree_view_column_get_title(column),1));
            13        cout<<coltitle;//輸出列名
            14    }
                        
            15        
            16    do//開始遍歷內(nèi)容
            17    {
            18        for(int i=0;i<columns;i++)
            19            {
            20                gtk_tree_model_get (GTK_TREE_MODEL(pmodel),&iter,
            21                i,        &pitem,
            22                -1);//將指定單元格的值傳給pitem
            23                try
            24                {
            25                    cout<<pitem;//輸出單元格的值
            26                }
            catch{}
            27            }

            28    }
            while(gtk_tree_model_iter_next(pmodel,&iter));
            唉,網(wǎng)上找了半天,沒找到思路,只有自己慢慢啃了,寫完發(fā)一下,給需要的朋友一些借鑒

            posted @ 2010-06-25 11:57 叫我老王吧 閱讀(3945) | 評(píng)論 (0)編輯 收藏
            僅列出標(biāo)題  下一頁
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲狠狠久久综合一区77777 | 狠狠色丁香婷综合久久| 三级片免费观看久久| 国内精品伊人久久久久影院对白| 亚洲级αV无码毛片久久精品 | 色综合久久久久久久久五月| 亚洲一区精品伊人久久伊人| 久久久久99精品成人片| 国产精品成人精品久久久| 久久er国产精品免费观看2| 99久久成人国产精品免费| 久久发布国产伦子伦精品| 久久国产高清字幕中文| 青青草原综合久久| 无码人妻少妇久久中文字幕| 中文字幕无码久久久| 色综合久久综合中文综合网| 999久久久无码国产精品| 日本精品久久久久中文字幕| 久久久艹| 日日噜噜夜夜狠狠久久丁香五月| 国产精品免费福利久久| 国产精品久久久99| 国产成人精品综合久久久久| 国产∨亚洲V天堂无码久久久| 欧美亚洲国产精品久久蜜芽| 久久综合九色综合久99| 久久综合给合久久狠狠狠97色69| 久久国产精品国产自线拍免费 | 国产精品一久久香蕉产线看| 久久久久免费视频| 热re99久久6国产精品免费| 久久香蕉一级毛片| 久久精品国产99国产精品亚洲 | 品成人欧美大片久久国产欧美... 品成人欧美大片久久国产欧美 | 99久久国产亚洲综合精品| 久久精品人人做人人妻人人玩| 国产三级精品久久| 色综合久久久久无码专区| 欧美日韩精品久久久久| AV色综合久久天堂AV色综合在|