Вопрос № 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 включен для всех статиков