1 . Люди если в обычном окне нужно создать ещё несколько CHILD окон , то их прорисовкаой после создания и регистрации должна заниматься WinProc главного окна или же лучше создать свою оконную процедуру для дочерних.
Потому что очень сложная там прорисовка.На самом деле я создал уже отдельную процедуру, но идёт офигенная потеря памяти и в дальнейшем крах всего приложения. Ошибки вроде все исправил, может ли быть дело только в этом что у меня для дочерних окон своя процедура оконная.
2 . Кроме того я заметил что при вызове таких функций как CreateFontIndirect или CreateSolidBrush в WindowProc каждый раз выделяется память для созданных объектов, но по идее она должна освобождаться, привыходе из функции ведь объекты локальные. Или я чего то не понимаю.
:?: :?: :?: :?: :?: :?:
WindowProc и все все все
Модераторы: Duncon, Hawk, Romeo, Eugie
Насчет второго - ответ навскидку (и помоему решение проблемы краха проги):
а хэндлы закрывать не надо? Если не вызовешь DeleteObject для них, будут жить возвращаемые этими функциями описатели до конца проги. Это же в любой книге мусолиться по 10 раз! Та и в NSDN тоже.
а хэндлы закрывать не надо? Если не вызовешь DeleteObject для них, будут жить возвращаемые этими функциями описатели до конца проги. Это же в любой книге мусолиться по 10 раз! Та и в NSDN тоже.
Пасиба конечно но ничего нового я не узнал, то что весь мусор за собой убираю я даже и не вспоминал, так чтопроблема не в этом и мои
и подрузамевало то что крах не оттуда растёт, просто надоело всё уже проверил.Ошибки вроде все исправил
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Давно писал под GDI, но насколько я помню, там какой-то bizarre/bdsm/bukkake интерфейс. Функция SelectObject возвращает значение старого хендла, выбранного в контекст, и этот старый хендл надо сохранить. При очистке надо сначала выбрать в контекст старый хендл, а потом можно удалять хендл нового объекта.
т.е чего-то типа
т.е чего-то типа
Код: Выделить всё
HFONT hFont = CreateFontIndirect(...);
HFONT hOldFont = SelectObject(hdc,hFont);
... Рисуем...
SelectObject(hdc,hOldFont);
DeleteObject(hFont);
2B OR NOT(2B) = FF
Спасибо всем конечно, но дело было не в бобине...
Вот недавно методом тыка убирал куски кода и смотрел каким образом изменяется память, короче заметил что при вызове MoveWindow для дочерних окон происходит каждый раз новое выделение памяти. Может кто знает как с этим бороться.
Тогда ещё вопрос как при WM_SIZE изменить положение дочернего окна, но без помощи MoveWindow?
Вот недавно методом тыка убирал куски кода и смотрел каким образом изменяется память, короче заметил что при вызове MoveWindow для дочерних окон происходит каждый раз новое выделение памяти. Может кто знает как с этим бороться.
Тогда ещё вопрос как при WM_SIZE изменить положение дочернего окна, но без помощи MoveWindow?
Alezis, ты бы код привел своего обработчика WM_PAINT для дочернего окна.
Насчет чем подвигать - есть еще SetWindowPos. Но проблема-то у тебя с отрисовкой.
Насчет чем подвигать - есть еще SetWindowPos. Но проблема-то у тебя с отрисовкой.