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

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


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

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

Выпуск № 609
от 13.12.2006, 06:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 433, Экспертов: 52
В номере:Вопросов: 4, Ответов: 4


Вопрос № 65902: Добрый день Уважаемые эксперты. Вопрос может быть не совсем по теме. В MFC имеется класс CMonthCalCtrl отображающий календарный месяц или несколько месяцев в одном интерфейсном элементе. Вопрос: можно ли использовать его для множественного выбора...
Вопрос № 65982: Вопрос по Microsoft Visual C++ Хочу добавить в свой проект уже откомпилированый другой *.ехе файл как ресурс и потом при запуске основного файла должен запустится еще и тот который внутри него, тоесть тот который я добавил как ресурс. По...
Вопрос № 65985: Здравствуйте, помогите пожалуйста в решении задачи с файлами: Дан файл натуральных чисел f. Записать в файл g все простые числа из файла f в порядке убывания. Заранее благодарю!...
Вопрос № 66036: Доброго времени суток, такой вопрос, по MFC, есть перегруженый клас CStatic, при нажатии на него в перегруженом обработчеке клика надо присвоить переменной checColorSt значение, зная только айдишку екземпляров этого класа, как это сделать, и поч...

Вопрос № 65.902
Добрый день Уважаемые эксперты. Вопрос может быть не совсем по теме.
В MFC имеется класс CMonthCalCtrl отображающий календарный месяц или несколько месяцев в одном интерфейсном элементе. Вопрос: можно ли использовать его для множественного выбора дат (а так-же отображения дат выбранных программно) и если это возможно, то какие методы применяются? Приведите пример, если можно.
PS: Задача поставлена следующая: создать календарь знаменательных дат года (например праздников и дней рождения друзей) не вводя даты вручную.
Отправлен: 07.12.2006, 07:14
Вопрос задал: TomSoyer (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Sergey A. Wedensky
Здравствуйте, TomSoyer!

Насколько я знаю, множественное выделение в month calendar возможно
только в виде диапазона дат. Для этого необходимо добавить стиль
MCS_MULTISELECT, после чего можно установить максимальную длину
выделяемого диапазона методом SetMaxSelCount (сообщение
MCM_SETMAXSELCOUNT).

Но этого Вам, видимо, будет недостаточно.
Можно еще воспользоваться методом SetDayState(inr nMonths,
LPMONTHDAYSTATE pStates),
pStates - битовый массив, биты установленные в 1 будут отображать
соответствующие дни жирным шрифтом.
Либо установить стиль MCS_DAYSTATE, тогда контрол будет слать
MCN_GETDAYSTATE на каждый отображаемый день.
Ответ отправил: Sergey A. Wedensky (статус: 9-ый класс)
Ответ отправлен: 07.12.2006, 10:18
Оценка за ответ: 5
Комментарий оценки:
C подобным поведением этого элемента я уже столкнулся, т.е. выделяется диапазон дат, а не произвольные даты, как необходимо в задаче.


Вопрос № 65.982
Вопрос по Microsoft Visual C++

Хочу добавить в свой проект уже откомпилированый другой *.ехе файл как ресурс и потом при запуске основного файла должен запустится еще и тот который внутри него, тоесть тот который я добавил как ресурс.
Подскажите пожалуйста, какой функцией это можно реализовать, если можно поподробней, только начинаю програмировать на Си
Отправлен: 07.12.2006, 17:46
Вопрос задал: Visualss (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Sergey A. Wedensky
Здравствуйте, Visualss!
Как запихнуть бинарный файл в ресурс - это зависит от среды разработки, думаю, разберетесь.
А вот пример того, как его вытащить: ничего кроме сохранить в файл и запустить с диска в голову не приходит.

// Получаем хэндл Вашего процесса
HMODULE hModule = GetModuleHandle(0);
// Поиск нужного ресурса, имя и тип Вы задаете при его добавлении
HRSRC hRes = FindResource(hModule, "NAME", "TYPE");
// Размер ресурса
DWORD dwResSize = SizeofResource(hModule, hRes);
// Загружаем ресурс
HGLOBAL hData = LoadResource(hModule, hRes);
// Получаем доступ к данным ресурса
LPVOID pvData = LockResource(hData);
// Создаем временный файл
char pszTempName[MAX_PATH];
GetTempFileName(".", "", 0, pszTempName);
HANDLE hFile = CreateFile(pszTempName, GENERIC_WRITE, 0, 0,
CREATE_ALWAYS, 0, 0);
// Пишем в него содержимое ресурса
DWORD dwWritten = 0;
WriteFile(hFile, pvData, dwResSize, &dwWritten, 0);
CloseHandle(hFile);
// Запускаем процесс с диска
STARTUPINFO si;
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi;
CreateProcess(pszTempName, 0, 0, 0, FALSE, 0, 0, 0, &si, &pi);

Примерно так, в работе не проверял:) Надеюсь, поможет.
Ответ отправил: Sergey A. Wedensky (статус: 9-ый класс)
Ответ отправлен: 08.12.2006, 10:20


Вопрос № 65.985
Здравствуйте, помогите пожалуйста в решении задачи с файлами:

Дан файл натуральных чисел f. Записать в файл g все простые числа из файла f в порядке убывания.

Заранее благодарю!
Отправлен: 07.12.2006, 18:01
Вопрос задал: Bra (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Терсков Сергей
Здравствуйте, Bra!
Попробуй вот такой вариант

Входные данные:

1 12 13 17 18 19 32 123 21 2 6 7

Выходные данные:

19 17 13 7 2 1

Приложение:

Ответ отправил: Терсков Сергей (статус: 3-ий класс)
Ответ отправлен: 08.12.2006, 03:04


Вопрос № 66.036
Доброго времени суток, такой вопрос, по MFC, есть перегруженый клас CStatic, при нажатии на него в перегруженом обработчеке клика надо присвоить переменной
checColorSt значение, зная только айдишку екземпляров этого класа, как это сделать, и почему
GetDlgItem(id_button)->checColorSt=2;
не работает ? :(
в диалоге обявлен масив MStatic m_button[33];
ну например если нажму на m_button[5] то его перегруженый обработчик на клик должен поменять переменную checColorSt в m_button[18], как то так, пардон если неточно выражаюсь, просто сам уже запутался, зарание спасибо

Приложение:

Отправлен: 08.12.2006, 00:44
Вопрос задал: nazarini (статус: 1-ый класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Torsten
Здравствуйте, nazarini!
1) Убедись, что на всех твоих static controls есть стиль NOTIFY, если они у тебя в ресурсах, то просто через редактор установки этот стиль для всех static.
Если ты их создаешь динамически, через Create, то в параметр стиля передай флаг SS_NOTIFY.
Если этого не сделать, событие OnLButtonDown и прочие подобные сообщения никогда не будут получены.

2) Ты пишешь:
GetDlgItem(id_button)->checColorSt=2;
не работает ? :(

Потому что GetDltItem(id) ищет на окне, из которого вызвали эту функцию, окно с индентификатором id. Естественно на MyStatic его нет, так как они все на диалоге, насколько я понял из описания.
Поэтому нужно сделать так:
GetParent()->GetDlgItem(id_button)->checColorSt=2;
GetParent() в данном случае вернет CWnd * диалога, на котором находятся кнопки, а уже затем произойдет GetDlgItem(id), который найдет кнопку на диалоге с нужным id.

---------
#define MAGIC_NUMBER 0xdeface
Ответ отправил: Torsten (статус: 3-ий класс)
Ответ отправлен: 08.12.2006, 14:47
Оценка за ответ: 5
Комментарий оценки:
//Поставил
GetParent()->GetDlgItem(id_button)->checColorSt=2;
//всеравно ошибка
error C2039: 'checColorSt' : is not a member of 'CWnd'
Notyfy включен для всех статиков


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное