| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Как прятать-открывать окно-календарь CMonthCalCtrl |
| Автор: torero 12.4.2008, 16:33 |
| Я хочу сделать так, чтобы календарь CMonthCalCtrl не висел постоянно в окне "вид", а появлялся бы и исчезал при нажатии кнопки Button и сделал так: CMonthCalCtrl month; month.Create(WS_CHILD | WS_DISABLED | WS_BORDER,rect,this,ID_MONTH)); // стиль WS_DISABLED, при создании календарь не виден. нажимаю кнопку: month.SetWindowPos(&wndTop,10,35,170,160,SWP_SHOWWINDOW); month.SetFocus(); // календарь появился Но фокуса у него нет, числа не выбирает, даже при использовании month.SetFocus(); Если же сразу создать календарь видимым, стиль WS_VISIBLE , то работает всё правильно и month.SetFocus(); не нужен. 1. Как сделать календарь активным? 2. Стиль WS_OVERLAPPED тоже не действует в моём случае, т.е, если на месте появления календаря уже был текст или контрол, то они не закрываются. Как сделать, чтобы month перекрывал их? |
| Автор: Andrey44 14.4.2008, 10:11 |
| Зачем стиль WS_DISABLED - ты же сам делаешь его не активным // стиль WS_DISABLED, при создании календарь не виден------------------НЕ НАДО ПРОСТО НЕ СТАВЬ WS_VISIBLE |
| Автор: torero 15.4.2008, 12:10 |
| C этим всё получилось, спасибо. Но, если можно, ещё один вопрос. Я разбираюсь с контролами и вот создаю в окне "вид" ListBox и ComboBox: CListBox m_list1; m_list1.Creatе(WS_CHILD | WS_BORDER | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL,rect,this,ID_LIST1); Так вот вертикальный скроллинг появляется, если записываю строки и их количество больше, чем допускает размер окна по вертикали. А горизонтальный скроллинг не появляется, если длина строк больше, чем ширина окна. То же самое у меня было, когда я создавал ListBox и ComboBox в диалоговом окне и стили задавал в ресурсах. Что у меня неправильно? |
| Автор: torero 16.4.2008, 11:00 |
| Увидел в MSDN нужный метод и всё получилось. Спасибо. |