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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2011, 22:45   #1
BOLCMAN
Новичок
Джуниор
 
Регистрация: 11.01.2011
Сообщений: 1
По умолчанию ФУНКЦИЯ CREATEWINDOW ЦВЕТА КНОПОК

Доброго времени суток уважаемые коллеги!прошу не судить меня строго,ибо я только учусь.Прошу помочь разобраться со свойством "CreateWindow" ниже приведен часть кода программы на visual c++,где создаются кнопки, надо закрасить кнопки каким-либо цветом. Сколько методов не пробовал-все безуспешно.буду очень признателен за помощь!

case WM_CREATE:

//текст
CreateWindow(TEXT("static"), TEXT("Выбирайте"),
WS_CHILD|WS_VISIBLE|SS_CENTER,
30, 10,
260, 30,
hWnd, (HMENU)ID_STATIC, hInstance, NULL);
//DrawThemeBackground(red);



//кнопка "800х600(8)" вот эти кнопки надо закрасить.
CreateWindow(TEXT("button"), TEXT("800x600(8)"),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
30, 45,
120, 30, hWnd, (HMENU)ID_CH1, hInstance, NULL);

//HDC hdc = GetWindowDC(hButton1);
//SetTextColor(hdc,RGB(255,0,0));


//кнопка "800x600(16)"
CreateWindow(TEXT("button"), TEXT("800x600(16)"),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
30, 75,
120, 30, hWnd, (HMENU)ID_CH2, hInstance, NULL,SetBkColor(255,0,0));

//кнопка "800x600(32)"
CreateWindow(TEXT("button"), TEXT("800x600(32)"),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
170, 45,
120, 30, hWnd, (HMENU)ID_CH3, hInstance, NULL);

//кнопка "1024x768(32)"
CreateWindow(TEXT("button"), TEXT("1024x768(32)"),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
170, 75,
120, 30, hWnd, (HMENU)ID_CH4, hInstance, NULL);

//кнопка "Выход"
CreateWindow(TEXT("button"), TEXT("Выход"),
WS_CHILD|WS_VISIBLE|BS_DEFPUSHBUTTO N,
110, 180,
90, 30, hWnd, (HMENU)ID_EXIT, hInstance, NULL);
BOLCMAN вне форума Ответить с цитированием
Старый 13.01.2011, 17:56   #2
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Через графический контекст
процедура на паскале, но я думаю разберешься там одни API
procedure BackGrPict(Obj:TWinControl;fBmp:str ing);
var H:HBITMAP;
bm:BITMAP;M,DC:HDC;
bW,bH,j,i:integer;
begin
H:=LoadImage(GetModuleHandle(nil),P Char(fBmp),IMAGE_BITMAP,0,0,LR_LOAD FROMFILE);//грузим битмап
if H=0 then Exit else
begin
DC:=GetDC(Obj.Handle);//берем контекст формы
M:=CreateCompatibleDC(DC);//создаем временный контекст
SelectObject(M,H);//применяем к нему наш битмап
GetObject(H,sizeof(BITMAP),@bm);//берем данные битмапа
bW:=1;bH:=1;
for j:=0 to Round(Obj.ClientHeight/bm.bmHeight) do begin
for i:=0 to Round(Obj.ClientWidth/bm.bmWidth) do begin
BitBlt(DC,bW,bH,bm.bmWidth,bm.bmHei ght,M,0,0,SRCCOPY);//рисуем битмап на контексте формы(используя ширину и высоту)
bW:=bW+(bm.bmWidth);
end;
bH:=bH+(bm.bmHeight);bW:=1
end;
DeleteDC(M);//стираем временный контекст
DeleteObject(H);
end;
end;
Вообще - это для загрузки картинок в любой компонент. Щас подумаю с цветом проще.

Последний раз редактировалось baster128; 13.01.2011 в 18:03.
baster128 вне форума Ответить с цитированием
Старый 13.01.2011, 18:07   #3
yury_coder
Пользователь
 
Регистрация: 31.10.2010
Сообщений: 53
По умолчанию

Стиль кнопки BS_OWERDRAW может помочь
Цитата:
Кнопки, определяемые пользователем.
Данный стиль кнопки применяется тогда, когда есть необходимость (или желание) управлять внешним обликом кнопки, а логику обработки клавиатуры и мыши можно оставить самой кнопке. Сообщения родительскому окну такие же, как и у всех кнопок, однако, при необходимости перерисовки кнопки, она посылает родительскому окну сообщение WM_DRAWITEM c указателем на структуру типа DRAWITEMSTRUCT, используемую при рисовании кнопки, в параметре lParam.
кажется, оно
yury_coder вне форума Ответить с цитированием
Старый 13.01.2011, 18:21   #4
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

SetClassLong(hWnd_about_author, GCL_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(0,0,0))) ;
RGB(0,0,0) - Это черный, соответственно, изменяя эти три параметра можно подобрать любой цвет. (на этом-же форуме было)

Последний раз редактировалось baster128; 13.01.2011 в 18:23.
baster128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фигуры кнопок Anatoly555 Общие вопросы Delphi 3 18.03.2010 13:34
18 кнопок Xcopy Общие вопросы Delphi 9 11.03.2010 20:56
Проблема с созданием окна(CreateWindow) в отдельном потоке Sc0rp Win Api 4 26.03.2009 22:49
Дизайн кнопок Fantom Общие вопросы Delphi 34 07.07.2008 06:54
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50