当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++ Builder教程

玩转BCB的IDE,体验ToolsAPI

多数BCB程序员也许一辈子都不用关心Toolsapi,但如果象我一样无聊的话,
不妨玩玩和讨论一下:
看看下面的程序,来把IDE变个样:

--->BCB5。0

//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
USERES(\"nodebug.res\");
USEPACKAGE(\"vcl50.bpi\");
//---------------------------------------------------------------------------
#include <toolsapi.hpp>
#include <inifiles.hpp>
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
//  Package source.
//---------------------------------------------------------------------------

namespace Nodebug  // Here the namespace should be same with this file name.
{
    bool NeedLocalize = true;
    bool NeedWriteToIni = false;
    TIniFile *ini, *chsini;
    AnsiString Section, Ident, Value;

    //===[ Do something on MenuItems. ]======================================
    void __fastcall DoMenuItem(TMenuItem* MenuItem)
    {
        //Display all MenuItems.
        if(MenuItem->Visible==false)  MenuItem->Visible = true;

        if ( NeedWriteToIni && !MenuItem->Name.IsEmpty())
        {
            Ident = MenuItem->Name;
            Value = MenuItem->Caption;
            ini->WriteString ( Section, Ident, Value );
        }
    }
    //===[ Do something on MenuItems. ]======================================

    //===[ Enumerate all MenuItem\'s SubItems. ]==============================
    void __fastcall EnumerateMenuItem(TMenuItem* MenuItem)
    {
        DoMenuItem(MenuItem);
        for ( int i=0; i<MenuItem->Count; i++ )
        {
            EnumerateMenuItem(MenuItem->Items[i]);
        }
    }
    //===[ Enumerate all MenuItem\'s SubItems. ]==============================

    void __fastcall LocalizeAppMenu()
    {

        _di_INTAServices IDE;
        HRESULT hr = BorlandIDEServices->QueryInterface(__uuidof(INTAServices), (void **) &IDE);

        if (SUCCEEDED(hr))
        {

          //----------[AppBuilder macro start]--------------------------------------
          #ifndef AppBuilder
          #define AppBuilder IDE->MainMenu->Owner
          #endif
          //----------[AppBuilder macro end  ]--------------------------------------

            TStringList* SectionList = new TStringList;
            TStringList* IdentList = new TStringList;
            AnsiString Value , Default(\"NULL\");
            try
            {
                chsini->ReadSections(SectionList);
                for (int i = 0; i < SectionList->Count; i++)
                {
                    chsini->ReadSection( SectionList->Strings[i], IdentList);

                    for (int x = 0; x < IdentList->Count; x++)
                    {

                        Value = chsini->ReadString( SectionList->Strings[i],
                                        IdentList->Strings[x],
                                        \"NULL\");

                        if( Default != Value )
                        {
                            TMenuItem* MI = dynamic_cast<TMenuItem*>
                                (AppBuilder->FindComponent(IdentList->Strings[x]));

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接