Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2011, 15:33   #1
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
Восклицание Элемент STATIC

Нужно создать метку таким образом чтобы цвет метки был таким же как у окна.
Код:
HWND hLabelFrom = CreateWindow("STATIC", "Исходное число",
		WS_CHILD | WS_VISIBLE , 
		20, 40, 100, 50, window1._hMainWnd, (HMENU)-1, hInstance, NULL);
Затем можно сделать так:
Код:
COLORREF Color_myColor = RGB(200,255,200);
	
	SetBkColor((HDC) hLabelFrom,  Color_myColor);
но через HDC это уже какой-то велосипед будет. Можно сделать так, чтобы все свойства окна автоматически наседовались на метку?
P.S. как изменить размер шрифта в элементе?
Dimarik вне форума Ответить с цитированием
Старый 19.06.2011, 16:27   #2
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Цитата:
но через HDC это уже какой-то велосипед будет. Можно сделать так, чтобы все свойства окна автоматически наседовались на метку?
обработать WM_CTLCOLOR
Цитата:
как изменить размер шрифта в элементе?
CreateFont, AddFontMemResourceEx можно попробовать
counter вне форума Ответить с цитированием
Старый 19.06.2011, 20:45   #3
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

обработать WM_CTLCOLOR
- а на такое вижуал ругается. пишет что не знает такого. но знает
WM_CTLCOLORSTATIC

вот так показывает элемент STATIC в белом фоне:
HWND hLabelFrom = CreateWindow("STATIC", "Исходное число",
WS_CHILD | WS_VISIBLE,
20, 40, 100, 50, window1._hMainWnd, (HMENU)-1, hInstance, NULL);
А можно в третьем аргументе через побитовое И присвоить константу, позволяющую унаследовать цвет от главного окна или как-то так?
что-то типа этого, но только чтоб именно цвет главного окна унаследовать можно было
Код:
HWND hLabelFrom = CreateWindow("STATIC", "Исходное число",
		WS_CHILD | WS_VISIBLE | COLOR_WINDOW , 
		20, 40, 100, 50, window1._hMainWnd, (HMENU)-1, hInstance, NULL);
Цвет главного окна:
Код:
HBRUSH myColor = CreateSolidBrush(RGB(200,255,200));

Последний раз редактировалось Dimarik; 19.06.2011 в 21:12.
Dimarik вне форума Ответить с цитированием
Старый 19.06.2011, 21:02   #4
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

P.S. пишу на чистом API без MFC
Dimarik вне форума Ответить с цитированием
Старый 19.06.2011, 22:17   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

читайте и обрабатывайте. ссылка
О самом статике
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2011, 15:01   #6
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

понял. спасибо
Dimarik вне форума Ответить с цитированием
Старый 20.06.2011, 18:39   #7
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

по поводу шрифта:
Код:
case WM_PAINT:
			PAINTSTRUCT ps;
	        hdcForFonts = BeginPaint(hWnd, &ps);
			            hFont = CreateFont(36,20,-300,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS,
                CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY, VARIABLE_PITCH,TEXT("Times New Roman"));


			i_size = sizeof(hFont);
			i_one = 2;
			AddFontMemResourceEx(&hFont, i_size, 0, &i_one);
			return 0;
не может проинициализировать hFont. послу выполнения функции пишет ubsigned (в отладчике посмотрел)
Dimarik вне форума Ответить с цитированием
Старый 20.06.2011, 18:44   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

создайте шрифт один раз при создании окна/приложения и все.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.06.2011, 20:13   #9
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Как сказал П.Феникса шрифт создайте один раз. Функция AddFontMemResourceEx устанавливает шрифт в систему из ресурсов, Times New Roman есть везде, поэтому не надо ее вызывать. Для вывода текста созданным шрифтом в WM_PAINT в нужном месте надо делать SelectObject(hFont)
counter вне форума Ответить с цитированием
Старый 20.06.2011, 20:42   #10
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

спасибо большое. буду крутить=)
Dimarik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
static Gen_r_questions PHP 7 05.04.2011 15:12
Использование static Syltan Общие вопросы по Java, Java SE, Kotlin 3 07.06.2010 20:59
Static члены assasin Общие вопросы C/C++ 2 21.08.2009 10:54
По-поводу Static volnixx PHP 3 11.03.2009 12:04
Static Void Problem RIO Общие вопросы .NET 2 02.05.2008 16:52