CreateSolidBrush и сообщения окон

Тема в разделе "WASM.BEGINNERS", создана пользователем kernel16, 22 ноя 2011.

  1. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    здравствуйте, интересует такой вопрос, сегодня помогал одному человеку исправлять ошибки в его коде, суть ошибки в том, что после нескольких(штук 100) WM_COMMAND от кнопки перестало приходить сообщение WM_COMMAND. на этом месседже была утечка памяти в 2 кб за 1 клик(по кнопке кликали). так вот, попутно стал разбирать ту ошибку и обнаружил, что там каждый раз вызывается CreateSolidBrush для создания кисти, которая будет красить кнопку(WM_CTLCOLORBTN), по которой кликали без освобождения предыдущей кисти . так вот, почему эта утечка повлияла на подсистему сообщений? я всегда думал, что они не связаны...
    эдд: когда я сказал исправить ту ошибку, он мне сказал, что всё заработало и, я и дальше не стал продолжать
     
  2. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    kernel16, создавайте вначале нужное кол-во брашей и потом при прорисовке нужую возвращайте. В GDi хендлах под них память то выделяется.
     
  3. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    это не мой код и за других переделывать мне за фри неохота(тем более там и соккет и окна и -и... всё в одной куче)
    1) там, вроде, перестали приходить сообщения . если после всех операций главному окну на время снять флаг вс_визуал, то после повторного показа окна дочерние кнопки не перерисовываются и от них не приходят сообщения, хотя по моей логике всё должно кое-как, но работать.
     
  4. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Ну тогда идите в сад, потом в огород ;)
     
  5. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    в смысле, разве "рисование" в контексте устройства и сообщения окон связаны ? там же , вроде, особой перегрузки не было.
     
  6. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    Код (Text):
    1.         format pe GUI
    2.         include '%fasm%\include\win32ax.inc'
    3.        
    4. .code
    5. start:
    6. @@: invoke CreateSolidBrush, 0
    7.     invoke Sleep, 1
    8.     jmp @b
    9. .end start