|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 8, 2004 05:08:20 Как правильно установить иконку окну? Так: (хотя есть мнение что маленькая иконка в этом случае не будет загружена, но ведь работает и маленькая иконка устанавливается в заголовок окна как положено!) invoke LoadIcon, hInstance, 400 invoke PostMessage, hWnd, WM_SETICON, ICON_BIG, eax Или так: invoke LoadIcon,hInstance,400 invoke PostMessage,hDlg,WM_SETICON,ICON_BIG,eax invoke LoadImage,hInstance,400,IMAGE_ICON,16,16,0 invoke PostMessage,hDlg,WM_SETICON,ICON_SMALL,eax Или так: invoke LoadIcon, hInstance, 400 mov hIcon, eax invoke SendMessage, hDlg, WM_SETICON, ICON_SMALL, eax invoke SendMessage, hDlg, WM_SETICON, ICON_BIG, hIcon Другие варианты?? |
|
|
Дата: Июл 8, 2004 07:19:56 Другие варианты?? У Рихтера в "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" используется последний вариант. |
|
|
Дата: Июл 8, 2004 14:43:55 Судя по MSDN, правильный второй вариант: The LoadIcon() function loads the large icon member of an icon resource. To load the small icon, use the new LoadImage() function as follows: LoadImage( hInstance, MAKEINTRESOURCE(<icon identifier>), IMAGE_ICON, 16, 16, 0); |
|
|
Дата: Июл 8, 2004 15:45:11 > Судя по MSDN, правильный второй вариант У меня такое ощущение что Windows лучше MSDN'а знает что и как ей грузить, и грузит маленькую иконку и большую правильно даже в первом варианте =) Второй вопрос тут напрашивается такой, какую функцию использовать SendMessage или PostMessage, что есть правильнее? |
|
|
Дата: Июл 8, 2004 17:33:37 Теоритически лучше PostMessage, т.к. момент в который иконка появится не имеет значения (юзер всё равно не заметит), а сообщение будет выбрано из очереди в правильном (с точки зрения системы) порядке. Но я в своей практике замечал, что PostMessage иногда как-то странно работает. Но всё равно, в данном случае, лучше PostMessage. ЗЫ: Если иконки запихнуты в *.ico правильно, то всё будет ОК. Например, ХР выберет полноцветные иконки вместо 256-цветных, если они там есть. |
|
|
Дата: Июл 8, 2004 20:18:15 Four-F Ага, глянул я твой MaskedEdit.asm, сам то ты делаешь по первому варианту но только с SendMessage ;-) > т.к. момент в который иконка появится не имеет значения (юзер всё равно не заметит) Заметит :-), иногда, при первом старте приложения(от момента загрузки винды) иконка появляется буквально на глазах, при последующих рестартах всё нормально :-) |
|
|
Дата: Июл 9, 2004 02:17:54 q_q > У Рихтера в "Создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows" используется последний вариант. В каком месте книги или в каком из исходников? Хотел глянуть... |
|
|
Дата: Июл 9, 2004 03:55:37 Asterix Рихтер Дж. Windows для профессионалов: создание эффективных WIN32-приложений с учетом специфики 64-разрядной версии Windows/Пер. с англ. - 4-е изд. - СПб: Питер; М.:Издательско-торговый дом "Русская редакция", 2001. - 752с.: ил. Cтр. 707 или на прилагаемом CD файл CmnHdr.h inline void chSETDLGICONS(HWND hwnd, int idi) {
SendMessage(hwnd, WM_SETICON, TRUE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
SendMessage(hwnd, WM_SETICON, FALSE, (LPARAM)
LoadIcon((HINSTANCE) GetWindowLongPtr(hwnd, GWLP_HINSTANCE),
MAKEINTRESOURCE(idi)));
} |
|
|
Дата: Июл 9, 2004 04:19:32 [ Asterix: ...сам то ты делаешь по первому варианту но только с SendMessage ;-) ] Ага :) Я просто так глубоко не задумывался об этом. Если заметно, говоришь, то юзай SendMessage и дело с концом. И хрен то с ним, как там у Рихтера ;) |
|
|
Дата: Июл 9, 2004 05:32:55 q_q Спасибо, теперь нашёл, правда у меня Рихтер в chm ;-) Four-F > Я просто так глубоко не задумывался об этом. Я наверно слишком "докапистый", то бишь люблю докопаться до истины ;-) Пытался подсмотреть у MS, но что-то нигде не встретилось в похожем варианте.. :-) |
|
|
Дата: Июл 11, 2004 14:56:55 >и грузит маленькую иконку и большую правильно даже в первом варианте =) Не грузит он её правильно. Иконка 32х32 загруженная первым вариантом, и отображаемая в таскбаре как small icon, искажается от масштабирования гораздо сильнее, чем загруженная вторым вариантом. |
|
|
Дата: Июл 11, 2004 15:41:13 · Поправил: Asterix cresta Дык нужно чтоб в .ico было две иконки 32x32 и 16x16. |
|
|
Дата: Июл 11, 2004 17:18:21 Asterix Всё правильно, просто из логики вопроса я понял, что иконка всего одна. В этом случае второй вариант лучше. Если иконок - две,спору нет, работает одинаково :) |
|
|
Дата: Июл 11, 2004 19:39:54 cresta > Если иконок - две,спору нет, работает одинаково :) А если четыре или более? ;-) |
|
|
Дата: Июл 11, 2004 21:49:51 >А если четыре или более? ;-) Не пробовал, надо поглядеть |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051 |