ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Як самому зробити plug-in до FAR на Visual C ++
         

     

    Інформатика, програмування

    Як самому зробити plug-in до FAR на Visual C + +

    Важко знайти людину, що не знає або не використовує Far - IMHO найкращий клон NC для Windows. Крім того, що це просто дуже хороший файл менеджер, до нього є величезна кількість plug-in модулів. Plug-in модуль це DLL-файл, який замість стандартних Windows функцій по роботі з монітором, клавіатурою і т.д. звертається до функцій Far-а.

    Far підтримує весь набір функцій для роботи в текстовому режимі. Установка plug-in модуля відбувається гранично просто - DLL файл і файли даних копіюються в каталозі в каталозі FarPlugins і Far перезапускається.

    FAR поширюється з повним набором файлів для написання самим plug-in на будь-якому З компіляторі для Windows. Темою цієї статті є написання цих модулів самим на Visual C + + (я використовував Visual C + + 5.0). При установці в каталог Far копіюється PlugDoc.rar, у ньому є приклади plug-in-ів і header файл. Всі приклади використовуються Ще там є VCReadme.txt, в якому описуються тонкощі роботи з Visual C + +. Потім поразбіраетесь з прикладами.

    Ми з вами напишемо plug-in, який отримує список відкритих вікон Windows, він може стати в нагоді як заготівля для своїх. І взагалі - варто почати - все це не так складно, як можна подумати. Ось, а тепер - поїхали:

    1) Запускає VC, робимо новий проект типу "Win32 Dynamic-Link Library" на ім'я SimpleFP. Створює файл simplefp.cpp - тут, власне, ми й будемо писати. До каталогу SimpleFP копіюємо header файл plugin.hpp з архіву PlugDoc.rar.

    2) Тепер нам треба зробити. Def файл - це файл, в якому описуються функції, які викликаються з зовнішніх модулів. Ми повинні описати функції Far-а, які ми будемо використовувати в нашому модулі. Робимо текстовий файл simplefp.def, в якому пишемо:

    LIBRARY

    EXPORTS

    GetPluginInfo = _GetPluginInfo @ 4

    OpenPlugin = _OpenPlugin @ 8

    SetStartupInfo = _SetStartupInfo @ 4

    Тут ми описуємо 3 функції, які нам знадобляться. А тепер додамо simpledef.def до файлів проекту (Project - Add to project - Files - simplefp.def).

    3) Тепер пишемо сам plug-in - працюємо з файлом simplefp.cpp. Я вирішив дати текст самої програми з коментарями - можна скопіювати в С + + і почати з ним возитися. Але спочатку про засадах.

    Far працює за тими ж принципами, що і Windows - ви посилаєтеся у програмі на ті функції, що вже є в системі, які хочете використовувати. Far надає функції для роботи з екранними формами в режимі console application. При запуску plug-in-а Far запускає функцію OpenPlugin, ми будемо її розглядати як аналог main () або WinMain (). Але крім цього треба ще повідомити Far-у дані про наш plug-in-е. Це робить функція GetPluginInfo.

    /*

    * SimpleFP - простий plug-in до Far-у. (С) 2000 Phoenix, Moscow

    */

    # include// для виклику sprintf

    # include// для функцій Windows

    # include "plugin.hpp"// для функцій Far

    # define PLUGIN_NAME "Open windows "//Назва plug-in-а

    # define WINDOW_HEAD "Open windows list"// Заголовок меню, яке ми зробимо

    //

    // Описуємо функції Far, які з якими ми працюємо.

    //

    extern "C"

    (

    void WINAPI _export SetStartupInfo (struct PluginStartupInfo * Info);

    HANDLE WINAPI _export OpenPlugin (int OpenFrom, int Item);

    void WINAPI _export GetPluginInfo (struct PluginInfo * Info);

    );

    static struct PluginStartupInfo Info;// Інформація про наш plug-in-е

    //

    // Інформація про модуль визначена нами в структурі Info

    //

    void WINAPI _export SetStartupInfo (struct PluginStartupInfo * Info)

    (

    :: Info =* Info;

    )

    // Ця функція викликається для отримання інформації про plug-in.

    // Ми повинні заповнити поля структури Info.

    //

    void WINAPI _export GetPluginInfo (struct PluginInfo * Info)

    (

    Info-> StructSize = sizeof (* Info); //Розмір структури Info

    Info-> Flags = 0; //Це нам не потрібно

    Info-> DiskMenuStringsNumber = 0; //Це нам теж не потрібно

    // Визначаємо рядок з назвою модуля

    static char * PluginMenuStrings [1];

    PluginMenuStrings [0] = PLUGIN_NAME;

    // Визначаємо назва plug-in модуля

    Info-> PluginMenuStrings = PluginMenuStrings;

    Info-> PluginMenuStringsNumber = sizeof (PluginMenuStrings)/sizeof (PluginMenuStrings [0 ]);

    Info-> PluginConfigStringsNumber = 0; //Це нам не потрібно

    )

    // Ця функція викликається при запуску plug-in модуля.

    //

    HANDLE WINAPI _export OpenPlugin (int OpenFrom, int Item)

    (

    HWND hwnd;// Використовуємо для отримання handle

    char p [128], o [128];// Для створення рядків меню

    int i = 0;// Лічильник

    struct FarMenuItem MenuItems [64];// Опис меню, яке створить для нас Far

    memset (MenuItems, 0, sizeof (MenuItems)); //Ініціалізіруем наше меню

    MenuItems [0]. Selected = TRUE;

    hwnd = GetDesktopWindow ();// Отримуємо handle для desktop

    hwnd = GetWindow (hwnd, GW_CHILD);// Отримуємо його handle

    while (hwnd! = 0)// Поки воно не останнє

    (

    hwnd = GetWindow (hwnd, GW_HWNDNEXT); //Отримаємо handle вікна

    GetWindowText (hwnd, p, 128); //І його заголовок

    if (strlen (p)> 0)// якщо заголовок є

    (

    sprintf (o, "% 0.8xld % s ", hwnd, p);// зробимо рядок

    strcpy (MenuItems [i + +]. Text, o);// скопіюємо цю строчку в масив MenuItems

    )

    )

    // викликаємо створене нами меню, отримуємо номер обраного пункту - MenuCode

    //

    int MenuCode = Info.Menu (Info.ModuleNumber,

    -1, -1,0,

    FMENU_AUTOHIGHLIGHT | FMENU_WRAPMODE,

    WINDOW_HEAD,

    NULL,

    "Menu content",

    NULL,

    NULL,

    MenuItems,

    i);

    return (INVALID_HANDLE_VALUE);

    )

    компілюється, копіюйте в FarPlugin і перезапускати Far. У Far-е натисніть F11 - це список plug-in модулів. Тепер у ньому має з'явитися рядок Open windows. Подивіться на результат. Тепер можна розвивати, наприклад - обробляючи результат MenuCode посилати вибраного вікна повідомлення WM_CLOSE, або зробити ще що-небудь нетривіальне:) Створення plug-in модулів до Far-у документована чудово, розбирайтеся.

    Список літератури

    Для підготовки даної роботи були використані матеріали з сайту http://www.soch.imperium.by

         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status