|
|
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
win32api vs2005sp1 dll в dll - библиотеке зарегистрил новый класс, дальше делаю на его основе SDI окно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. у которого должен быть заголовок "Window Title". Окно прекрасно создается, все ок, кроме того, что у него текста в заголовке и значка (вместо него выводится стандартный IDI_APPLICATION), хотя на taskbar'е значек есть, но текста тоже нет. Что не так? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 19:15:46 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
Cerebrum...него нет текста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 19:17:41 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > > у которого должен быть заголовок "Window Title". Окно прекрасно > создается, все ок, кроме того, что у него текста в заголовке и значка > (вместо него выводится стандартный IDI_APPLICATION), хотя на taskbar'е > значек есть, но текста тоже нет. Да тут вроде все в порядке. Непонятно, почему явно написано WS_OVERLAPPEDWINDOW - видимо подразумевается cs.style? А как на самом деле? Можно еще посмотреть на оконную функцию, на предмет правильной обработки WM_GETTEXT, WM_CREATE, WM_NCCREATE и т.п. Насчет иконки нужно RegisterClass смотреть - она там регистрируется. Если WNDCLASS.hIcon == NULL, то рисуется стандартная. Еще очень интересно выглядит Код: plaintext устанавливается WindowProc. Можно предположить, что если CreateWindowEx отвалит рано (например - не найдет класса), вернет NULL, WindowProc не вызовется то условие будет (NULL == NULL) - так и нужно? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 20:27:47 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
авторДа тут вроде все в порядке. Непонятно, почему явно написано WS_OVERLAPPEDWINDOW - видимо подразумевается cs.style? А как на самом деле? совершенно верно, просто я немного упростил вид, в силу того, что этот параметр я задаю не здесь, а в производном классе, но чтобы лишний раз людей не заморачивать и лишний код не постить решил вынести сразу.... авторМожно еще посмотреть на оконную функцию, на предмет правильной обработки WM_GETTEXT, WM_CREATE, WM_NCCREATE и т.п. да, конечно, GET_TEXT пока нет, а остальное выглядит так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. авторНасчет иконки нужно RegisterClass смотреть - она там регистрируется. Если WNDCLASS.hIcon == NULL, то рисуется стандартная. ладно с ней я разбирусь это мелочи, скорее всего я действительно передал NULL авторМожно предположить, что если CreateWindowEx отвалит рано (например - не найдет класса), вернет NULL, WindowProc не вызовется то условие будет (NULL == NULL) - так и нужно? вот за это особое мерси, я пока не допер что может быть так, ... блин надо было так лажануть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 20:50:27 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > > LRESULT MyWnd::OnNcCreate(HWND hWnd, LPCREATESTRUCT lpCreateStruct) > { > assert(::IsWindow(hWnd)); > assert(m_hWnd == NULL); > if (m_hWnd == NULL) > { > m_hWnd = hWnd; > if (::SetProp(m_hWnd, _MYPROP___0___, (HANDLE)this)) Тут нужно добавить вызов DefWindowProc(hWnd, WM_NCCREATE, 0, (LPARAM) lpCreateStruct); > return TRUE; Кстати, возможно и с иконкой поможет. К сожалению каких-то правил на эту тему не встречал, поэтому по умолчанию пересылаю в DefWindowProc все сообшения, кроме тех, в которых уверен, что пересылать *не* нужно. Наподобие WM_PAINT, WM_CREATE, WM_CLOSE, WM_QUERYENDSESSION, и т.п. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 22:21:48 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
заработало, большущее спасибо!! и в самом деле интересно какие же из сообщений нужно возвращать в DefWindowProc, ведь в MSDN написано, что WM_NCCREATE должна возвратить TRUE или FALSE, кому верить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 23:13:19 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
устанавливаю иконку следующим способом Код: plaintext 1. 2. 3. 4. 5. в главном обработчике окна сообщение уходит в DefWindowProc help! thanks again ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 13:13:33 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > устанавливаю иконку следующим способом > > HICON MyWnd::SetIcon(HICON hIcon, bool bLargeIcon) const > { > assert(m_hWnd); > return (HICON)::SendMessage(m_hWnd, WM_SETICON, bLargeIcon ? ICON_BIG : ICON_SMALL, (LPARAM)hIcon); > } > > иконка устанавливается, но с точностью до наоборот, т.е. прописываю > bLargeIcon = true, ставиться маленькая, уже, честно говоря, даже не знаю > у кого глюки, толи у меня, толи у microsoft... хотя первое более вероятно :) > Да вроде у MS все работает. А точно инверсное поведение? Если в приложении отдельно не установлена маленькая иконка, то большая используется и при переключении задач и при отрисовке окна - то есть, если установить большую, и маленькая не установлена, то меняются обе. Если все-таки инверсия - может хендлы иконок инвертируются? Нужно еще проверить соответствие названия иконки и ее содержимое (например, маленькая иконка по ошибке названа BIGICON). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 15:01:32 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
teras Да вроде у MS все работает. А точно инверсное поведение? Если в приложении отдельно не установлена маленькая иконка, то большая используется и при переключении задач и при отрисовке окна - то есть, если установить большую, и маленькая не установлена, то меняются обе. Если все-таки инверсия - может хендлы иконок инвертируются? Нужно еще проверить соответствие названия иконки и ее содержимое (например, маленькая иконка по ошибке названа BIGICON). Posted via ActualForum NNTP Server 1.4 да поведение инверсное, пробовал ставить флаг bLargeIcon = true - показывает маленькую. Если иконку не грузить (имя icon1.ico, подключена в ресурсы проекта и содержит 2-е 4 битные иконки: 16х16 и 32х32) через SetIcon, то в заголовке будет IDI_APPLICATION, как и определено при регистрации класса, а в таскбаре маленькая из icon1.ico ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 16:32:06 |
|
||
|
куда делась надпись
|
|||
|---|---|---|---|
|
#18+
Cerebrum wrote: > > да поведение инверсное, пробовал ставить флаг bLargeIcon = true - > показывает маленькую. Если иконку не грузить (имя icon1.ico, подключена > в ресурсы проекта и содержит 2-е 4 битные иконки: 16х16 и 32х32) через > SetIcon, то в заголовке будет IDI_APPLICATION, как и определено при > регистрации класса, а в таскбаре маленькая из icon1.ico > Не знаю, не приходилось с таким сталкиваться (кроме как в дельфи, но там отдельная песня), и добиться не удалось. Taskbar, насколько я понимаю всегда показывает small icon, если она установлен, и big icon, если маленькой нет. Есть одно замечание - big icon, насколько я понимаю, предназначена для показа в списке задач, который появляется при нажатии клавиш ALT-TAB, а не на taskbar. На как taskbar работает со всем этим на самом деле, я информации не нашел. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 18:28:01 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=268&tid=2027832]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
68ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 323ms |

| 0 / 0 |
