Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.10;
Скачать: CL | DM;

Вниз

МАСТЕРА помогите!!! Как в 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));
...

function MemoProc(hWnd,Msg,wParam,lParam:Longint):Longint; stdcall;
var
t: TPaintStruct;
DC:HDC;
begin
case
Msg of
WM_PAINT: begin SetWindowBkgBitmap(hWnd, LoadBitmapFromFile("C:\bgr.bmp"));

Result:=1;

end;

WM_ERASEBKGND: begin
DC:=BeginPaint(hWnd,t);
SetBkMode(DC,TRANSPARENT);

SetWindowBkgBitmap(hWnd, LoadBitmapFromFile("C:\bgr.bmp"));
EndPaint(hWnd,t);
Result:=1;
end else 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: Это мая функция.
procedure SetWindowBkgBitmap(Window:HWND;Bitmap:HBitmap);
var
rc:Trect;
begin
Windows.GetClientRect(Window, rc);
FillRect(GetDC(Window), rc, CreatePatternBrush(Bitmap));

end;

function LoadBitmapFromFile(Path:String):HBitmap;
begin
Result:=LoadImage(0,Pchar(Path),IMAGE_BITMAP,0,0,LR_LOADFROMFILE or LR_CREATEDIBSECTION or LR_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 работает только это делается немного по другому!!!

.....
procedure ColorEdit( var M:TWMCTLCOLOREDIT); message WM_CTLCOLOREDIT;.....
procedure TForm1.ColorEdit( var M: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 вся ветка

Текущий архив: 2003.04.10;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.016 c
1-30394
bIzET
2003-03-30 13:19
2003.04.10
menu


8-30480
Карлсон
2003-01-07 13:14
2003.04.10
преобразование в ASCII


14-30578
Mute
2003-03-25 11:15
2003.04.10
Бесплатный OLE DB Provider для IB


14-30542
Дмитрий К.К.
2003-03-24 12:37
2003.04.10
Именинники 24 марта


3-30267
yurikon03
2003-03-21 10:19
2003.04.10
Населить TTreeView данными из таблицы...