Public Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
绝对可以实现
绝对可以实现
解决方案 »
- vb中如何修改照片的尺寸
- 用VB如何将excel一个单元格背景色设置为黄色?求高手指教
- 点"添加"按钮时,默认把所有项目信息从项目表里读出来,不要手工去选,用户需要填的就是:棚号、计件数、职工信息
- winsock访问远程access的问题
- 请问:如何在ListView6.0控件中添加记录?
- 大家进来帮我看看
- 使用CommonDialog控件的CancelError问题(高手请进)
- 请问那里可以找到在vb中播放flash的控件?
- Vb按钮在2000中不支持中文?????????(求助)
- 来看看是不是VB的BUG,急!!!
- 急救:怎样用VB控制串口得到GPS系统时间????
- 如何设置文件属性,比如设c;\autoexec.bat 为只读
Image1 设为背景无边窗口,有边的,要减少Private Sub Form_Resize()
Image1.Top = 0
Image1.Left = 0
Image1.Width = Me.Width
Image1.Height = Me.Height
End Sub
2.控件跟着屏幕的大小变化而自适应
控件与窗口建立关联,如同上
Form1.Width = Screen.Width
Form1.Height = Screen.Height
End Sub设置form1的windowstate属性值为:2-maximized无论在800*600还是1024*768下都能实现全屏!
Option Explicit
Private nFormHeight As Integer
Private nFormWidth As Integer
Private nNumOfControls As Integer
Private nTop() As Integer
Private nLeft() As Integer
Private nHeight() As Integer
Private nWidth() As Integer
Private nFontSize() As Integer
Private nRightMargin() As Integer
Private bFirstTime As Boolean
Private txtH As Double
'--------------------------------------------------------------------------------Sub Init(frm As Form, Optional MDIid As Boolean, Optional nWindState As Variant)
Dim i As Integer
Dim bWinMax As Boolean
bWinMax = Not IsMissing(nWindState)
If MDIid = True Then
nFormHeight = 9000
nFormWidth = 12000
Else
nFormHeight = 8130
nFormWidth = 10305
End If
nNumOfControls = frm.Controls.Count - 1
bFirstTime = True
ReDim nTop(nNumOfControls)
ReDim nLeft(nNumOfControls)
ReDim nHeight(nNumOfControls)
ReDim nWidth(nNumOfControls)
ReDim nFontSize(nNumOfControls)
ReDim nRightMargin(nNumOfControls)
On Error Resume Next
For i = 0 To nNumOfControls
If TypeOf frm.Controls(i) Is Line Then
nTop(i) = frm.Controls(i).Y1
nLeft(i) = frm.Controls(i).X1
nHeight(i) = frm.Controls(i).Y2
nWidth(i) = frm.Controls(i).X2
ElseIf TypeOf frm.Controls(i) Is TextBox Then
nTop(i) = frm.Controls(i).Top
nLeft(i) = frm.Controls(i).Left
nHeight(i) = frm.Controls(i).Height
nWidth(i) = frm.Controls(i).Width
nFontSize(i) = frm.FontSize
nRightMargin(i) = frm.Controls(i).RightMargin
txtH = nHeight(i)
Else
nTop(i) = frm.Controls(i).Top
nLeft(i) = frm.Controls(i).Left
nHeight(i) = frm.Controls(i).Height
nWidth(i) = frm.Controls(i).Width
nFontSize(i) = frm.FontSize
nRightMargin(i) = frm.Controls(i).RightMargin
End If
NextIf MDIid = True Then
frm.Height = Screen.Height
frm.Width = Screen.Width
Else
frm.Height = frm_Sys_Main.Height - frm_Sys_Main.tbToolBar.Top - frm_Sys_Main.tbToolBar.Height - frm_Sys_Main.sbStatusBar.Height
frm.Width = frm_Sys_Main.Width - frm_Sys_Main.MainButt.Width
End If
bFirstTime = True
End Sub'--------------------------------------------------------------------------------
Sub FormResize(frm As Form, Optional MDITofF As Boolean)
Dim i As Integer
Dim nCaptionSize As Integer
Dim dRatioX As Double
Dim dRatioY As Double
Dim nSaveRedraw As Long
Dim txtnh As Double
On Error Resume Next
nSaveRedraw = frm.AutoRedraw
frm.AutoRedraw = True
If bFirstTime Then
bFirstTime = False
Exit Sub
End If
If frm.Height < nFormHeight / 2 Then
frm.Height = nFormHeight / 2
End If
If frm.Width < nFormWidth / 2 Then
frm.Width = nFormWidth / 2
End IfnCaptionSize = 400
nCaptionSize = Int(nFontSize(i) / dRatioX) + Int(nFontSize(i) / dRatioX) Mod 2
dRatioY = 1# * (nFormHeight - nCaptionSize) _
/ (frm.Height - nCaptionSize)
dRatioX = 1# * nFormWidth / frm.Width
If Not MDITofF = True Then
On Error Resume Next
For i = 0 To nNumOfControls
If TypeOf frm.Controls(i) Is TextBox Then
frm.Controls(i).Height = Int(nHeight(i) / dRatioY)
txtnh = frm.Controls(i).Height - txtH
Exit For
End If
Next
End If
On Error Resume Next
For i = 0 To nNumOfControls
If TypeOf frm.Controls(i) Is Line Then
frm.Controls(i).Y1 = Int(nTop(i) / dRatioY) + 25
frm.Controls(i).X1 = Int(nLeft(i) / dRatioX)
frm.Controls(i).Y2 = Int(nHeight(i) / dRatioY) + 25
frm.Controls(i).X2 = Int(nWidth(i) / dRatioX)
Else
frm.Controls(i).Top = Int(nTop(i) / dRatioY) - 25
frm.Controls(i).Left = Int(nLeft(i) / dRatioX)
frm.Controls(i).Height = Int(nHeight(i) / dRatioY)
frm.Controls(i).Width = Int(nWidth(i) / dRatioX)
frm.Controls(i).FontSize = nFontSize(i) + IIf(((nFontSize(i) / dRatioX - nFontSize(i)) / 2) - Int((nFontSize(i) / dRatioX - nFontSize(i)) / 2) = 0, (nFontSize(i) / dRatioX - nFontSize(i)) / 2, Int((nFontSize(i) / dRatioX - nFontSize(i)) / 2) + 1)
frm.Controls(i).RightMargin = Int(nRightMargin(i) / dRatioY)
End If
Next
frm.AutoRedraw = nSaveRedraw
End Sub'使用如下:
'在窗体中定义类:
Private autor As New ControlAutoSize'在From_load过程中加入
autor.Init Me
'在Form_Resize过程中加入
autor.FormResize Me
'这样就一切OK了,不但控件改变了,连线条,字体也改了,是不是很好。
自己在ReSize事件中计算坐标比较好
zyl910,怎么计算坐标,能举个例子吗