|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Win32 API - Прозрачный STATIC текст |
|
Win32 API - Прозрачный STATIC текст
|
Новый участник Сообщения: 20 |
Профиль | Отправить PM | Цитировать Здраствуйте. Привожу сразу все исходные данные.
program test; {$R test.res} uses Windows, Messages, ShellAPI; const MAIN_DIALOG = 101; ABOUT_DIALOG = 102; MAIN_ABOUT = 104; ABOUT_CLOSE = 105; var Inst, HWND : integer; procedure AboutDlgInit; begin end; function AboutDlgProc(hWin, uMsg, wParam, lParam : Integer) : Integer; stdcall; begin Result := 0; case uMsg of WM_COMMAND : begin if wParam = ABOUT_CLOSE then EndDialog(hWin,0); if wParam = WM_COMMAND then EndDialog(hWin,0); end; WM_INITDIALOG : begin AboutDlgInit; end; WM_DESTROY : begin EndDialog(hWin,0); end; WM_CLOSE : begin EndDialog(hWin,0); end; end; end; procedure MainDlgInit; begin end; function MainDlgProc(hWin, uMsg, wParam, lParam : Integer) : Integer; stdcall; begin case uMsg of WM_COMMAND : begin if wParam = MAIN_ABOUT then DialogBoxParam(Inst, PChar(ABOUT_DIALOG), hWin, @AboutDlgProc, 0); if wParam = WM_COMMAND then EndDialog(hWin,0); end; WM_DESTROY : begin EndDialog(hWin,0); end; WM_CLOSE : begin EndDialog(hWin,0); end; end; end; begin Inst := hInstance; DialogBoxParam(Inst, PChar(MAIN_DIALOG), 0, @MainDlgProc, 0); end. |
|
Отправлено: 23:49, 17-07-2007 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Цитата Maksim V:
Например,можно скомпилировать такой ресурс: AboutBox DIALOGEX 15, 15, 130, 75 STYLE WS_VISIBLE + WS_POPUP + WS_CAPTION CAPTION "About SDInterruptionEx..." FONT 11, "Times new roman" BEGIN LTEXT "SafeDisc Interruption Extended" -1, 5, 12, 130, 8 LTEXT "Coded in TASM32" -1, 5, 24, 130, 8 LTEXT " by DillerInc" -1, 25, 36, 130, 8 DEFPUSHBUTTON "OK" IDOK, 44, 55, 40, 12, WS_GROUP + BS_VCENTER + BS_CENTER END |
|
------- Отправлено: 00:21, 18-07-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Тут проблема упирается в прозрачный фон. То есть если я наложу ресурс static на картинку в диалоге, то от статика будет поле, которое мне не нужно. Тупо нужен прозрачный фон. Примеров в инете мало и в основном предлагают как-то юзать transparent. Только куда его тут использовать?
|
Отправлено: 01:09, 18-07-2007 | #3 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Maksim V
Ну,скомпилируйте ресурс и посмотрите.Разве в скрипте где-то упоминается про static?? Иначе я не понимаю,о чём идёт речь. |
------- Отправлено: 02:02, 18-07-2007 | #4 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать вообщем статический текст расположен на рисунке. но фон текста не прозрачный. из-за этого видно след на битмапе. что можно придумать?
|
|
Отправлено: 03:11, 18-07-2007 | #5 |
Обратный инженер Сообщения: 644
|
Профиль | Отправить PM | Цитировать Maksim V
Попробуй разместить свой статический текст не в ресурсе,а создать его с помощью функции CreateWindowEx во время обработки сообщения WM_INITDIALOG.Первым параметром функции тогда должен быть WS_EX_TRANSPARENT. |
------- Отправлено: 22:00, 18-07-2007 | #6 |
Новый участник Сообщения: 20
|
Профиль | Отправить PM | Цитировать Подправьте пожалуйста мой исходник. Мне все таки так будет яснее (я все таки начинающий и мне легче когда на примере показано решение).
|
Последний раз редактировалось Maksim V, 19-07-2007 в 13:29. Отправлено: 04:00, 19-07-2007 | #7 |
Новый участник Сообщения: 1
|
Профиль | Отправить PM | Цитировать Ври как раз статья на эту тему.
Как сделать static с прозрачным фоном |
Отправлено: 20:09, 30-07-2009 | #8 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Доброго времени суток.
Для иллюстрации проблемы, привожу скрин, одного демонстрационного приложения, запущенного под Windows 7. С элементами управления Static проблему удалось победить (как под WinХР, так и под Win7), благодаря коду по ссылке из поста 8. В программе MultiBoot код сделал немного универсальным, проверяю класс элемента управления, case WM_CTLCOLORSTATIC: { wchar_t Class[80]=L""; GetClassName((HWND)lParam, Class, 80); if ((lstrcmp(Class, L"Static")==0))// | (lstrcmp(Class, L"Button")==0)) { //if (((HWND)lParam != ProhWnd[3]) & ((HWND)lParam != ProhWnd[14]) & ((HWND)lParam != ProhWnd[17]) & ((HWND)lParam != ProhWnd[20]) & ((HWND)lParam != ProhWnd[24]) & ((HWND)lParam != ProhWnd[28]) & ((HWND)lParam != ProhWnd[31]))//Исключаем ГрупБоксы //{ SetBkMode((HDC)wParam, TRANSPARENT); return (LRESULT)GetStockObject(NULL_BRUSH); //} } } break; Ищется решение для Статико-содержащих Чекбоксов (а.к.а. Флажков, Галок), ГруппБоксов (элементов управления Групп). Закомментированный код как раз и призван решать. В таком случаи:
Transparent group box А со стандартным разве никак не выйдет решить? Ведь фон в приложении стандартный, а не картинка как в случаи описанном на CodeProject. |
Отправлено: 03:35, 19-11-2009 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Firewall - Static packet filters на Windows 2003 Server | Raistlin | Сетевые технологии | 6 | 26-01-2013 10:54 | |
public static void main (String args[]){ | ReFleX | Программирование и базы данных | 1 | 19-09-2004 15:34 | |
Прозрачный прокси | Guest | Сетевые технологии | 3 | 25-06-2004 07:06 | |
Прозрачный флеш | Nealles | Вебмастеру | 2 | 16-03-2004 04:58 | |
static route | Guest | Общий по Linux | 7 | 16-02-2004 10:04 |
|