Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

Да, действительно Mtd при компиляции на дебаге действительно помогло, только жалко что размер длл увеличился.
Syltan вне форума   Ответить с цитированием
Старый 23.02.2010, 18: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 в 18:37.
Syltan вне форума   Ответить с цитированием
Старый 23.02.2010, 19:57   #23
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,047
По умолчанию

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

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

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

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

void WINAPI ClosePlugin(
  HANDLE hPlugin
);

Параметры
hPlugin

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

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

Нет

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


14:05.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.