$PBExportHeader$uo_win32api.sru forward global type uo_win32api from nonvisualobject end type end forward global type uo_win32api from nonvisualobject end type global uo_win32api uo_win32api type prototypes FUNCTION Boolean StrectchBlt(ULong hDCdest,Int x1,Int y1,Int w1,Int h1,ULong hDCsrc,Int x2,Int y2,Int w2,Int h2,ULong lParam) LIBRARY "Gdi32.dll" FUNCTION Long SetWindowPos(Long hwnd,Long ord,Long X,Long Y,Long dx,Long dy,Long uflag) LIBRARY "user32" FUNCTION UInt GetDriveTypeA(String drive) LIBRARY "kernel32.dll" alias for "GetDriveTypeA;Ansi" FUNCTION ULong GetCurrentDirectory(ULong buflen,REF String dir) LIBRARY "kernel32.dll" ALIAS FOR "GetCurrentDirectoryA;Ansi" FUNCTION UInt GetWindowsDirectoryA(REF String dir,UInt buflen) LIBRARY "kernel32.dll" alias for "GetWindowsDirectoryA;Ansi" FUNCTION UInt GetSystemDirectoryA(REF String dir,UInt buflen) LIBRARY "kernel32.dll" alias for "GetSystemDirectoryA;Ansi" FUNCTION Long ExitWindowsEx(Long uflag,Long nouse) LIBRARY "user32.dll" FUNCTION ULong FindWindowA(ULong ClassName,String windowname) LIBRARY "user32.dll" alias for "FindWindowA;Ansi" FUNCTION Long SetParent(Long childwin,Long parentwin) LIBRARY "user32.dll" FUNCTION Long WnetAddConnectionA(String path,String pwd,String drv) LIBRARY "mpr.dll" alias for "WnetAddConnectionA;Ansi" FUNCTION Long FindWindowEx(Long ph,Long ch,REF String cn,REF String wn) LIBRARY "user32.dll" alias for "FindWindowEx;Ansi" FUNCTION Long ShowWindow(Long hwnd,Long nCmdShow) LIBRARY "user32.dll" FUNCTION Long Sleep(Long ms) LIBRARY "kernel32.dll" FUNCTION Long PlaySound(String Filename,Int Mod,Int Flags) LIBRARY "winmm.dll" alias for "PlaySound;Ansi" FUNCTION UInt GetModuleFileNameA(ULong hModule,REF String lpFilename,ULong nSize) LIBRARY "kernel32.dll" alias for "GetModuleFileNameA;Ansi" SUBROUTINE keybd_event(UInt bvk,UInt bscan,Long dwflags,Long dwextrainfo ) LIBRARY 'user32.dll' function long GetWindowLong(ulong hWnd,int nIndex) library "user32.dll" Alias for "GetWindowLongA" function long SetWindowLong (ulong hWnd,int nIndex,long dwNewLong ) library "user32.dll" Alias for "SetWindowLongA" function long GetSystemMenu (ulong hWnd,int bRevert ) library "user32.dll" function Boolean EnableMenuItem (ulong hMenu,int uIDEnableItem,int uEnable) library "user32.dll" FUNCTION ulong BitBlt(ulong hDestDC,ulong x,ulong y,ulong nWidth,ulong nHeight,ulong hSrcDC,ulong xSrc,ulong ySrc,ulong dwRop) LIBRARY "gdi32.dll" FUNCTION ulong CreateCompatibleBitmap(ulong hdc,ulong nWidth,ulong nHeight) LIBRARY "gdi32.dll" FUNCTION ulong CreateCompatibleDC(ulong hdc) LIBRARY "gdi32.dll" FUNCTION ulong CreatePen(ulong nPenStyle,ulong nWidth,ulong crColor) LIBRARY "gdi32.dll" FUNCTION ulong DeleteDC(ulong hdc) LIBRARY "gdi32.dll" FUNCTION ulong DeleteObject(ulong hObject) LIBRARY "gdi32.dll" FUNCTION ulong GetBkColor(ulong hdc) LIBRARY "gdi32.dll" FUNCTION ulong GetBkMode(ulong hdc) LIBRARY "gdi32.dll" FUNCTION ulong IntersectClipRect(ulong hdc,ulong X1,ulong Y1,ulong X2,ulong Y2) LIBRARY "gdi32.dll" FUNCTION ulong MoveToEx(ulong hdc,ulong x,ulong y,ref s_xls_point lpPoint) LIBRARY "gdi32.dll" alias for "MoveToEx;Ansi" FUNCTION ulong LineTo(ulong hdc,ulong x,ulong y) LIBRARY "gdi32.dll" FUNCTION ulong PatBlt(ulong hdc,ulong x,ulong y,ulong nWidth,ulong nHeight,ulong dwRop) LIBRARY "gdi32.dll" FUNCTION ulong SelectObject(ulong hdc,ulong hObject) LIBRARY "gdi32.dll" FUNCTION ulong SetBkMode(ulong hdc,ulong nBkMode) LIBRARY "gdi32.dll" FUNCTION ulong SetBkColor(ulong hdc,ulong crColor) LIBRARY "gdi32.dll" FUNCTION ulong CreateBitmap(long nWidth,long nHeight,long nPlanes,long nBitCount,long lpBits) LIBRARY "gdi32.dll" FUNCTION ulong GetPixel(ulong hdc,ulong x,ulong y) LIBRARY "gdi32.dll" FUNCTION ulong GetObjectBitmap( ulong hgdiobj, int cbBuffer, ref s_xls_bitmap bm ) library "gdi32.dll" alias for "GetObjectA;Ansi" FUNCTION ulong Rectangle(ulong hdc,ulong X1,ulong Y1,ulong X2,ulong Y2) LIBRARY "gdi32.dll" FUNCTION ulong RectVisible(ulong hdc,ref s_xls_rect lpRect) LIBRARY "gdi32.dll" alias for "RectVisible;Ansi" FUNCTION ulong StretchBlt(ulong hdc,ulong x,ulong y,ulong nWidth,ulong nHeight,ulong hSrcDC,ulong xSrc,ulong ySrc,ulong nSrcWidth,ulong nSrcHeight,ulong dwRop) LIBRARY "gdi32.dll" //取得系统固有资源 FUNCTION ulong GetStockObject(ulong nIndex) LIBRARY "gdi32.dll" FUNCTION ulong TextOut(ulong hdc,ulong x,ulong y,ref string lpString,ulong nCount) LIBRARY "gdi32.dll" ALIAS FOR "TextOutA;Ansi" FUNCTION ulong CreateFontIndirect(ref s_xls_font lpLogFont) LIBRARY "gdi32.dll" ALIAS FOR "CreateFontIndirectA;Ansi" FUNCTION ulong GetDeviceCaps(ulong hdc,ulong nIndex) LIBRARY "gdi32.dll" FUNCTION ulong GetTextColor(ulong hdc) LIBRARY "gdi32.dll" FUNCTION ulong SetTextColor(ulong hdc,ulong crColor) LIBRARY "gdi32.dll" // User32.dll //弹出菜单 FUNCTION ulong TrackPopupMenu(ulong hMenu,ulong wFlags,ulong x,ulong y,ulong nReserved,ulong hwnd,ref s_xls_rect lprc) LIBRARY "user32.dll" alias for "TrackPopupMenu;Ansi" FUNCTION ulong ClientToScreen(ulong hwnd,ref s_xls_point lpPoint) LIBRARY "user32.dll" alias for "ClientToScreen;Ansi" FUNCTION boolean DrawEdge(ulong hdc,ref s_xls_rect qrc,ulong edge,ulong grfFlags) LIBRARY "user32.dll" alias for "DrawEdge;Ansi" FUNCTION boolean DrawState(ulong hDC,ulong hBrush,ulong lpDrawStateProc,ulong lParam,ulong wParam,ulong n1,ulong n2,ulong n3,ulong n4,ulong un) LIBRARY "user32.dll" ALIAS FOR "DrawStateA" FUNCTION ulong FillRect( ulong hdc, ref s_xls_rect qrc, ulong hbrush ) LIBRARY "user32.dll" alias for "FillRect;Ansi" FUNCTION ulong GetDC(ulong hwnd) LIBRARY "user32.dll" FUNCTION ulong GetSysColor(ulong nIndex) LIBRARY "user32.dll" FUNCTION ulong GetSysColorBrush( ulong nIndex ) LIBRARY "user32.dll" FUNCTION ulong GetWindowDC(ulong hwnd) LIBRARY "user32.dll" FUNCTION ulong InvalidateRect(ulong hwnd,ref s_xls_rect lpRect,ulong bErase) LIBRARY "user32.dll" alias for "InvalidateRect;Ansi" FUNCTION ulong LoadImage(ulong hInst,ref string lpsz,ulong un1,ulong n1,ulong n2,ulong un2) LIBRARY "user32.dll" ALIAS FOR "LoadImageA;Ansi" FUNCTION ulong ReleaseDC(ulong hwnd,ulong hdc) LIBRARY "user32.dll" FUNCTION ulong WindowFromPoint(ulong xPoint,ulong yPoint) LIBRARY "user32.dll" //设置鼠标扑获 FUNCTION ulong SetCapture(ulong hwnd) LIBRARY "user32.dll" FUNCTION ulong ReleaseCapture() LIBRARY "user32.dll" FUNCTION ulong GetCapture() LIBRARY "user32.dll" //调入dll库 FUNCTION ulong LoadLibrary(ref string lpLibFileName) LIBRARY "kernel32.dll" ALIAS FOR "LoadLibraryA;Ansi" FUNCTION ulong FreeLibrary(ulong hLibModule) LIBRARY "kernel32.dll" FUNCTION ulong GetComputerName(ref string lpBuffer,ref ulong nSize) LIBRARY "kernel32.dll" ALIAS FOR "GetComputerNameA;Ansi" FUNCTION ulong SetCurrentDirectory(ref string lpPathName) LIBRARY "kernel32.dll" ALIAS FOR "SetCurrentDirectoryA;Ansi" end prototypes type variables Constant Int GWL_STYLE = -16 Constant ULong WS_CAPTION = 12582912 Constant ULong WS_CHILD = 1073741824 Constant UInt MF_BYPOSITION = 1024 Constant ULong WS_MINIMIZEBOX = 131072 Constant ULong WS_MAXIMIZEBOX = 65536 Constant ULong WS_MAXIMIZE = 16777216 Constant ULong WS_MINIMIZE = 536870912 Constant ULong WS_VISIBLE = 268435456 Constant ULong WS_VSCROLL = 2097152 Constant ULong WS_SYSMENU = 524288 Constant ULong WS_HSCROLL = 1048576 Constant ULong WS_OVERLAPPED = 0 Constant ULong WS_TILED = WS_OVERLAPPED Constant Int GWL_EXSTYLE = -20 Constant Int WM_CLOSE = 16 Constant ULong SC_CLOSE = 61536 Constant ULong MF_GRAYED = 1 Constant ULong MF_DISABLED = 2 Constant ULong MF_ENABLED = 0 //位图结构大小 constant long US_BITMAP_SIZE = 28 // API CONST constant long TPM_LEFTBUTTON = 0 constant long TPM_RIGHTBUTTON = 2 constant long TPM_LEFTALIGN = 0 constant long TPM_CENTERALIGN = 4 constant long TPM_RIGHTALIGN = 8 // DrawEdge /* 3D border styles */ constant long BDR_RAISEDOUTER = 1 constant long BDR_SUNKENOUTER = 2 constant long BDR_RAISEDINNER = 4 constant long BDR_SUNKENINNER = 8 constant long BDR_OUTER = 3 constant long BDR_INNER = 12 // 0x000c constant long EDGE_RAISED = BDR_RAISEDOUTER + BDR_RAISEDINNER constant long EDGE_SUNKEN = BDR_SUNKENOUTER + BDR_SUNKENINNER constant long EDGE_ETCHED = BDR_SUNKENOUTER + BDR_RAISEDINNER constant long EDGE_BUMP = BDR_RAISEDOUTER + BDR_SUNKENINNER //* Border flags */ constant long BF_LEFT = 1 constant long BF_TOP = 2 constant long BF_RIGHT = 4 constant long BF_BOTTOM = 8 constant long BF_TOPLEFT = BF_TOP + BF_LEFT constant long BF_TOPRIGHT = BF_TOP + BF_RIGHT constant long BF_BOTTOMLEFT = BF_BOTTOM + BF_LEFT constant long BF_BOTTOMRIGHT = BF_BOTTOM + BF_RIGHT constant long BF_RECT = BF_LEFT + BF_TOP + BF_RIGHT + BF_BOTTOM constant long BF_DIAGONAL = 16 // 0x0010 // For diagonal lines, the BF_RECT flags specify the end point of the // vector bounded by the rectangle parameter. constant long BF_DIAGONAL_ENDTOPRIGHT = BF_DIAGONAL + BF_TOP + BF_RIGHT constant long BF_DIAGONAL_ENDTOPLEFT = BF_DIAGONAL + BF_TOP + BF_LEFT constant long BF_DIAGONAL_ENDBOTTOMLEFT = BF_DIAGONAL + BF_BOTTOM + BF_LEFT constant long BF_DIAGONAL_ENDBOTTOMRIGHT= BF_DIAGONAL + BF_BOTTOM + BF_RIGHT constant long BF_MIDDLE = 2048 // 0x0800 /* Fill in the middle */ constant long BF_SOFT = 4096 // 0x1000 /* For softer buttons */ constant long BF_ADJUST= 8192 // 0x2000 /* Calculate the space left over */ constant long BF_FLAT = 16384// 0x4000 /* For flat rather than 3D borders */ constant long BF_MONO = 32768 // 0x8000 /* For monochrome borders */ //系统颜色 constant long COLOR_SCROLLBAR = 0 constant long COLOR_BACKGROUND = 1 constant long COLOR_ACTIVECAPTION = 2 constant long COLOR_INACTIVECAPTION = 3 constant long COLOR_MENU = 4 constant long COLOR_WINDOW = 5 constant long COLOR_WINDOWFRAME = 6 constant long COLOR_MENUTEXT = 7 constant long COLOR_WINDOWTEXT = 8 constant long COLOR_CAPTIONTEXT = 9 constant long COLOR_ACTIVEBORDER = 10 constant long COLOR_INACTIVEBORDER = 11 constant long COLOR_APPWORKSPACE = 12 constant long COLOR_HIGHLIGHT = 13 constant long COLOR_HIGHLIGHTTEXT = 14 constant long COLOR_BTNFACE = 15 constant long COLOR_BTNSHADOW = 16 constant long COLOR_GRAYTEXT = 17 constant long COLOR_BTNTEXT = 18 constant long COLOR_INACTIVECAPTIONTEXT =19 constant long COLOR_BTNHIGHLIGHT = 20 //DrawState 参数 constant long DST_BITMAP = 4 constant long DSS_DISABLED = 32 //GetSys constant long LOGPIXELSX = 88 /* Logical pixels/inch in X */ constant long LOGPIXELSY = 90 constant long TRANSPARENT = 1 //BitBlt 参数 constant long srccopy = 13369376 constant long notsrccopy = 3342344 constant long SRCAND = 8913094 constant long SRCPAINT = 15597702 constant long DSTINVERT = 5570569 constant long SYSTEM_FONT = 13 //getstockobject(... ) // LoadImage 参数 constant long IMAGE_BITMAP = 0 constant long IMAGE_ICON = 1 constant long IMAGE_CURSOR = 2 constant long LR_DEFAULTCOLOR = 0 constant long LR_MONOCHROME = 1 constant long LR_COLOR = 2 constant long LR_COPYRETURNORG = 4 constant long LR_COPYDELETEORG = 8 constant long LR_LOADFROMFILE =16 constant long LR_LOADTRANSPARENT= 32 constant long LR_DEFAULTSIZE = 64 constant long LR_VGACOLOR = 128 constant long LR_LOADMAP3DCOLORS = 4096 constant long LR_CREATEDIBSECTION =8192 constant long LR_COPYFROMRESOURCE = 16384 constant long LR_SHARED = 32768 end variables forward prototypes PUBLIC FUNCTION Long u_sleep (Long ms) PUBLIC FUNCTION Long u_playsound (String Filename, Integer Mod, Integer Flags) PUBLIC FUNCTION ULong u_findwindowa (UnsignedLong ClassName, String windowname) PUBLIC FUNCTION UInt u_getwindowsdirectorya (REF String dir, UnsignedInteger buflen) PUBLIC FUNCTION UInt u_getsystemdirectorya (REF String dir, UnsignedInteger buflen) PUBLIC FUNCTION String u_getcurrentdirectory () PUBLIC FUNCTION Integer u_getmodulefilenamea (REF String arg_currentdir, REF String arg_runname, REF String arg_msg) PUBLIC FUNCTION Long u_setwindowpos (Long arg_handle) public function long of_drawarrow (unsignedlong dc, long lx, long ly, long acolor, boolean isenabled) public function window of_getparentwin (powerobject apo_1) public function unsignedlong of_loadbitmap (string bmpname, ref unsignedlong cx, ref unsignedlong cy) end prototypes PUBLIC FUNCTION Long u_sleep (Long ms); RETURN Sleep(ms) END FUNCTION PUBLIC FUNCTION Long u_playsound (String Filename, Integer Mod, Integer Flags); RETURN PlaySound(Filename,Mod,Flags) END FUNCTION PUBLIC FUNCTION ULong u_findwindowa (UnsignedLong ClassName, String windowname); RETURN FindWindowA( ClassName, windowname) END FUNCTION PUBLIC FUNCTION UInt u_getwindowsdirectorya (REF String dir, UnsignedInteger buflen); RETURN GetWindowsDirectoryA(dir,buflen) END FUNCTION PUBLIC FUNCTION UInt u_getsystemdirectorya (REF String dir, UnsignedInteger buflen); RETURN GetSystemDirectoryA( dir, buflen) END FUNCTION PUBLIC FUNCTION String u_getcurrentdirectory (); String dir dir = Space(255) GetCurrentDirectory(255,dir) RETURN dir END FUNCTION PUBLIC FUNCTION Integer u_getmodulefilenamea (REF String arg_currentdir, REF String arg_runname, REF String arg_msg); String ls_Buffer ls_Buffer = Space(255) Long i = 0 IF Handle(GetApplication()) <> 0 THEN // //已编译 i = GetModuleFileNameA(Handle(GetApplication()),ls_Buffer,255) IF i = 0 THEN arg_msg = '获取应用程序路径失败!' RETURN i END IF arg_currentdir = ls_Buffer DO arg_currentdir = Right(arg_currentdir,Len(arg_currentdir) -Pos(arg_currentdir,"\") ) LOOP UNTIL Pos(arg_currentdir,"\") = 0 arg_runname = arg_currentdir //运行程序名 arg_currentdir = Left(ls_Buffer,Len(ls_Buffer) - Len(arg_currentdir)) //运行目录 ELSE arg_msg = '获取应用程序路径失败,应用程序没有编译!' RETURN i END IF RETURN i END FUNCTION PUBLIC FUNCTION Long u_setwindowpos (Long arg_handle); RETURN SetWindowPos(arg_handle,-1,0,0,0,0,3) END FUNCTION public function long of_drawarrow (unsignedlong dc, long lx, long ly, long acolor, boolean isenabled);long newpen, oldpen //定义结构休变量,oldpoint ( 用以保存上次画笔的起始位置== x,y 坐标 ) s_xls_point oldpoint //画带有子菜单项的下拉图标( 黑色的向下标识的三角符号 ) if isenabled then //true 画黑色有效三角标识, false 画3D灰色无效三角标识 //CreatePen: 用指定的样式-- 0 、宽度-- 1 和 颜色 --acolor 创建一个画笔 newpen = CreatePen( 0, 1, acolor ) //SelectObject: 当前选定的画笔决定了在设备场景中描绘的线段颜色及样式,一次选入设备场景的只能有一个对象 // dc: 一个设备场景的句柄 newpen: 一个画笔、位图、刷子、字体或区域的句柄 oldpen = SelectObject( dc, newpen ) //MoveToEX: 为指定的设备场景指定一个新的当前画笔位置。前一个位置保存在lpPoint ( oldpoint )中 MoveToEX( dc, lx, ly, oldpoint ) // 用当前画笔画一条线,从当前位置连到一个指定的点。这个函数调用完毕,当前位置变成x,y点 LineTo( dc, lx + 5, ly ) MoveToEX( dc, lx + 1, ly + 1, oldpoint ) LineTo( dc, lx + 4, ly + 1 ) MoveToEX( dc, lx + 2, ly + 2, oldpoint ) LineTo( dc, lx + 3, ly + 2 ) else //false 画3D灰色无效三角标识 // GetSysColor: 判断指定windows显示对象的颜色. COLOR_BTNSHADOW: 按钮的3D阴影 // COLOR_BTNHIGHLIGHT: 按钮的3D加亮区 newpen = CreatePen( 0, 1, GetSysColor( COLOR_BTNSHADOW ) ) oldpen = SelectObject( dc, newpen ) MoveToEX( dc, lx, ly, oldpoint ) LineTo( dc, lx + 5, ly ) MoveToEX( dc, lx + 1, ly + 1, oldpoint ) LineTo( dc, lx + 4, ly + 1 ) MoveToEX( dc, lx + 2, ly + 2, oldpoint ) LineTo( dc, lx + 3, ly + 2 ) newpen = SelectObject( dc, oldpen ) //DeleteObject: 用这个函数删除GDI对象,比如画笔、刷子、字体、位图、区域以及调色板等等。 //对象使用的所有系统资源都会被释放 DeleteObject( newpen ) newpen = CreatePen( 0, 1, GetSysColor( COLOR_BTNHIGHLIGHT ) ) oldpen = SelectObject( dc, newpen ) MoveToEX( dc, lx + 4, ly + 1, oldpoint ) LineTo( dc, lx + 6, ly + 1 ) MoveToEX( dc, lx + 3, ly + 2, oldpoint ) LineTo( dc, lx + 5, ly + 2 ) MoveToEX( dc, lx + 3, ly + 3, oldpoint ) LineTo( dc, lx + 4, ly + 3 ) end if newpen = SelectObject( dc, oldpen ) DeleteObject( newpen ) return 0 end function public function window of_getparentwin (powerobject apo_1);PowerObject lpo_tmp Window lw_tmp lpo_tmp = aPo_1.GetParent() Do While lpo_tmp.TypeOf() <> Window! lpo_tmp= aPo_1.GetParent() Loop lw_tmp = lpo_tmp Return lw_tmp end function public function unsignedlong of_loadbitmap (string bmpname, ref unsignedlong cx, ref unsignedlong cy);//根据lht_nvo_toolbar_button的 of_setbmp() 函数传送的图片名,将图片信息载入内存中 ulong ll_inst //us_bitmap : 位图的结构体 s_xls_bitmap lus_bmp ulong ll_bmp setnull( ll_inst ) //LoadImage: 载入一个位图、图标或指针 ( 载入工具栏所需的图片 ) ll_bmp = LoadImage( ll_inst, bmpname, 0, 0, 0, LR_LOADFROMFILE ) if ll_bmp = 0 then return 0 //GetObjectBitmap: 取得对指定对象进行说明的一个结构. US_BITMAP_SIZE: 位图结构大小 GetObjectBitmap( ll_bmp, US_BITMAP_SIZE, lus_bmp ) cx = lus_bmp.bmwidth cy = lus_bmp.bmheight // return ll_bmp end function on uo_win32api.create call super::create TriggerEvent( this, "constructor" ) end on on uo_win32api.destroy TriggerEvent( this, "destructor" ) call super::destroy end on