![]() |
|
|
![]()
|
|
| BBC |
|
|||
|
Unregistered |
Подскажите, если не лень! В CView перерисовка окна после, например, минимизации осуществляется в OnDraw() а в CDialog где???
|
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
OnPaint - перерисовка любого окна.
Прост В MFC когда приходить собщение WM_PAINT делается кое-что и вызывается OnDraw. Если нужно обработать изменение размеров окна обрабатывай сообщение WM_SIZE. Я правильно поняла вопрос ??? -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Спасибо за подсказку, проблема вот вчем:
устанавливаю иконку на контрол HICON HicRing=AfxGetApp()->LoadIcon("Ring"); CWnd*Wnd=AfxGetMainWnd()->GetDlgItem(IDC_ANIMATE); CDC *pDC=Wnd->GetDC(); pDC->DrawIcon(0, 0,HicRing ); Wnd->ReleaseDC(pDC); pDC->DeleteDC(); окно свернул, иконка исчезла Устанавливать ее в OnPaint() ? И почему не работает SetIcon(HicRing, TRUE); ? |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 1 Всего: 44 |
А я не вижу сдесь SetIcon?
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Coocky |
|
||||||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
В первый раз слышу Вообще ты все делаешь через CDC.А с диалогом это только OnPaint прокатывает.Так как сказала Настя,
Даже если ты его свернешь,закроешь другим -всегда будет перерисовка. Ты или рисуй все в OnPaint(),или пользуйся методами класса,которые присоединяют иконку или изображение -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
||||||
|
|||||||
| Guest |
|
|||
|
Unregistered |
Я имел в виду вместо
/*CDC *pDC=Wnd->GetDC(); pDC->DrawIcon(0, 0,HicRing ); Wnd->ReleaseDC(pDC); pDC->DeleteDC();*/ HICON HicRing=AfxGetApp()->LoadIcon("Ring"); CWnd*Wnd=AfxGetMainWnd()->GetDlgItem(IDC_ANIMATE); Wnd->SetIcon(HicRing, TRUE); - не работает!!! Я переодически меняю иконки в IDC_ANIMATE. При сворачивании окна они исчезают. В OnPaint() их установку дублировать? Я пробывал - работает, но по моему с точки зрения MFC это не совсем правильно. Как это предлагает делать МелкоСофт? |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Насколько я понимаю это ID элемента,относящегося к классу СStatic? А ну ка попробуй сделать это с кнопочкой CButton*Wnd=(CButton*)GetDlgItem(MY_BUTTON); Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), TRUE); - Только кнопку не забудь создать -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Вообще то у меня IDC_ANIMATE - не StaticText а Picture, хотя со StaticText не работает тоже.
С кнопочкой проблем ни когда не было, только ей стиль Icon нельзя забывать ставить CButton*Wnd=(CButton*)GetDlgItem(MY_BUTTON); Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), TRUE);--работает, а CWnd*Wnd=(CWnd*)GetDlgItem(IDC_ANIMATE); Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), TRUE);-- не работает!!! |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
Дай мне время,ОК?Дам готовое...
-------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Ну так почему же не работает
CWnd*Wnd=(CWnd*)GetDlgItem(IDC_ANIMATE); Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), TRUE);???? |
|||
|
||||
| knave |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: нет Всего: 5 |
Вью перерисовывать лучше всего в WM_ERASEBKGND - или чтото в этом духе.
Тогда нет никаких посторонних эффектов. Это сообщение отредактировал(а) knave - 29.3.2005, 17:18 -------------------- С наилучшими пожеланиями !!! |
|||
|
||||
| Lion |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 25.3.2002 Репутация: 2 Всего: 2 |
А так:
У меня иконки при минимизации не исчезают. |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 2 Всего: 25 |
главное правильно задать вопрос.... а впоросов два 1. работает или нет? 2. елси работает то почему не вижу... чето на философию потянуло... короче, СWND устанавливает иконку и отображает ее на титле в левом углу если подходит формат т.е. нужно поставить false Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), false); и если у этого окна есть титл то иконка измениться..... сетикон работает всегда для всех производных от внд, вопрос в тому куда производный внд ее выводит.... -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| BBC |
|
|||
|
Unregistered |
Сформулирую вопрос убого.
Как поставить иконку в необходимом мне месте диалогового окна. Только при ответах читайте, что я уже делал выше, что бы не повторяться. Step : Wnd->SetIcon(AfxGetApp()->LoadIcon("Ring"), false); //естественно пробовал, иконка не отображается Lion : HICON hIcon=::AfxGetApp()->LoadIcon(IDI_ICON2); CStatic *pStat=(CStatic *)GetDlgItem(ID_MY_ICON); pStat->SetIcon(hIcon); // Это я тоже пробовал еще до вопроса в форуме. А у вас работает? А вот код: /*HICON HicRing=AfxGetApp()->LoadIcon("Ring"); CWnd*Wnd=AfxGetMainWnd()->GetDlgItem(IDC_ANIMATE); CDC *pDC=Wnd->GetDC(); pDC->DrawIcon(0, 0,HicRing ); Wnd->ReleaseDC(pDC); pDC->DeleteDC();*/ иконку отображает, но при сворачивании окна она исчезает. Как правильно ее установить с точки зрения MFC ? DrawIcon() в OnDraw() ? Кстати, SetIcon() возвращает не 0, а иконки не видно. |
|||
|
||||
| Coocky |
|
|||
![]() GUI гуру ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2879 Регистрация: 16.2.2004 Где: Украина. Запорожь е Репутация: 25 Всего: 62 |
При любой перерисовке окна вызывается OnPaint,в WM_PAINT.Так что там рисуй -------------------- Верю в смерть после жизни, в любовь после секса ,в крем после бритья |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |