Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2008, 13:40   #1
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
Восклицание Рисование на форме созданной на WinApi

Как можно нарисовать на форме созданной на WinApi, или вставить туда картинку? Заранее спс.
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 30.04.2008, 17:16   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Средствами WinAPI конечно. Точно так же как и на дельфовой форме только функции не обертки VCL' овские, а графические WinAPI функции.
Копирует растры функция BitBlt, упрощенный аналог в VCL - функция Draw.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 30.04.2008, 18:12   #3
N!ckeL
Форумчанин
 
Регистрация: 29.03.2008
Сообщений: 300
По умолчанию

Можно пример использования?

Код:
var
  wc: TWndClassEx;
  pWnd: hwnd;
  pMsg:Tmsg;
  c:tcanvas;
    function WindowProc (wnd: HWND; Msg: integer; wParam: wParam; lParam:lparam):lresult; stdcall;
      begin
        result:=0;
        result:=defwindowproc(wnd, msg, wparam, lparam);
     case msg of
        wm_create:
     begin
     c:=tcanvas.create;
     bitblt(c.Handle, 0, 0, 0, 0, pwnd, 0, 0, 0);// вот так вызвал, но ошибка..
     end;
     wm_destroy:
     begin
      postquitmessage(0);
      exit;
     end;
begin
  wc.cbSize:=sizeof(wc);
  wc.lpfnWndProc:=@windowproc;
  wc.cbClsExtra:=0;
  wc.cbWndExtra:=0;
  wc.hInstance:=hinstance;
  wc.hCursor:=loadcursor(0, idc_arrow);
  wc.hbrBackground:=color_btnface+1;
  wc.lpszMenuName:=nil;
  wc.lpszClassName:='delphi_winapi';
  registerclassex(wc);
  pwnd:=createwindowex(ws_ex_appwindow, 'delphi_winapi', 'Caption', ws_border, cw_usedefault, cw_usedefault, 300, 100, 0, 0, hinstance, nil);

showwindow(pwnd, sw_show);

while getmessage(pmsg, 0, 0, 0) do
begin
    translatemessage(pmsg);
    dispatchmessage(pmsg);
end;
Карп преодолевший водопад становится драконом.
N!ckeL вне форума Ответить с цитированием
Старый 30.04.2008, 19:02   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
bitblt(c.Handle, 0, 0, 0, 0, pwnd, 0, 0, 0);// вот так вызвал, но ошибка..
Я на чистом WinAPI не писал никогда, но функции использовал часто.
1 параметр - хэндл канвы приемника
2,3 - координаты куда ложить
4,5 - размеры (здесь 0, 0 - это нулевые размеры, нужно исправить)
6 - хэндл канвы источника (вот тут его и нет)
7,8 - координаты откуда брать
последний - код операции, SrcCopy простое копирование (чему соответствует 0 не знаю, может как раз SrcCopy)

Более подробно смотри здесь http://www.programmersforum.ru/showt...5625#post45625
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
рисование на форме Kostua Помощь студентам 2 26.07.2008 16:24
Событие для динамически созданной Button Dogmat Помощь студентам 8 24.07.2008 12:44
События, выполняемые во время работы созданной компоненты Denager Общие вопросы Delphi 13 22.04.2008 16:48
Как выпонить действия по двойному слику на созданной таблице Tiolic Общие вопросы Delphi 2 21.06.2007 09:53
Рисование на форме niva622 Помощь студентам 4 18.01.2007 09:34