| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Как наложить BITMAP на кнопку |
| Автор: coach 28.8.2006, 22:30 |
| Есть кнопка, созданная через CreateWindow() как можно наложить на эту кнопку BITMAP |
| Автор: chozen 28.8.2006, 23:27 |
| Ну, что ж: - получаем DC кнопеля - создаем tagPAINTSTRUCT - создаем CreateCompatibleDC к DC кнопки, CreateCompatibleBitmap к DC кнопеля - заполняем структуру BITMAPINFO - далее SetDIBits и SelectObject к компатибл dc Кароч, щас не могу найти так быстро исходник... Надо, напиши, поИСЧУ! |
| Автор: GremlinProg 28.8.2006, 23:30 |
| http://forum.vingrad.ru/index.php?showtopic=75779 |
| Автор: RDN_ResidentS 26.12.2006, 15:45 | ||
Пожалуйста найди исходник и выложи... ОК? Очень нужен!!! И еще кто знает как наложить BITMAP на кнопку, пожалуйста опишите алгоритм создания. Р.S. пожалуйста напишите алгоритм нормальным языком без фени... и прочих выражений, на языке С++. |
| Автор: Aleksandor 26.12.2006, 22:17 | ||
В смысле background сделать для кнопки? Или рисовать всю кнопку самому? |
| Автор: RDN_ResidentS 27.12.2006, 22:26 | ||||
Напиши и как background сделать для кнопки, и как рисовать всю кнопку самому. Пожалуйста, очень надо! |
| Автор: Aleksandor 27.12.2006, 22:58 | ||
| Ну если самому рисовать то OWNERDRAW примерно так создаешь кнопку (кнопка это тоже окно) hwndButton1 = CreateWindow("BUTTON","", WS_CHILD | BS_OWNERDRAW, 5, rcRebar.bottom+3, 55, 8, hWnd, (HMENU) ID_BUTTON1, hInst, NULL); загружаешь для нее битмапы (нажатая, отпущена) hbmClose = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP19)); hbmCloseA = LoadBitmap( hInst, MAKEINTRESOURCE(IDB_BITMAP20)); обрабатываешь сообщения WM_DRAWITEM
Ну еще приходится сабклассить кнопки чтобы обрабатывать переключение фокуса и табуляции, у штатных это все включено. Кроме того стили XP не поддерживаются. В общем мороки много Насчет бакграунда проще но не могу сейчас писать, может завтра. |
| Автор: RDN_ResidentS 27.12.2006, 23:21 |
| Спасибо огромное Aleksandor!!!! |
| Автор: Kornev 1.5.2007, 18:46 |
| Александр, громаднейшее спасибо!!!!! только по моему в CreateWindow нужно ещё добавить | WS_VISIBLE По крайней мере у меня без єтого работать не стало. А остальное - СУПЕР Добавлено через 3 минуты и 5 секунд Подскажи пожалуйста, а как можно сделать чтоб кнопка ещё меняла свой вид, когда на неё наводишь курсор? |