Форум: "WinAPI";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизМАСТЕРА помогите!!! Как в EDIT поставить фон в виде рисунка!!! Найти похожие ветки
← →
Songoku (2003-02-05 15:58) [0]Как в EDIT поставить фон в виде рисунка!!!
И спользуя функции API!!! Пожайлусто с примером!!!
← →
Cobalt (2003-02-05 16:06) [1]А еще лучше прямо с рисунком (желательно порно;-)
← →
Song (2003-02-05 16:16) [2]WM_ERASEBKGRND
← →
Songoku (2003-02-05 16:24) [3]Song: Пришли пример .. я пробывал не работает!!!!
← →
Игорь Шевченко (2003-02-05 16:45) [4]Song © (05.02.03 16:16)
В Edit ? :-))))
← →
Song (2003-02-05 16:56) [5]А.. :), сорри
2Songoku (05.02.03 15:58)
А куда в едит вставлять фон?
← →
Songoku (2003-02-05 17:09) [6]Игорь Шевченко : Да в Edite или Memo!!!!
← →
Songoku (2003-02-05 17:10) [7]Удалено модератором
← →
Cobalt (2003-02-05 20:15) [8]Написать свой компонент, потомок от TEdit, и перекрыть в нем обработчик WM_ERASEBKGRND?
2 Songoku
Кстати, приведи примерчик того, что ты пытался сделать? и укажи, на какой строке у тебя вылазит ошибка.
← →
DVM (2003-02-05 20:18) [9]
> Songoku
Возьмите на www.torry.net какой-нибудь компонент с исходниками и посмотрите. Там таких полно.
Есть еще CoolMemo, например.
← →
Songoku (2003-02-05 23:22) [10]......
dMemo:=Pointer(GetWindowLong(hEdit,GWL_WNDPROC));
SetWindowLong(hEdit,GWL_WNDPROC,Longint(@MemoProc));
...
functionMemoProc(hWnd,Msg,wParam,lParam:Longint):Longint;
stdcall;
vart: TPaintStruct;
begin
DC:HDC;
caseMsg
of
WM_PAINT: begin SetWindowBkgBitmap(hWnd, LoadBitmapFromFile("C:\bgr.bmp"));
Result:=1;
end;
WM_ERASEBKGND:
begin
DC:=BeginPaint(hWnd,t);
end else
SetBkMode(DC,TRANSPARENT);
SetWindowBkgBitmap(hWnd, LoadBitmapFromFile("C:\bgr.bmp"));
EndPaint(hWnd,t);
Result:=1;Result:=CallWindowProc</CODE
>(dMemo,hWnd,Msg,wParam,lParam);
end;
end;
← →
i-C3H7OH (2003-02-06 12:12) [11]>Songoku
а BitBlt сделать?
LoadBitmapFromFile("C:\bgr.bmp") надо сделать один раз в начале выполнения программы,
а у тебя создаются битмапы при каждой перерисовке
кстати, что это за ф-ция SetWindowBkgBitmap(hWnd, HBITMAP)?
такую даже Google не находит
← →
Song (2003-02-06 12:27) [12]2Songoku (05.02.03 23:22)
Наверно долго теги вставлял? :)
← →
Songoku (2003-02-06 15:51) [13]i-C3H7OH: Это мая функция.
procedureSetWindowBkgBitmap(Window:HWND;Bitmap:HBitmap);
var
rc:Trect;
begin
Windows.GetClientRect(Window, rc);
FillRect(GetDC(Window), rc, CreatePatternBrush(Bitmap));
end;
functionLoadBitmapFromFile(Path:String):HBitmap;
begin
Result:=LoadImage(0,Pchar(Path),IMAGE_BITMAP,0,0,LR_LOADFROMFILE
orLR_CREATEDIBSECTION
orLR_DEFAULTSIZE);
end;
← →
Songoku (2003-02-06 15:55) [14]Скиньте мне кто исходник примера на мыло:
Songoku@tut.by
← →
gsu (2003-02-06 15:56) [15]твая, твая (-:|~
← →
i-C3H7OH (2003-02-06 19:34) [16]если брашем надо заполнить, то тут даже проще
hBr := CreatePatternBrush(Bitmap);
делаем 1 раз, создаем объест , который потом надо бы уничтожить
DeleteObject(..)
сообщение. как я понял для того чтоб задать заливку, цвет текста
используется WM_CTLCOLOREDIT. просто в качестве Resultа надо толкнуть hBr.
← →
Songoku (2003-02-07 01:06) [17]i-C3H7OH : Yes работает только это делается немного по другому!!!
.....
procedureColorEdit(
varM:TWMCTLCOLOREDIT);
messageWM_CTLCOLOREDIT;
.....
procedureTForm1.ColorEdit(
varM:TWMCTLCOLOREDIT);
begin
SetTextColor(m.ChildDC,RGB(255,255,0));
SetBkMode(m.ChildDC,TRANSPARENT);
m.Result:=CreatePatternBrush(LoadBitmapFromFile("C:\bgr.bmp"));
end;
← →
Evgeny (2003-02-07 05:47) [18]>Songoku (07.02.03 01:06)
А все-таки Вы, уважаемый, сделали именно так как предложил i-C3H7OH.
← →
Songoku (2003-02-07 11:25) [19]Evgeny : Я знаю но он имел в виду что там про "DeleteObject(..)
"!!!
← →
i-C3H7OH (2003-02-07 11:49) [20]объявляем глобальную переменную
var hBr:HBRUSH;
(если создаешь класс, тогда обьявляем ее в приват-секции, как любой дескриптор)
в начале программы (или в обработчике WM_CREATE) создаем браш
hBr := CreatePatternBrush(Bitmap);
в конце уничтожаемDeleteObject(hBr)
все
с битмапом тоже самое.
LoadBitmapFromFile("C:\bgr.bmp"));
тоже создает битмап
уничтожается аналогичноDeleteObject(HBITMAP)
понятно? дерзай!
← →
DVM (2003-02-07 13:07) [21]вот я когда то делал, правда для Мемо
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
TMemo1=class(TMemo)
private
public
protected
Procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
Procedure WMPaint(var Message: TWMPaint); message WM_Paint;
procedure WMMouseMove(var Message: TWMMouseMove); message WM_MouseMove;
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KEYDOWN;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
procedure DoPaint;dynamic;
procedure CHANGE; override;
end;
var
Form1: TForm1;
Memo1:TMemo1;
implementation
{$R *.dfm}
procedure TMemo1.DoPaint;
var
MyDC: HDC;
TempDC: HDC;
OldBmp, TempBmp: HBITMAP;
begin
begin
HideCaret(Handle);
MyDC := GetDC(Handle);
try
TempDC := CreateCompatibleDC(MyDC);
try
TempBmp := CreateCompatibleBitmap(MyDC, Succ(ClientWidth), Succ(ClientHeight));
try
OldBmp := SelectObject(TempDC, TempBmp);
PaintTo(TempDC, -2, -2);
BitBlt(MyDC, 0, 0, ClientWidth, ClientHeight, TempDC, 0, 0, SRCCOPY);
SelectObject(TempDC, OldBmp);
finally
DeleteObject(TempBmp);
end;
finally
DeleteDC(TempDC);
end;
finally
ReleaseDC(Handle, MyDC);
end;
ShowCaret(Handle);
end;
end;
procedure TMemo1.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
dopaint;
end;
procedure TMemo1.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
dopaint;
end;
procedure TMemo1.WMMouseMove(var Message:TWMMouseMove);
begin
inherited;
dopaint;
end;
procedure TMemo1.WMKeyDown(var Message: TWMKeyDown);
begin
inherited;
dopaint;
end;
procedure TMemo1.CHANGE;
begin
dopaint;
end;
procedure TMemo1.WMEraseBkgnd(var Message: TWMEraseBkgnd);
begin
//SetBkColor(Message.DC, Transparent);
SetBkMode(message.dc, Transparent);
inherited;
memo1.Brush.Bitmap:=form1.image1.Picture.Bitmap;
//bitblt(message.DC,0,0,memo1.ClientWidth,memo1.ClientHeight,form1.Image1.Picture.Bitmap.canvas.Handle,0,0, SRCCOPY);
end;
procedure TMemo1.WMPaint(var Message: TWMPaint);
begin
inherited;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1:=TMemo1.Create(form1);
memo1.Parent:=form1;
memo1.Text:="fasdasdasd";
memo1.Font.Color:=clYellow;
memo1.Font.Size:=20;
memo1.Left:=10;
memo1.Top:=10;
memo1.Width:=200;
memo1.Height:=500;
//SetBkMode(getdc(memo1.Brush.Handle), Transparent);
//memo1.Enabled:=false;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Text:="sdilfjdsofjofaofa";
end;
end.
← →
Songoku (2003-02-09 18:51) [22]DVM : Много не дороботок: маргает кагда пишешь и кагда прокрутываешь!!!!
← →
Безымянный среднего рода (2003-02-10 07:17) [23]> Songoku (09.02.03 18:51) дык.... возьми и доработай....кто мешает ?
← →
Songoku (2003-02-10 16:57) [24]Удалено модератором
Примечание: Материться дома будешь
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.011 c