Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.59.122.162] |
|
Сообщ.
#1
,
|
|
|
subj
|
Сообщ.
#2
,
|
|
|
А зачем? Создай форму без заголовка, сделай зону перетаскивания и кнопки свернуть-развернуть-выход...
Хотя, может есть и более простой способ, незнаю - я тем, что предложил пользуюсь:) |
Сообщ.
#3
,
|
|
|
Так я так и сделал! Но почему-то кажется, что это-кривое решение. Да и изменить размер формы нельзя мышкой..
|
Сообщ.
#4
,
|
|
|
Да, не очень прямое...
Про изменение размера мышкой - это да, мне для моих целей оно просто не требовалось... |
Сообщ.
#5
,
|
|
|
WM_NCPAINT
|
Сообщ.
#6
,
|
|
|
Ок, делаю так: <br>procedure TForm1.WM_NCPAINT(var m: tWMNCPAINT);<br>var<br>rgn1:hrgn;<br>PaintHandle:hdc;<br>canv:tcanvas;<br>begin<br>canv:=tcanvas.Create;<br>inherited;<br> PaintHandle:=GetWindowDC(m.RGN);<br> Canvas.Handle:= PaintHandle;<br> canv.Rectangle(0,0,11,11);<br> ReleaseDC (m.RGN,PaintedHandle);<br> canv.Free;<br> end;<br> Пишет, что canvas does not allow drawing |
Сообщ.
#7
,
|
|
|
Кто же присваивает дискрипторы? :
BitBlt() тебе в помошь... ;D |
Сообщ.
#8
,
|
|
|
Как это "дескрипторы присваивает"? Попроще можно, чтоб я понял, где лажаю? :)
|
Сообщ.
#9
,
|
|
|
Canvas.Handle:= PaintHandle; |
Сообщ.
#10
,
|
|
|
Так тоже не работает:
<br>procedure TForm1.WM_NCPAINT(var m: tWMNCPAINT);<br>var<br>PaintedHandle,Src:hdc;<br>canv:tcanvas;<br>begin<br>canv:=tcanvas.Create;<br> inherited;<br> PaintedHandle:=GetWindowDC(m.RGN);<br> Src:=GetDC(image1.Picture.Bitmap.Canvas.Handle);<br> Canvas.Handle:= PaintedHandle;<br> bitblt(paintedhandle,0,0,11,11,src,0,0,MERGECOPY);<br><br> ReleaseDC (m.RGN,PaintedHandle);<br> ReleaseDC (image1.Picture.Bitmap.Canvas.Handle,src);<br> canv.Free;<br> end;<br> Ошибок правда нет, но эффекта ноль. |
Сообщ.
#11
,
|
|
|
Цитата Testudo, 14.04.03, 08:49:40 Canvas.Handle:= PaintHandle; А это я взял из первого номера хакера, где на дельфе программить учили, года полтора назад. Там на рабочем столе рисовали, все работало. |
Сообщ.
#12
,
|
|
|
Извиняюсь за наезд. Держи рабочий сырец:
***<br>procedure WM_NCPAINTP(var msg:TMessage); message WM_NCPAINT;<br>***<br>procedure TForm1.WM_NCPAINTP(var msg:TMessage);<br>var tc:TCanvas;<br>begin<br>inherited;<br>tc:=TCanvas.Create;<br>tc.Handle:=GetWindowDC(Handle);<br>tc.Lock;<br>tc.Pen.Style:=psSolid;<br>tc.Pen.Color:=clRed;<br>tc.MoveTo(0,0);<br>tc.LineTo(Form1.Width,20);<br>tc.Unlock;<br>end; |
Сообщ.
#13
,
|
|
|
Вай, спасибо!
|
Сообщ.
#14
,
|
|
|
testudo, а зачем ты заменил tmwncpaint сообщение на обычное tmessage ?
|
Сообщ.
#15
,
|
|
|
Да просто procedure ***(var msg:TMessage); message ***; - стандартный вариант, работающий со всеми мессагами. Так зачем извращаться? ;D
|
Сообщ.
#16
,
|
|
|
Рисуется все ок, а вот картинка не кладется :(
bitblt(tc.Handle,0,0,555,11,image1.Picture.Bitmap.Canvas.Handle,0,0,MERGECOPY ); или так: tc.stretchDraw(tc.cliprect,image1.Picture.Bitmap); |
Сообщ.
#17
,
|
|
|
У меня все прекрасно рисуется:
unit Unit1;<br><br>interface<br><br>uses<br> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,<br> Dialogs;<br><br>type<br> TForm1 = class(TForm)<br> procedure FormCreate(Sender: TObject);<br> procedure FormClose(Sender: TObject; var Action: TCloseAction);<br> private<br> { Private declarations }<br> procedure WM_NCPAINTP(var msg:TMessage); message WM_NCPAINT;<br> public<br> { Public declarations }<br> end;<br><br>var<br> Form1: TForm1;<br> bmp1:TBitmap;<br><br>implementation<br><br>{$R *.dfm}<br><br>procedure TForm1.WM_NCPAINTP(var msg:TMessage); <br>var tc:TCanvas; <br>begin <br>inherited; <br>tc:=TCanvas.Create; <br>tc.Handle:=GetWindowDC(Handle); <br>tc.Lock; <br>tc.Pen.Style:=psSolid; <br>tc.Pen.Color:=clRed; <br>tc.MoveTo(0,0); <br>tc.LineTo(Form1.Width,20);<br>BitBlt(tc.Handle,50,2,20,20,bmp1.Canvas.Handle,0,0,MERGECOPY);<br>tc.Unlock; <br>end;<br><br>procedure TForm1.FormCreate(Sender: TObject);<br>begin<br>bmp1:=TBitmap.Create;<br>bmp1.LoadFromFile('c:\Bitmap1.bmp');<br>end;<br><br>procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);<br>begin<br>bmp1.Free;<br>end;<br><br>end. |
Сообщ.
#18
,
|
|
|
А почему же у меня не работает?
|
Сообщ.
#19
,
|
|
|
Давай полный код. Будем разбираться
|
Сообщ.
#20
,
|
|
|
Ребята, а делать это надо в этой конфе?
|
Сообщ.
#21
,
|
|
|
В смысле?
|
Сообщ.
#22
,
|
|
|
Цитата Testudo, 18.04.03, 09:28:05 В смысле? Разве это апи? |
Сообщ.
#23
,
|
|
|
Напополам ...
Вообщето по той причине что Мыш и Testudo к Дельфе клонят - туда следовало бы перетащить |
Сообщ.
#24
,
|
|
|
Конференция АПИ подразумевает не только если каждое слово будет как бы к АПИ относится, но и если ответ на вопрос приводится с решением, которое включает АПИ ф-ии . Например:
Вопрос: как установить стиль? Ответ: Procedure TForm1.Button1Click(Sender: TObject); Begin SetWindowLong(...); End; Кто скажет что это не АПИ пусть первым бросит в меня камень (c) Т.е. видиите, что в данном ответе приведён обработчик VCL но сам-то ответ на вопрос отвечен по ф-ии АПИ. В этом случае я считаю, что это не будет являться нарушением при посте в конференцию. |
Сообщ.
#25
,
|
|
|
Цитата Testudo, 18.04.03, 08:35:03 Давай полный код. Будем разбираться Ты не поверишь, , но мой код такой же как и твой! 8D Только bitmap от imaga, который уже на форме лежит, да и картинка в нем другая. (у меня почему то не оказалось 1.bmp на диске C ) т.е image1.picture.bitmap.canvas.handle Это не апи, (пи-и-и-у - бдыщь!!!), это гимор какой-то :) |
Сообщ.
#26
,
|
|
|
Пробовал так:
BitBlt(tc.Handle,50,2,200,20,Image1.Canvas.Handle,0,0,MERGECOPY); Только рисуется, естественно, без sterch - в обоих вариантах. |
Сообщ.
#27
,
|
|
|
Люди!
А если полностью прогу на апях пишу, то объясните как надо обрабатывать и WM_NCACTIVATE и WM_NCPAINT : |
Сообщ.
#28
,
|
|
|
Всмысле - как? В каклм месте их обрабатывать чтоли или что?
|
Сообщ.
#29
,
|
|
|
Например, что писать в WM_NCACTIVATE и для чего, а то я по англицки не врубился.
И что делать с регионом в WM_NCPAINT Просто у меня код прорисовки на WM_PAINT работает, а с WM_NCPAINT что-то странное - BitBlt выводит рисунок на контрол в окне Может примерчик? |
Сообщ.
#30
,
|
|
|
Цитата А может стоит проверять от кого приходит сообщение?Просто у меня код прорисовки на WM_PAINT работает, а с WM_NCPAINT что-то странное - BitBlt выводит рисунок на контрол в окне ЗЫ А GetWindowDC в АПЯх никто не отменял. Чей дискриптор в него сунешь, на том рисовать и бужешь |
Сообщ.
#31
,
|
|
|
В том-то и дело, что оконной процедру главного окна, в NC_PAINT и GetWindowDC(MainWnd)
|