Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2010, 15:54   #21
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Да, действительно Mtd при компиляции на дебаге действительно помогло, только жалко что размер длл увеличился.
Syltan вне форума Ответить с цитированием
Старый 23.02.2010, 17:18   #22
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Вот я захотел добавить ещё 1 пункт меню - "Выход из программы".
Программа, не хочет воспринимать функцию вывода диалоговых окон.
Я хочу чтоб при нажатии "выйти из программы", отображалось сообщение,
если я подтверждаю, что согласен, тогда закрыть окно фар.
Что можно сделать?
Вот исходник:
Код:
//-------------
#include <windows.h>
#include <Mmsystem.h>
 
#include "plugin.hpp" // Этот заголовочный файл берётся из ..\Far\PlugDoc.rar
 
/*
Структура PluginStartupInfo должна быть в каждом plug-in'e
Far использует её для получения информации о модуле и
передачи информации в модуль.
*/
static struct PluginStartupInfo Info;
 
/* Экспортируемые функции */
extern "C"
{
/* Вызывается Far'ом для заполнения структуры PluginStartupInfo. */
void WINAPI _export SetStartupInfo (struct PluginStartupInfo *Info);
/* Главная функция плагина - вызывается при выборе плагина из списка,
который появляется при нажатии F11. */
HANDLE WINAPI _export OpenPlugin(int OpenFrom, int Item);
/* Вызывается Far'ом для получения информации о плагине.
Экземпляр структуры PluginInfo создаётся Far'ом, а
её адрес передаётся в GetPluginInfo. */
void WINAPI _export GetPluginInfo(struct PluginInfo *Info);
}
//-------------
/* Задаём пункты меню */
struct FarMenuItem MenuItems[3] =
{
{L"Открыть CD-ROM", /* Название пункта */
0, /* Признак того, что пункт выбран */
0, /* Если не 0 - слева ставится "галочка" -
(что-то вроде RadioGroup) */
0 /* Если не 0 - вместо пункта меню
ставится разделитель */
},
{L"Закрыть CD-ROM",
0,
0,
0
},
{L"Выйти из проги",
0,
0,
0
}
};
//-------------
void WINAPI _export SetStartupInfo (struct PluginStartupInfo *Info)
{
::Info = *Info; /* Просто передаём указатель на нашу структуру,
чтобы Far знал где она лежит */
}
//-------------
void WINAPI _export GetPluginInfo(struct PluginInfo *Info)
{
Info->StructSize = sizeof(*Info);
 
static wchar_t *PluginMenuStrings[1];
PluginMenuStrings[0] = L"Функции CD-РОМА"; /* Название плагина */
 
/* Добавляем пункт в меню, которое появляется при нажатии F11 */
Info->PluginMenuStrings = PluginMenuStrings;
Info->PluginMenuStringsNumber = 1; /* Добавили одну строку */
}
//-------------
HANDLE WINAPI _export OpenPlugin(int OpenFrom, int Item)
{
/* Вызываем меню и узнаём номер выбранного пункта */
int menu_item = Info.Menu (Info.ModuleNumber,
-1, // X - Default
-1, // Y - Default
0, // MaxHeight - Default
FMENU_AUTOHIGHLIGHT, /* Автоподсветка
при выборе*/
L"CD-ROM Menu", /* Заголовок меню */
L"Choose something", /* Строка снизу */
NULL, /* Ссылка на Help - его нет :) */
NULL, /* BreakKeys - по умолчанию нет */
NULL, /* BreakCode - см. пред. пункт. */
&MenuItems[0], /* Адрес структур
с пунктами меню */
3 /* Количество пунктов в меню */
);
 
switch(menu_item) /* в зависимости от номера выбранного пункта... */
{
case 0: /* Выдвигаем подставку для чашки с кофе :) */
mciSendString(L"Set CDAudio Door Open", 0, 0, 0);

break;
case 1: /* Задвигаем подставку для чашки с кофе :) */
mciSendString(L"Set CDAudio Door Closed", 0, 0, 0);
break;
case 2:
if(MessageBox(0,L"Выйти из программы?","Информация",MB_YESNO |MB_ICONQUESTION) == IDYES)
Close();
break;
}
 
/* Вообще-то здесь надо возвращать Handle plugin'a,
но всё и так прекрасно работает :))) */
return(INVALID_HANDLE_VALUE);
}
//-------------
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//-------------
ОШИБКА:
c:\documents and settings\kasper\мои документы\visual studio 2008\projects\cd\cd\cd.cpp(97) : error C2664: 'MessageBoxW' : cannot convert parameter 3 from 'const char [11]' to 'LPCWSTR'
c:\documents and settings\kasper\мои документы\visual studio 2008\projects\cd\cd\cd.cpp(98) : error C3861: 'Close': identifier not found

Последний раз редактировалось Syltan; 23.02.2010 в 17:37.
Syltan вне форума Ответить с цитированием
Старый 23.02.2010, 18:57   #23
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

По первой одну L пропустили.
По второй: кто такой Close и откуда?
p51x вне форума Ответить с цитированием
Старый 23.02.2010, 19:06   #24
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Просто я хотел этим закрыть программу ФАР, после того, как я выберу этот пункт меню - "Выйти из проги". Подскажите тогда чем можно закрыть? Просто данная команда закрывает форму на Билдере, как её закрыть только на студии 2008?
Syltan вне форума Ответить с цитированием
Старый 23.02.2010, 19:35   #25
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вы пишите ПЛАГИН к программе, а не форму. Это не зависит от Билдера или Студии.
Ищите в документации к фару нужную функцию.
p51x вне форума Ответить с цитированием
Старый 24.02.2010, 14:35   #26
Syltan
Заблокирован
 
Регистрация: 27.08.2009
Сообщений: 569
По умолчанию

Подскажите пожалуйста функцию, которая закрывает фар, искал, так и не нашёл.
Прочитал только такую и всё, а как пользоватся неизвестно.
Код:
Функция ClosePlugin вызывается перед закрытием открытого плагина.

void WINAPI ClosePlugin(
  HANDLE hPlugin
);

Параметры
hPlugin

Описатель открытого плагина

Возвращаемое значение

Нет

Последний раз редактировалось Syltan; 24.02.2010 в 14:39.
Syltan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
pragma Witaliy Общие вопросы Delphi 1 31.07.2008 16:00