Вопрос № 23972: Здравствуйте, уважаемые эксперты!
Я по поводу вопроса ? 23365(про bitmap и dc)
Спасибо за ответы, про рисование все понятно, но я бы хотел еще кое-что узнать.
Суть следующего вопроса такова:
В моем приложении на окне нарисовано мной н...Вопрос № 23983: Добрый день!
В Delphi можно сделать подобное:
procedure TForm1.Click(Sender: TObject);
begin
TButton(Sender).Tag := 10;
end;
Как сделать такое же в Builder'е? Т.е. распознать кнопку?
Заранее спасибо!
..
Вопрос № 23.972
Здравствуйте, уважаемые эксперты!
Я по поводу вопроса ? 23365(про bitmap и dc)
Спасибо за ответы, про рисование все понятно, но я бы хотел еще кое-что узнать.
Суть следующего вопроса такова:
В моем приложении на окне нарисовано мной несколько битмапов, и мне нужно очистить окно от них(всех)
я мог бы делать так:
ShowWindow(hWnd, SW_HIDE);
ShowWindow(hWnd, SW_SHOW);
где hWnd моего окна
(при обработке WM_PAINT ничего не рисуется заново),
либо рисуя поверх всех их еще один bmp, цвет которого совпадает с цветом той области окна,
где я рисовал все битмапы,
но, насколько мне кажется, существует более красивый и правильный способ.
Если да, то какой?
Заранее благодарен
Отправлен: 24.07.2005, 18:56
Вопрос задал: Dts (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Ddeedd
Здравствуйте, Dts!
Да способов куча, если обработчик WM_PAINT заполняет окно чем нибудь - например заливает черным цветом(например через ExtFloodFill), то достаточно дать InvalidateRect(hWnd, 0, true), или просто так взять DC и ExtFloodFill-нуть все/нужную часть окна - но будет возможно моргание из-за отсутствия верт. синхронизации. А использовать битмапы и прятать/показывать окно - это уж слишком.
Ответ отправил: Ddeedd (статус: 3-ий класс)
Отправлен: 24.07.2005, 19:47
Отвечает: Kazarov Vitaliy
Здравствуйте, Dts!
Вызвать OnPaint(), либо послать сообщение WM_PAINT :)
Ответ отправил: Kazarov Vitaliy (статус: 2-ой класс)
Отправлен: 25.07.2005, 09:35
Вопрос № 23.983
Добрый день!
В Delphi можно сделать подобное:
procedure TForm1.Click(Sender: TObject);
begin
TButton(Sender).Tag := 10;
end;
Как сделать такое же в Builder'е? Т.е. распознать кнопку?
Заранее спасибо!
Отправлен: 24.07.2005, 22:41
Вопрос задал: Константинов А.С. (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Ddeedd
Здравствуйте, Константинов А.С.!
Стандартное преобразование типов для C:
((TButton*)Sender)->Tag=10;
Ответ отправил: Ddeedd (статус: 3-ий класс)
Отправлен: 24.07.2005, 22:48 Оценка за ответ: 5 Комментарий оценки: Спасибо! Это всё, что мне было нужно!
Отвечает: Rusland
Здравствуйте, Константинов А.С.!
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TButton *btn = (TButton *)Sender;
btn->Tag; // получаем все свойства Button1, в том числе и Tag
btn=NULL;
}
--------- Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: 8-ой класс)
Отправлен: 25.07.2005, 09:56 Оценка за ответ: 5 Комментарий оценки: Спасибо! Но немножко сложно. Лучше обыкновенное преобразование типов. А так уходят лишние байты и работает медленнее.