Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 86
от 10.04.2005, 20:30

Администратор:Калашников О.А.
В номере:Вопросов: 2, Ответов: 8


Вопрос № 19243: ю ЛНФМН КХ ЯПЕДЯРБЮЛХ API НРЙПШБЮРЭ/ГЮЙПШБЮРЭ НДЯРЮБНВЙС ДКЪ ЙНТЕ, РЭТС, CD-ROM?...
Вопрос № 19266: Здравствуйте! В моей программе есть 2 класс, где один является прогзводным другого. Что значит:" Операции по созданию и удалению объекта инкапсулироватьв классе Factory". Если можно , то пример! Спасибо!...

Вопрос № 19243
ю ЛНФМН КХ ЯПЕДЯРБЮЛХ API НРЙПШБЮРЭ/ГЮЙПШБЮРЭ НДЯРЮБНВЙС ДКЪ ЙНТЕ, РЭТС, CD-ROM?
Отправлен: 04.04.2005, 21:06
Вопрос задал: SerJ1 (статус: Посетитель)
Всего ответов отправлено: 5

Отвечает: Raptor1
Здравствуйте, SerJ1!
#include "Mmsystem.h"
Добавить Winmm.lib
mciSendString("set CDAudio door open",NULL,NULL, NULL);
mciSendString("set CDAudio door closed",NULL,NULL, NULL);
Ответ отправил: Raptor1 (статус: 2-ой класс)
Отправлен: 04.04.2005, 23:34

Отвечает: Malish
Здравствуйте, SerJ1!
Вот кусок который делает eject для CD-ROM'a, ZIP'a
BOOL EjectDrive95(char *path)
{
HANDLE hDevice;
DWORD dw;
BOOL fResult;
DIOC_REGISTERS reg;
hDevice = CreateFile("\\.\vwin32", 0, 0, NULL, 0,
FILE_FLAG_DELETE_ON_CLOSE, NULL);
if (hDevice == INVALID_HANDLE_VALUE)
return FALSE;
reg.reg_EAX = 0x440D;
reg.reg_EBX = toupper(path[0]) - 'A' + 1;
reg.reg_ECX = 0x0849;
fResult = DeviceIoControl(hDevice,
VWIN32_DIOC_DOS_IOCTL,®, sizeof(reg),
®, sizeof(reg), &dw, 0);
CloseHandle(hDevice);
return fResult;
}
BOOL EjectDriveNT(char *path)
{
HANDLE hDisk;
DWORD dwRc;
TCHAR tsz[8];
SECURITY_ATTRIBUTES sa;
wsprintf(tsz, TEXT("\\.\%c:"), TEXT('@') + toupper(path[0]) - 'A' + 1);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
hDisk = CreateFile(tsz, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,&sa,
OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL);
if (hDisk != INVALID_HANDLE_VALUE)
{
FlushFileBuffers(hDisk);
return DeviceIoControl(hDisk, IOCTL_DISK_EJECT_MEDIA, NULL, 0, NULL, 0,&dwRc, NULL);
}
return FALSE;
}
Ответ отправил: Malish (статус: 8-ой класс)
Отправлен: 05.04.2005, 00:00

Отвечает: DSota
Здравствуйте, SerJ1!
А это третий способ работы (в примере СиДиРом диск K:):

Приложение:

Ответ отправил: DSota (статус: Студент)
Отправлен: 05.04.2005, 09:50

Отвечает: vitya
Здравствуйте, SerJ1!
На поставленный вопрос ответ: Да, можно.
Ответ отправил: vitya (статус: Профессор)
Отправлен: 05.04.2005, 09:55
Оценка за ответ: 10
Комментарий оценки:
Я и не сомневался :)

Отвечает: Doroshev DV
Здравствуйте, SerJ1!
Надеюсь, у вас стоит NT-система, т.к. я нашёл функции только для неё...
___________________
// Открыть привод
BOOL OpenCD(char *path)
{
HANDLE hDisk;
DWORD dwRc;
TCHAR tsz[8];
SECURITY_ATTRIBUTES sa;
wsprintf(tsz, TEXT("\\.\%c:"),
TEXT('@') + toupper(path[0]) - 'A' + 1);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
hDisk = CreateFile(tsz, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
if(hDisk != INVALID_HANDLE_VALUE) {
FlushFileBuffers(hDisk);
return DeviceIoControl(hDisk, IOCTL_DISK_EJECT_MEDIA, NULL,
0, NULL, 0, &dwRc, NULL);
}
return FALSE;
}
// Закрыть привод
BOOL CloseCD(char *path)
{
HANDLE hDisk;
DWORD dwRc;
TCHAR tsz[8];
SECURITY_ATTRIBUTES sa;
wsprintf(tsz, TEXT("\\.\%c:"),
TEXT('@') + toupper(path[0]) - 'A' + 1);
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
hDisk = CreateFile(tsz, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, &sa, OPEN_EXISTING,
FILE_FLAG_WRITE_THROUGH, NULL);
if(hDisk != INVALID_HANDLE_VALUE) {
FlushFileBuffers(hDisk);
return DeviceIoControl(hDisk, IOCTL_DISK_LOAD_MEDIA, NULL,
0, NULL, 0, &dwRc, NULL);
}
return FALSE;
}
Ответ отправил: Doroshev DV (статус: 6-ой класс)
Отправлен: 05.04.2005, 15:01


Вопрос № 19266
Здравствуйте! В моей программе есть 2 класс, где один является прогзводным другого. Что значит:" Операции по созданию и удалению объекта инкапсулироватьв классе Factory". Если можно , то пример! Спасибо!
Отправлен: 05.04.2005, 12:47
Вопрос задал: Сергей Николаевич (статус: 1-ый класс)
Всего ответов отправлено: 3

Отвечает: DSota
Здравствуйте, Сергей Николаевич!
Это означает, что в производный класс были добавлены из базового конструктор и деструктор. Пример можешь посмотреть - создав экзмпляр производного класса и по шагам выполняя его в отладочном режиме - сначала выполниться конструктор родительского класса, а потом пойдет конструктор производного класса, при удалении же все будет наоборот.
Ответ отправил: DSota (статус: Студент)
Отправлен: 05.04.2005, 12:58

Отвечает: igor87
Здравствуйте, Сергей Николаевич!
"Инкапсуляция - это механизм, связывающий воедино код и данные, которыми он манипулирует, а также обеспечивающий их защиту от внешнего вмешательства и неправелтного использования."
Герберт Шилдт "Полный справочник по С++"
" Операции по созданию и удалению объекта инкапсулироватьв классе Factory" значит, что все объекты первого класса создаются только в границах класса Factory. В приложении пример с классами first и Factory.

Приложение:

Ответ отправил: igor87 (статус: 1-ый класс)
Отправлен: 05.04.2005, 16:51

Отвечает: Raptor1
Здравствуйте, Сергей Николаевич!
Производным это в смысле наследником? Создание какого объекта этих классов надо инкапсулировать, или вам требуется пояснение о том, что такое инкапсуляция. В вопросе явно не хватает информации, тем более для примера.
Ответ отправил: Raptor1 (статус: 2-ой класс)
Отправлен: 07.04.2005, 23:04
Оценка за ответ: 1


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное