2023年12月2日发(作者:)
维普资讯
? 一“ … ; … … … ;…… ’ ; 实用第一 智慧密集 .… 。 . … ActiveWindow。SelectedSheets。Print0ut Copies:=1. Collate:=True Sheets(SjSheetName)。Activate End If End If Next End Sub 检测相片是否存在模块的代码如下: Function F_leOrFolderExistsjJseDir(strPath As String)As Boolean 注意,使用DIR函数来检测文件或者文件夹是否存在在 局域网环境下 If Dir(strPath)=~Then FileOrFolderExists_UseDir=False Else File0rFolderExists UseDir=True End If End Function 灵活应用Excel和VBA技术,可以开发出各种功能强大的 办公自动化系统,为实现办公自动化设计出更多更好更灵活的 解决方案。 (作者:李荣鑫) 国 怎样用C++Builder下实现任意区域截图 首先新建一个工程,在Form1中放入一个TScrollBox 控件,设置其AutoScroll属性为true,然后在ScrollBox中加入 一个TImage控件并重新命名为ImageShow,用来显示抓取到的 图像,将ImageShow的Align属性设为 ̄None,AutoSize属性设 为turc。这样,当在ImageShow中显示大图像时,Tlmage控件 会根据图像的大小自动调节尺寸,TScro11Box控件则会自动设 置滚动条以方便对大图像的浏览。 在工程中加入一个新的窗体Form2,在其上放置一个Tim— age控件Imagel,设置Image1的Align属性为alClient。接下 来,设置程序中要用到的变量,在TForm2中定义七个私有变 量,代码如下: private: TPoint pt;//记录画矩形过程中鼠标的当前位置 int Oldx,Oldy;//记录画矩形过程中的上一个位置 HDC hdcl,hdc2;//设备环境句柄 TRect rect;//定义一个矩形区域对象 bool bMouseDownFlag;//是否按下鼠标左键的标志 为了能让用户在选取的过程中看到和桌面一样的图像,窗 体的大小必须和桌面一样,且窗体要设为无边框模式,同时, 还要把桌面的图像显示在Image中,以生成一个“假桌面”。 在Forml中放置一个Button1,用来点击后显示Form2,实 现的核心代码如下: void_fastcall TForm1::Button1Click(TObject Sender) ( 西与罐 Form1一>Hide() //隐藏Form1 Sleep【100): //延时100毫秒 //显示Form2 Form2=new TForm2(Application) Form2一>ShowModal(): delete FOrm2: ) 一 在Form2的OnCreate事件中添加如下代码: BorderStyle=bsNone;//Form2窗体为无边框模式 WindowState=wsMaximized;//设置Form2窗口最大化 FormStyle=fsStayOnTop;//设置Form2窗口在最前端显示 GetWindowRect(GetDesktopWindow(),&rect) //获取屏幕的矩形范围,GetDesktopWindow()为获取桌面 //窗口句柄 Image1一>Picture=NULL; Image1一>Picture一>Bitmap一>Width=rect.right—rect. 1eft;//设置Image1的宽 Image1一>Picture一>Bitmap一>Height=rect.bottom— rect.top;//设置Image1的高 hdc 1=GetWindowDC(GetDesktopWindow()): //获取源设备环境句柄 hdc2=Image1一>Canvas一>Handle; //获取目标设备环境的句柄 BitBIt(hdc2,0,0,rect.Width(),rect。Height(),hdcl,0,0, SRCCOPY) 在显示Form2时先执行Fomr2中OnCreate事件,即把整个 桌面的图像拷贝到了Form2中的Imagel里,从而生成了一个 “假桌面”。上述代码中的BitBlt函数的功能为对指定的设备 环境区域中的图像进行位块(bit_block)转换,以传送到目标设 备环境。其原型为:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwROP);其中,hdcDest指向目标设备环境的 句柄;nXDest(nYDest)指定目标矩形区域左上角的x(Y) 轴逻辑坐标;nWidth(nHeight)指定目标矩形区域的逻辑宽度 (高度);hdcSrc指向源设备环境句柄;nXSrc(nYSrc)指定 源矩形区域左上角的x(Y)轴逻辑坐标;dwRop:指定光栅 操作代码。下面的代码,将实现如何在 ‘‘假桌面”上画出矩形 区域并截取该区域的图像。Form2中Imagcl的OnMouseDown 事件处理代码如下: void fastcall TForm2::Image1 MouseDown(TObject{ Sender.TMouseButton Button,TShiftState Shift,int X,int Y) 【 if(Button==mbLeft)//如果按下鼠标的左键 【 bMouseDownFlag=true;//标志赋值为“真” Canvas一>Rectangle(pt。X,pt.V,Oldx,Oldy): //在第2次画矩形时清除第一次画的矩形pt.x=×; pt。Y=Y: 0Idx=×:


发布评论