|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 10, 2004 14:47:53 При установке иконки в Status Bar'е с помощью сообщения SB_SETICON возникают проблемы - иконка раздувается до размера 32x32, при этом сама иконка хранится в ресурсах и имеет размер 16x16. Вот текст написанной мною процедуры: SetStatusIcon proc @hStatus:HWND,@ID:DWORD invoke LoadIcon,APP.hInstance,@ID invoke SendMessage,@hStatus,SB_SETICON,0,eax ret SetStatusIcon endp Существует ли способ правильно вписать иконку в Status Bar стандартными средствами без сабклассинга и OWNERDRAWN элементов? Ведь эксплорер это как то делает. |
|
|
Дата: Янв 10, 2004 15:06:32 А что, эксплорер не через OWNERDRAWN делает? И почему нельзя OWNERDRAWN использовать - это пара строчек кода. |
|
|
Дата: Янв 10, 2004 15:23:36 · Поправил: Julius Это отнудь не пара строк кода. Ведь необходимо чтобы в соответствующей части Status Bar'а отображалась не только икнока, но также и текстовые сообщения - все это придется отрисовывать вручную (конечно это не 100 строк, но все же и не пара уж точно). Иконки вставлять в Status Bar позволяет только библиотека comctl32.dll v4.71 и выше, поставляемая с эксплорером (если речь идет о Win95 - в ней устаревшая версия), значит поидее и обновленный Status Bar в ней должен такие вещи должен сам делать. Но, это мое мнение если, я ошибаюсь буду рад узнать об этом. С другой стороны зачем было бы делать сообщение SB_SETICON, если оно не правильно отображает иконки. Наверное, я просто что то не так делаю. |
|
|
Дата: Янв 10, 2004 15:31:48 Julius Какого размера твой statusbar? |
|
|
Дата: Янв 10, 2004 15:38:21 · Поправил: Julius Размер в высоту тот который сосздается по умолчанию. 23 или 24 пикселя кажется, вместе в Borders |
|
|
Дата: Янв 10, 2004 15:48:50 Julius Попробуй так: SetStatusIcon proc @hStatus:HWND, @ID:DWORD invoke LoadImage, APP.hInstance, @ID, IMAGE_ICON, 16, 16, 0 invoke SendMessage,@hStatus,SB_SETICON,0,eax ret SetStatusIcon endp |
|
|
Дата: Янв 10, 2004 15:52:32 Круто. Огромное спасибо!!! Все заработало.-)) |
|
|
Дата: Янв 10, 2004 15:58:01 Ну - пара это упрощенно, отрисовать текст это DrawText, нарисовать что-то ImageList_Draw. Вот и есть пара :) С ownerdraw все очень гибко можно сделать. |
|
|
Дата: Янв 10, 2004 15:58:10 Julius иконка хранится в ресурсах и имеет размер 16x16 Afaik должно работать даже если в ресурсах будет 32x32. |
|
|
Дата: Янв 10, 2004 20:19:15 Хм, а у меня глюки. Может быть подскажете. Я создаю диалог и: invoke CreateStatusWindow,WS_CHILD or WS_VISIBLE or \ SBS_SIZEGRIP,0, hWnd, 200 mov hStatus, eax invoke LoadImage, hInstance, 104, IMAGE_ICON, 16, 16, 0 invoke SendMessage,hStatus,SB_SETICON,0,eax Но не компилируется... Говорит, что SB_SETICON - неизвестно что! Я и сам в справке по Борланду не нашёл его. Не подскажите что такое? |
|
|
Дата: Янв 10, 2004 21:29:48 SB_SETICON WM_USER+15 |
|
|
Дата: Янв 10, 2004 22:42:52 · Поправил: 1990 В смысле: SB_SETICON equ WM_USER+15 да? ИЛИ я что-то не понял. Но в любом случае, даже еали я просто пихаю WM_USER+15 - результат нулевой. Иконка в статус баре не отображается. Может это потому, что я использую диалог, а не CreateWindow? Или что-то ещё. Исправился ;) |
|
|
Дата: Янв 10, 2004 23:01:01 В программе Styles показано как установить иконку в статус бар. |
|
|
Дата: Янв 11, 2004 05:50:11 |
|
|
Дата: Янв 11, 2004 11:08:42 Приношу извинения! q_q Описался - в статус баре. Бывает ;) Спасибо за пример! |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.092 |