На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> Как рисовать на заголовке формы?
    subj
      А зачем?:) Создай форму без заголовка, сделай зону перетаскивания и кнопки свернуть-развернуть-выход...

      Хотя, может есть и более простой способ, незнаю - я тем, что предложил пользуюсь:)
        Так я так и сделал! Но почему-то кажется, что это-кривое решение. Да и изменить размер формы нельзя мышкой..
          Да, не очень прямое...

          Про изменение размера мышкой - это да, мне для моих целей оно просто не требовалось...
            WM_NCPAINT

              Ок, делаю так:
              ExpandedWrap disabled
                <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
                Кто же присваивает дискрипторы? ::)
                BitBlt() тебе в помошь... ;D
                  Как это "дескрипторы присваивает"? Попроще можно, чтоб я понял, где лажаю?  :)
                    ExpandedWrap disabled
                      Canvas.Handle:= PaintHandle;
                      Так тоже не работает:

                      ExpandedWrap disabled
                        <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>


                      Ошибок правда нет, но эффекта ноль.
                        Цитата Testudo, 14.04.03, 08:49:40
                        ExpandedWrap disabled
                          Canvas.Handle:= PaintHandle;

                        А это я взял из первого номера хакера, где на дельфе программить учили, года полтора назад. Там на рабочем столе рисовали, все работало.
                          Извиняюсь за наезд. Держи рабочий сырец:
                          ExpandedWrap disabled
                            ***<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;
                            Вай, спасибо!
                              testudo, а зачем ты заменил tmwncpaint сообщение на обычное tmessage ?
                                Да просто procedure ***(var msg:TMessage); message ***; - стандартный вариант, работающий со всеми мессагами. Так зачем извращаться? ;) ;D
                                  Рисуется все ок, а вот картинка не кладется  :(

                                  bitblt(tc.Handle,0,0,555,11,image1.Picture.Bitmap.Canvas.Handle,0,0,MERGECOPY      );

                                  или так:

                                  tc.stretchDraw(tc.cliprect,image1.Picture.Bitmap);
                                    У меня все прекрасно рисуется:
                                    ExpandedWrap disabled
                                      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.
                                    Сообщение отредактировано: Testudo -
                                      А почему же у меня не работает?
                                        Давай полный код. Будем разбираться ;)
                                          Ребята, а делать это надо в этой конфе?
                                            В смысле?
                                              Цитата Testudo, 18.04.03, 09:28:05
                                              В смысле?

                                              Разве это апи?
                                                Напополам ...

                                                Вообщето по той причине что Мыш и Testudo к Дельфе клонят - туда следовало бы перетащить
                                                Сообщение отредактировано: SergeS -
                                                  Конференция АПИ подразумевает не только если каждое слово будет как бы к АПИ относится, но и если ответ на вопрос приводится с решением, которое включает АПИ ф-ии . Например:

                                                  Вопрос: как установить стиль?
                                                  Ответ:

                                                  Procedure TForm1.Button1Click(Sender: TObject);
                                                  Begin
                                                  SetWindowLong(...);
                                                  End;

                                                  Кто скажет что это не АПИ пусть первым бросит в меня камень (c) :)
                                                  Т.е. видиите, что в данном ответе приведён обработчик VCL но сам-то ответ на вопрос отвечен по ф-ии АПИ. В этом случае я считаю, что это не будет являться нарушением при посте в конференцию.
                                                    Цитата Testudo, 18.04.03, 08:35:03
                                                    Давай полный код. Будем разбираться ;)

                                                    Ты не поверишь,  ;) , но мой код такой же как и твой!  8D
                                                    Только bitmap от imaga, который уже на форме лежит, да и картинка в нем другая. (у меня почему то не оказалось 1.bmp на диске C :) )
                                                    т.е image1.picture.bitmap.canvas.handle

                                                    Это не апи, (пи-и-и-у - бдыщь!!!), это гимор какой-то  :)
                                                    Сообщение отредактировано: JohnDow -
                                                      Пробовал так:
                                                      ExpandedWrap disabled
                                                        BitBlt(tc.Handle,50,2,200,20,Image1.Canvas.Handle,0,0,MERGECOPY);
                                                      Все работает. Пробовал даже через Image1.Picture.Bitmap.Canvas.Handle - аналогично! ;D
                                                      Только рисуется, естественно, без sterch - в обоих вариантах. ;)
                                                        Люди!
                                                        А если полностью прогу на апях пишу, то объясните как надо обрабатывать и WM_NCACTIVATE и WM_NCPAINT ::)
                                                          Всмысле - как? В каклм месте их обрабатывать чтоли или что?
                                                            Например, что писать в WM_NCACTIVATE и для чего, а то я по англицки не врубился.
                                                            И что делать с регионом в WM_NCPAINT
                                                            Просто у меня код прорисовки на WM_PAINT работает, а с WM_NCPAINT
                                                            что-то странное - BitBlt выводит рисунок на контрол в окне
                                                            Может примерчик?
                                                              Цитата
                                                              Просто у меня код прорисовки на WM_PAINT работает, а с WM_NCPAINT
                                                              что-то странное - BitBlt выводит рисунок на контрол в окне
                                                              А может стоит проверять от кого приходит сообщение?
                                                              ЗЫ А GetWindowDC в АПЯх никто не отменял. Чей дискриптор в него сунешь, на том рисовать и бужешь ;)
                                                                В том-то и дело, что оконной процедру главного окна, в NC_PAINT и GetWindowDC(MainWnd)
                                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                0 пользователей:


                                                                Рейтинг@Mail.ru
                                                                [ Script execution time: 0,0585 ]   [ 16 queries used ]   [ Generated: 2.05.24, 23:10 GMT ]