|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
Ну, т.е. я не хочу, чтоб в заголовке формы отображалась иконка: Код: vbnet 1. 2. 3.
Существенно здесь наверное Icon = (None) Но на Вистах в этом случае возникает проблема с отображением иконки в Alt+Tab (2 картинки слева). Я могу сделать при загрузке формы Код: vbnet 1.
И это восстановит иконку в Alt+TAB, но при этом добавит иконку на саму форму (2 картинки справа). Желаемый вариант: комбинация левой верхней и правой нижней картинки. Ниже код ф-ции SetIcon: Код: vbnet 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.
bSetAsAppIcon - применять бесполезно - к делу не относится Если не делать Код: vbnet 1.
то все равно hIconLarge сконвертируется в 16х16 и добавится в шапку. Единственное, что можно сделать - использовать в качестве hIconSmall пустую прозрачную иконку, но в этом случае текст заголовка формы все равно сдвинется на ее размеры- некрасиво. Обман с попыткой подтасовать размер hIconSmall (например сделать cx=1 пиксель) не проходит - все равно пустое место будет иметь размер соотв. 16х16. Т.е. это БАГ Виста-виндов о чем кто-то говорит в разделе о WM_SETICON в msdn? Или как-то можно порешить? Если порешить нельзя, то скорее всего оставлю текущий вариант как на картинках слева. Но все же? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 18:27 |
|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
Тест проект вложил на всякий случай. Код: vbnet 1.
Эта строчка позволяет поиграться. В 101-м ресурсе содержится 16х16 и 32х32 -после преобразование через ResHacker соотв. добавляются 32-битные версии иконок, но для тестов думаю достаточно 256-цветных. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 18:31 |
|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
если поменять Fixed Dialog на ToolWindow, то будет то что я хочу. Но вид шапки в целом и крестика в частности меня в этом случае никак не устраивает. Мне нужна именно комбинация левой верхней и правой нижней картинки. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 22:08 |
|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
Можно еще убрать ControlBox, но тогда крестика не будет вообще, а это меня не устраивает. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 22:09 |
|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
Если просабклассить форму? М.б. можно отменить какое сообщение. Знать бы какое??? WM_SETICON всегда добавляет 1) иконку в заголовок формы 2) иконку для Alt-tab Причем 1) неважно есть ли там обе 16х16 и 32х32 (или только одна из них) 2) неважно посылаю я ICON_BIG и ICON_SMALL оба (или только одно из них) Хотя бы один из размеров (16х16 и 32х32 ) и хотя бы одно сообщение (ICON_BIG или ICON_SMALL) всегда добавляет иконку и в заголовок и в Alt-Tab. А в размер эта сволочь всегда форматирует как умеет. А надо: 1) иконку в заголовок формы =НЕТ 2) иконку для Alt-tab =ДА И как эту сволочь обмануть я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2013, 23:00 |
|
Форма без иконки в шапке, но при этом чтоб иконка в Alt+Tab на Вистах
|
|||
---|---|---|---|
#18+
Дмитрий77И как эту сволочь обмануть я не знаю. Теперь знаю. Не надо делать WM_SETICON. Надо вешать лапшу на уши в WM_GETICON message Sent to a window to retrieve a handle to the large or small icon associated with a window. The system displays the large icon in the ALT+TAB dialog, and the small icon in the window caption. wParam The type of icon being retrieved. This parameter can be one of the following values. Value Meaning ICON_BIG 1 Retrieve the large icon for the window. ICON_SMALL 0 Retrieve the small icon for the window. ICON_SMALL2 2 Retrieves the small icon provided by the application. If the application does not provide one, the system uses the system-generated icon for that window. When an application receives this message, it can return a handle to a large or small icon, or pass the message to DefWindowProc. Винды делают буквально следующее. Для показа в Alt-TAB на Виста и выше: 1) хотят узнать ICON_BIG (32х32), если есть то ее и показывают 2) если нет хотят узнать ICON_SMALL(16х16), если есть то калякают из нее 32х32 и это показывают 3) если нет то показывают системную иконку, которая мне и не понравилась . ICON_SMALL2 винды здесь не интересуются (вообще это баг). Для показа в TaskBar: 1) хотят узнать ICON_SMALL(16х16), если есть то ее и показывают 2) если нет хотят узнать ICON_BIG (32х32), если есть то калякают из нее 16х16 и это показывают 3) если нет то хотят узнать ICON_SMALL2 (иконка exe-шника а не формы), ее и показывают. ===================== Из осознания следует решение вносящее ясность и исключающее неоднозначность. При загрузке формы делаем 2 иконки: Код: vbnet 1. 2. 3. 4. 5.
Сабклассим форму и при получении WM_GETICON возвращаем именно то что хотим увидеть. По тому как по умолчанию ICON_SMALL и ICON_BIG не установлены (иначе будет иконка в шапке), и Винды начинают "вольничать". Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2013, 01:26 |
|
|
start [/forum/topic.php?fid=60&fpage=56&tid=2156889]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 146ms |
0 / 0 |