/code/ Рисуем линию на рабочем столе

Раздел посвящен программированию с использованием Power Basic.
Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

/code/ Рисуем линию на рабочем столе

Сообщение Dark Machine » 26.12.2006 (Вт) 13:58

Код: Выделить всё
#COMPILE EXE
#DIM ALL
#INCLUDE "win32api.inc"

SUB DrawLine(StartX AS LONG, StartY AS LONG, EndX AS LONG, EndY AS LONG, LineStyle AS LONG, LineWidth AS LONG, LineColor AS LONG)
     LOCAL Pnt AS POINTAPI, y AS INTEGER, PenHND, DeskTopDc, z AS LONG
     
     DeskTopDc = GetWindowDC(GetDesktopWindow)
     PenHND = CreatePen(LineStyle, LineWidth, LineColor)
     z = SelectObject(DeskTopDc, PenHND)
     y = MoveToEx(DeskTopDc, StartX, StartY, Pnt)
     y = LineTo(DeskTopDc, EndX, EndY)
END SUB


FUNCTION PBMAIN
   
    DrawLine 100, 100, 300, 300, %PS_Solid, 1, %RED
    MSGBOX "Red line on desktop!"

END FUNCTION

volo
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 142
Зарегистрирован: 10.12.2004 (Пт) 11:18
Откуда: Soviet Union

Re: /code/ Рисуем линию на рабочем столе

Сообщение volo » 27.12.2006 (Ср) 10:49

Dark Machine писал(а):
Код: Выделить всё
#COMPILE EXE
#DIM ALL
#INCLUDE "win32api.inc"

SUB DrawLine(StartX AS LONG, StartY AS LONG, EndX AS LONG, EndY AS LONG, LineStyle AS LONG, LineWidth AS LONG, LineColor AS LONG)
     LOCAL Pnt AS POINTAPI, y AS INTEGER, PenHND, DeskTopDc, z AS LONG
     
     DeskTopDc = GetWindowDC(GetDesktopWindow)
     PenHND = CreatePen(LineStyle, LineWidth, LineColor)
     z = SelectObject(DeskTopDc, PenHND)
     y = MoveToEx(DeskTopDc, StartX, StartY, Pnt)
     y = LineTo(DeskTopDc, EndX, EndY)
END SUB


FUNCTION PBMAIN
   
    DrawLine 100, 100, 300, 300, %PS_Solid, 1, %RED
    MSGBOX "Red line on desktop!"

END FUNCTION



Добавлю некоторое уточнение:

After painting is complete, the ReleaseDC function must be called to release the device context. Not releasing the window device context has serious effects on painting requested by applications.

Dark Machine
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 26.05.2004 (Ср) 13:12

Сообщение Dark Machine » 27.12.2006 (Ср) 14:54

Верно заметил!
Подправил
Код: Выделить всё
SUB DrawLine(StartX AS LONG, StartY AS LONG, EndX AS LONG, EndY AS LONG, LineStyle AS LONG, LineWidth AS LONG, LineColor AS LONG)
     LOCAL Pnt AS POINTAPI, y AS INTEGER, PenHND, DeskTopDc, DeskTopWnd, z AS LONG
     
     DeskTopWnd = GetDesktopWindow
     DeskTopDc  = GetWindowDC(DeskTopWnd)
     PenHND = CreatePen(LineStyle, LineWidth, LineColor)
     z = SelectObject(DeskTopDc, PenHND)
     y = MoveToEx(DeskTopDc, StartX, StartY, Pnt)
     y = LineTo(DeskTopDc, EndX, EndY)
       
     DeleteObject z
     DeleteObject PenHND
     ReleaseDC DeskTopWnd, DeskTopDc
     
END SUB


Вернуться в Power Basic

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList