Здравствуйте, эксперты ! Я с codeguru.com скачал хороший класс BCMenu, чтоб меню с битмапами было. Только вот проблема : когда делаю в меню второй уровень, первый становится узкой полоской, уже чем остальные. Хотя в примере у автора все работает. Что посоветуйте ? Использую VC++ c MFC.
Здравствуйте, IceWINteR! Смотри внимательнее пример :) Ответ отправлен: 12.05.2003, 21:39 Отправитель: BOLT Отвечает Avl2k
Здравствуйте, IceWINteR! Видимо, какие-то сложности возники с функцией OnMeasureItem. А Вы правильно выполнили процедуру добавления этого класса в свой проект (не забыли перекрыть WM_MEASUREITEM, WM_MENUCHAR, WM_INITMENUPOPUP?). С уважением, Avl2k. Ответ отправлен: 14.05.2003, 14:04 Отправитель: Avl2k
Вопрос № 761
Привет, эксперты! У меня такой вопрос- можно- ли из драйвера вызывать функции DLL и если да, то как. И если у кого либо есть нормальная (теория/практика) инфа (желательно, но не обязательно на русском) по WDM то киньте в ящик или линком поделитесь. Заранее спасибо!
Приветствую Вас, Morgion! Ну для начала скажи что за драйвер, но в общем то нельзя. Dll API предназначено для User Mode, а WDM дрова для Kernel Mode. А нафига так извращаться то? Можно из dll обращаться к драйверу, а вот наоборот... Ответ отправлен: 13.05.2003, 10:41 Отправитель: akul Отвечает Knignick
Здравствуйте, Morgion! Можно, почему нет? Подгружаешь DLL-ку использую LoadLibrary и достаешь нужную фушкцию через GetProcAddress.
Ответ отправлен: 12.05.2003, 23:59 Отправитель: Knignick Отвечает Ramzes
Приветствую Вас, Morgion! А разве LoadLibrary не работает ? (Хотя не знаю, не пробовал) А насчет книги скачай эту, неплохая http://www.proglib.ru/books/prog-wdm.zip Ответ отправлен: 13.05.2003, 14:12 Отправитель: Ramzes
Вопрос № 762
Здесь alexneta задавал(а) вопрос на счёт перегрузки [] Так вот, те ответы, которые были даны свидетельстуют о вопиющей некомпитентности "експертов" (с) Yuri Gordienko Ответ: Гуру рекомендуют писать class Index { public: int i1,i2; Index(int i1, int i2):i1(i1), i2(i2){} ... }; ... int value = array[Index(i1,i2)]; Рекомендую прочитать главу 8 в книге "С++" Джефа Элджера. Там подробно описываются фокусы с перегрузкой [] "Експерты" (с) Yuri Gordienko, которые эту книгу не перечитывают раз в год - НЕ ЭКСПЕРТЫ!!! ПОЗОР ЭКСПЕРТАМ РАССЫЛКИ С++!!! ДОЛОЙ РАССЫЛКУ!!! Я УЖЕ ОТПИСАЛСЯ ОТ ВАШЕЙ ГРЁБАНОЙ РАССЫЛКИ, "експерты"!!!
Здравствуйте, Antonio! Я не понимаю, чем тебе не нравится его ответ? Ответ отправлен: 13.05.2003, 08:45 Отправитель: vitya Отвечает Yuri Gordienko
Здравствуйте, Antonio! Да Вы, видать, батенька, с головой не дружите. Т.к. у Элджера аналогичный(тому что я написал) способ и рассматривается. З.Ы. Я так сожалею, что Вы отписались... Наверное ночь спать не буду...
Ответ отправлен: 13.05.2003, 10:13 Отправитель: Yuri Gordienko Отвечает Avl2k
Добрый день, Antonio! Прежде чем позорить экспертов и советовать им перечитать данную книгу, неплохо бы перечитать ее самому, а также понять, что именно там написано. Никаких особых "фокусов" с оператором [] там нет. Видимо особое изумление ув. Antonio вызвали такие формы записи: 1. Foo*& operator[](int); 2. const String& operator[](const String&); 3. struct Index { Index(int, int); } Foo& operator[] (Index); У тех, кто читал Страуструпа, проблем с этим нет. Однако напомню, что вопрос был о возможности записи вида Arr[5,10]. А доступ к элементу вида Arr[Index(5, 10)] ничем не лучше (и причем длиннее), чем Arr(5, 10), предложенного одним из экспертов. При большом желании можно писать и так: #include #include #include using namespace std; struct X { X(int i1): m_vec(1,i1) {} X&
operator , (int i) { m_vec.push_back( i ); return *this; } vector m_vec; }; class Y { public: int operator[](const X& i) { copy(i.m_vec.begin(), i.m_vec.end(), ostream_iterator(cout, " ")); cout << endl; return 0; } }; int main(int argc, char* argv[]) { Y y1; y1[X(3),9]; y1[X(1),2,3]; return 0; } Так что, ПОЗОР ТЕМ, КТО НЕ ПЕРЕЧИТЫВАЕТ НА НОЧЬ ВСЕ ТРИ ИЗДАНИЯ СТРАУСТРУПА!!! ПОЗОР ТЕМ, КТО С УТРА НЕ ШТУДИРУЕТ СТАНДАРТ ISO/IEC 14882!!! С уважением, Avl2k. P.S. Извините, наболело :)))
Ответ отправлен: 13.05.2003, 12:18 Отправитель: Avl2k Отвечает BOLT
Добрый день, Antonio! Раз ты такой умный, чего тогда не становишся экспертом?Нам такие люди нужны, а покритиковать, так и любой горазд на такое дело!Вот если помогать другим, то нееееет - это нам некогда!....Ладно не парься лучше чем орать, просто поправь и дело с концами.Счастливо! Ответ отправлен: 12.05.2003, 21:40 Отправитель: BOLT Отвечает xiron
Добрый день, Antonio! Попросил бы не обобщать ! И не делать довоты единичными случаями Ответ отправлен: 13.05.2003, 16:57 Отправитель: xiron
Вопрос № 763
Здравствуте ув. эксперты? Возникла проблема следующего плана. Нужно найти на диске все файлы с расширением *.txt. Как это реализовать?
Доброе время суток, m0v8lack! А findfirst(), findnext() на что?
Ответ отправлен: 13.05.2003, 12:29 Отправитель: Knignick Отвечает vitya
Здравствуйте, m0v8lack! А под дос или под виндовс или под юникс? В любом случае алгоритм одинаков: есть функции FindFirst и FindNext - для конкретной оси смотри конкретные названия. Потом пишешь рекурсивную функцию, которая для директории, которая ей переданна, как параметр - вызывает voif f(char * dir) { bool morefiles = FindFirst(dir); stuct foundfile ff; while (morefiles) { morefiles = findnext(ff); if (is_dir(ff)) { f(ff.dir); } else { //находишь расширение, если txt то печатаешь, добавляешь, делаешь, что душе угодно. } } } вот и все :) Ответ отправлен: 13.05.2003, 08:41 Отправитель: vitya Отвечает baldr
Доброе время суток, m0v8lack! Делаешь из корневого каталога рекурсивно поиск с помощью FindFirst и FindNext - ищешь каталоги. Находишь каталог - переходишь на него и опять ищешь. Как только очередной каталог не находишь - ищешь файлы по маске *.txt, а найденое запоминаешь. Затем выходишь из текущего каталога обратно (по рекурсии - backtracking) и опять ищешь каталог, заходишь... В общем, будет у тебя функция, которая ищет каталоги в текущем и если находит очередной - вызывает сама себя. Если не находит - ищет файлы и возвращается в предыдущий каталог... Ответ отправлен: 13.05.2003, 08:20 Отправитель: baldr Отвечает akul
Добрый день, m0v8lack! Гы, а какая операционная система? если Win32, то FindFirstFile, FindNextFile, FindClose помогут. Если Dos, то через int21 там что-то есть, посмотри в мурзилке. Давно не писал, не помню уже. Ответ отправлен: 13.05.2003, 10:38 Отправитель: akul Отвечает Ramzes
Добрый день, m0v8lack! В MFC есть класс CFileFind. Вот его-то и используй Ответ отправлен: 13.05.2003, 14:07 Отправитель: Ramzes Отвечает BOLT
Доброе время суток, m0v8lack! Все просто как наш мир :-) Используем заголовочный файл: "dir.h" Функции: 1) int findfirst(const char *pathname, struct ffblk *ffblk, int attrib); 2) int findnext(struct ffblk *ffblk ); Надеюсь дальше ты сам справишься, если нет, тогда попроси-в следующе рассылки напишу тебе функцию поиска по заданной маске файла. Ответ отправлен: 14.05.2003, 16:20 Отправитель: BOLT
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.