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

桃源谷

心靈的旅行

人生就是一場旅行,不在乎旅行的目的地,在乎的是沿途的風景和看風景的心情 !
posts - 32, comments - 42, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

CodeBlocks插件開發指南(二)

Posted on 2010-04-20 22:21 lymons 閱讀(5156) 評論(0)  編輯 收藏 引用 所屬分類: C++ 、C開發環境

  CodeBlocks插件開發指南(二)
By Lymons(lymons@gmail.com) 2010/4/14

1. 創建Plugin工程

       File主菜單中,選擇new -> Projects… , 打開工程創建向導對話框。


       Projects的列表框中,選擇 Code::Blocks plugin ,然后點擊 Go 按鈕,進入插件創建向導對話框。

 

       創建向導的第一個畫面中有重要信息說明。請注意的是里面提到了必須設置#cb, #wx這兩個全局變量。不過,還好咱們在《CodeBlock插件開發指南 一》中已經對這兩個變量進行了設置。
咱們在這里,直接點擊Next進入到下一個畫面即可。

 

       在下面這個畫面,要設定工程標題(Project title)和工程目錄(Folder to create project in:)。 首先要填寫Project title,也就是要寫入工程的名字。如果,工程標題和工程目錄決定了,Project filename Resulting filename 會自動生成。
注意:CodeBlocks的工程文件的后綴名是.cbp
各項目都設定完畢后,點擊Next進入到下一個畫面

 

       下面是設置插件的名字,也就是將來編譯成功后,系統自動做成的插件的名字.例如,如果在這里把 Plugin name 設定成 testplug 的話,將來會在工程目錄下生成:testplugin.zip, testplugin.dll, testplugin.cbplugin 這個三個文件。


Plugin name 中填入你想要的插件名字。盡可能的話請使用英文。
Plugin type 的下拉列表框中有四項:
     1. Generic
     2. Tool
     3. MIME handler
     4. Wizard
Options中有四個選項:
     1. Provides configuration dialog
 提供配置對話框
     2. Creates menu entries 
提供主菜單入口
     3. Creates popup men entries
提供視圖上的彈出菜單入口
     4. Creates toolbar 
提供工具條
上述的
四個選項就是插件提供給用戶的四種gui接口。
默認情況下,只有第一項是可選項。如果想要四個選項都可選,則需要選擇Plugin type中的Generic。為了把每個項目都進行說明,我們這里選擇的是Generic

選擇Generic后,Options的四個選項全部變成可選狀態。
我們把這四個選項都選上,然后點擊Next, 就進入到下一個畫面

 

       這個畫面是設定插件的版本,版權信息,因為是說明性的工程,在這里我們什么也沒有填寫。你可以根據自己的意愿隨便進行填寫。

 

       因為插件的GUI是用的是wxWidgets窗口庫,所以要在這里選擇插件所依賴的版本。
我們在這里選擇wxWidgets 2.8.x。大家應該還記得在前面我們已經安裝了wxWidgets 2.8.10吧。然后,點擊Next進入下一畫面。

 

       下面是選擇編譯器,這是向導對話框中的最后一個畫面。我們選擇GNU GCC Complier,然后點擊Finish完成插件工程的創建。

 

恭喜你,到目前為止,你就創建了一個CodeBlocks的插件工程了。

正常的情況下,該工程只包含一個.cpp文件和一個.h文件,這個文件根據你的插件名字來生成。我們這里就是testplug.cpp testplug.h


注意,在testplug.cpp中包含了sdk.h configurationpanel.h 這兩個頭文件,他們位于CodeBlocks開發庫中,是開發插件必不可少的兩個頭文件。而插件在連接是所需要的靜態庫是前面編譯出來的libcodeblocks.a

讓我們看看,這個插件里主要的東西:插件類的定義

#ifndef TESTPLUG_H_INCLUDED

#define TESTPLUG_H_INCLUDED

 

// For compilers that support precompilation, includes <wx/wx.h>

#include 
<wx/wxprec.h>

 

#ifndef WX_PRECOMP

    #include 
<wx/wx.h>

#endif

 

#include 
<cbplugin.h> // for "class cbPlugin"

 

class testplug : public cbPlugin

{

    
public:

        
/** Constructor. */

        testplug();

        
/** Destructor. */

        
virtual ~testplug();



文件wx/wxprec.h, wx/wx.h wxWidgets庫的頭文件。
大家可以看到,插件的類的名字是 testplug, 它繼承與cbPlugin, 基類cbPlugin的定義在 cbplugin.h里。

 

2. 編譯&加載插件

       現在我們可以從Build主菜單中選擇Build workspace來編譯這個插件工程了。不出意外的話,應該是正常編譯通過的。如果你有編譯錯誤的話,請你參考《CodeBlock插件開發指南 一》來配置編譯環境。

如果編譯成功的話,應該會在工程目錄下生成如下文件:


其中有三個是最重要的文件
    1. testplug.cbplugin
        CodeBlocks
在載入插件時所需要的文件
    2. testplug.dll
       
插件的實現被封裝到這個dll文件中
    3. testplug.zip.
       
包含了插件的版本信息,壓縮包里最主要就是manifest.xml
不過,大家會發現,這些文件中沒有可執行文件。這是因為,插件本身并不是一個能夠獨立運行的可執行文件,它僅僅是一個dll,它是要依附于CodeBlocks來生存的。

       現在我們可以嘗試用CodeBlocks來載入剛才我們生成的插件。在Build主菜單中選擇Run就可以運行這個插件了。


       嗯,奇怪了,點擊Run后,運行的怎么是Codeblocks呢。

這就對了,這里Run(運行)的不是插件,而是裝載插件的CodeBlocksIDE環境,而我們是要在這個IDE中加載剛才我們創建的那個插件。
值得注意的是,這里被運行起來的IDE環境是在前面我們編譯成功的那個codeblocks.exe, 大家還記得吧,這個可執行文件在codeblocks-8.02\src\devel目錄下。如果忘記了,請參考《CodeBlock插件開發指南 一》的3- 。
#
注意,如果點擊Run菜單項后,codeblocks不能被運行的話,有原因可能是CodeBlocks默認設定了只允許運行一個實例。所以,我們可以把這個設定去掉。我們從Settings菜單中選擇 Environments…


此時,會彈出Environment settings對話框,然后我們選擇左邊的 General settings屬性頁。
在屬性頁中把 “Allow only once running instance(needs application restart to take effect)”項目前面的√對號符選掉。
然后重新啟動CodeBlocks生效此配置。


       如果,另一個CodeBlocks能夠被正確啟動,我們就要嘗試載入剛才我們創建成功的插件。我們應該從Plugins主菜單中選擇 Manage plugins…
會彈出 Manage plugins對話框,然后我們點擊右邊的按鈕 Install new


會彈出 Select plugin to install 文件選擇對話框,此時我們定位到我們的插件工程目錄中,選擇目錄里面的testplug.cbplugin文件就可以了。


如果加載成功的話,我們會在Installed plugins: 中看到剛才我們載入的testplug插件,其實CodeBlocks載入就是我們編譯成功的testplug.dll文件。



       大家會發現,成功載入插件后,不管我們怎么操作都不能發現插件的用戶接口在哪兒。這是因為,我們僅僅是創建了一個空的插件工程,該工程里只提供了各種GUI方式的接口函數,并沒有任何代碼實現,所以不會看到該插件有什么效果的。

唯一能看到視覺效果的是它的About對話框


這個對話框中,什么信息都沒有。不過你應該可以定制它的內容。



到目前為止,你應該知道如何創建以及運行一個插件了。接下來我們要涉及到具體的編碼了。
  

2. 添加右鍵彈出菜單

3. 主菜單中添加下拉菜單

4. 添加工具條

5. ”Log&others”中添加一個面板(Panel)

6. 添加一個單獨的面板

7. 運行

       Run

       載入編譯好的插件

我的個人簡歷第一頁 我的個人簡歷第二頁
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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水蜜桃| 欧美不卡视频| 日韩午夜在线观看视频| 亚洲综合欧美日韩| 久久阴道视频| 国产精品久久久对白| 亚洲黄页一区| 日韩亚洲欧美一区| 久久久精品动漫| 99这里只有精品| 日韩视频精品在线观看| 久久久人成影片一区二区三区| 欧美日韩亚洲综合一区| 亚洲国产专区校园欧美| 久久免费精品日本久久中文字幕| 一区二区三区视频在线播放| 欧美激情一区二区三区四区 | 亚洲一区二区三区四区五区黄| 另类综合日韩欧美亚洲| 国产午夜久久| 欧美一区二区三区婷婷月色| 在线亚洲美日韩| 欧美成人69av| 亚洲视频精选| 久久久久久网站| 一区二区三区国产精华| 欧美成人tv| 在线观看精品一区| 久久国产黑丝| 亚洲欧美日韩中文播放| 国产精品日韩| 性欧美大战久久久久久久免费观看 | 国产精品国产三级国产aⅴ无密码| 国内伊人久久久久久网站视频| 亚洲电影免费观看高清完整版在线观看| 欧美一级专区| 亚洲欧美日韩精品| 国产一区二区视频在线观看| 久久久精品国产免大香伊| 欧美一区二区日韩一区二区| 国模精品娜娜一二三区| 麻豆精品一区二区av白丝在线| 久久亚洲欧美国产精品乐播| 亚洲日本欧美在线| 亚洲精品视频啊美女在线直播| 欧美日本在线一区| 亚洲图片你懂的| 亚洲免费视频在线观看| 国产最新精品精品你懂的| 久久久久久穴| 亚洲欧洲一区二区天堂久久| 亚洲大胆女人| 免费亚洲电影| 亚洲第一精品影视| 亚洲国产精品电影| 欧美另类videos死尸| 在线观看欧美视频| 亚洲福利视频二区| 欧美日韩mp4| 午夜视频久久久| 久久中文久久字幕| 亚洲视频免费在线| 新片速递亚洲合集欧美合集| 好吊色欧美一区二区三区四区 | 久久裸体艺术| 欧美精品二区| 久久视频在线看| 欧美屁股在线| 久久一日本道色综合久久| 欧美激情视频一区二区三区免费| 午夜精品久久久久久久99水蜜桃 | 欧美承认网站| 免费一级欧美片在线播放| 9人人澡人人爽人人精品| 亚洲欧美国产视频| 国产精品久久久久婷婷| 蜜臀a∨国产成人精品 | 樱花yy私人影院亚洲| 亚洲精品在线视频| 黄色国产精品| 午夜精彩国产免费不卡不顿大片| 在线免费观看日韩欧美| 亚洲午夜伦理| 一本久久综合| 欧美成人在线影院| 久久精品一区二区三区中文字幕| 欧美精品一区三区在线观看| 久久午夜色播影院免费高清| 欧美日韩国产高清| 欧美高清视频一区二区| 国产情侣一区| 在线综合视频| av不卡在线看| 欧美激情一区二区三区在线视频 | 亚洲人成毛片在线播放| 久久精彩免费视频| 欧美在线观看一区二区三区| 欧美日韩三区| 亚洲精品美女在线观看| 一区二区三区在线观看欧美| 午夜亚洲福利| 性欧美xxxx大乳国产app| 欧美日韩伦理在线免费| 亚洲国产精品福利| 中文国产成人精品| 国产美女一区| 亚洲肉体裸体xxxx137| 精品白丝av| 亚洲欧美一区二区激情| 亚洲夜晚福利在线观看| 欧美日本一道本| 亚洲国产一区二区三区在线播| 伊人久久亚洲影院| 久久色在线观看| 欧美国产日韩在线| 亚洲黑丝在线| 欧美成人资源| 亚洲人人精品| 狠狠做深爱婷婷久久综合一区| 91久久精品日日躁夜夜躁欧美| 亚洲国产综合在线看不卡| 美女免费视频一区| 欧美激情一区二区三区成人| 亚洲激情视频网| 欧美久久99| 亚洲小视频在线| 久久精品女人的天堂av| 国内精品久久久久影院色| 久久se精品一区二区| 麻豆精品视频在线观看| 亚洲人成网在线播放| 欧美精品在线视频| 亚洲午夜久久久久久尤物| 久久精品日产第一区二区| 在线精品国产欧美| 欧美剧在线免费观看网站| 99精品黄色片免费大全| 欧美一区二区三区久久精品茉莉花| 国产日韩欧美黄色| 老司机精品导航| 亚洲精品美女在线观看| 欧美亚洲一区在线| 永久555www成人免费| 欧美日韩国产三级| 亚洲图片欧美午夜| 亚洲一区二区三区四区五区午夜 | 欧美福利视频网站| 亚洲欧洲精品一区二区三区不卡 | 国产欧美亚洲日本| 美女精品国产| 亚洲免费网站| 欧美激情亚洲一区| 欧美一级久久久久久久大片| 亚洲国产乱码最新视频| 国产精品九色蝌蚪自拍| 久久午夜视频| 中文无字幕一区二区三区| 裸体女人亚洲精品一区| 亚洲视频免费在线| 在线看欧美日韩| 国产精品久久久久久影院8一贰佰| 在线视频欧美日韩精品| 亚洲三级免费| 国产色综合网| 欧美体内she精视频在线观看| 久久久蜜臀国产一区二区| 中国亚洲黄色| 亚洲国产精品久久久久秋霞蜜臀 | 国产精品美女一区二区| 久久久久欧美精品| 久久久夜夜夜| 亚洲欧美日韩电影| 欲色影视综合吧| 欧美高清hd18日本| 亚洲精品黄色| 欧美一级在线播放| 亚洲国产美国国产综合一区二区| 欧美精品在线一区| 老司机午夜免费精品视频| 亚洲欧美日韩高清| 亚洲午夜久久久久久久久电影院| 欧美国产成人精品| 亚洲欧美在线一区二区| 亚洲国产精品久久人人爱蜜臀 | 国产区精品视频| 国产精品久久综合| 欧美三级电影精品| 欧美精品尤物在线| 在线精品国产欧美| 一区在线播放视频| 亚洲欧洲精品成人久久奇米网| 亚洲国产婷婷| 中国成人黄色视屏| 亚洲男人的天堂在线aⅴ视频| 欧美一区二区三区啪啪| 久久―日本道色综合久久| 欧美第一黄色网| av成人免费在线|