为什么FORM 或 PICTUREBOX 的 AutoRedraw属性设为TRUE,就无法用API显示文本?

BadCatw 2001-11-08 03:38:44
如将 PICTUREBOX的AUTOREDRAW设为TRUE,用:
DrawText 等API函数无法在图片框上显示文本,请问如何解决?
...全文
115 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
BadCatw 2001-11-11
  • 打赏
  • 举报
回复
to uguess(uguess) :

谢谢,我回去试试。
uguess 2001-11-08
  • 打赏
  • 举报
回复

谁说显示不出来?试试我下面的例子,记着把FORM的AutoRedraw属性设为TRUE!

Option Explicit

Const DC_ACTIVE = &H1
Const DC_ICON = &H4
Const DC_TEXT = &H8
Const BDR_SUNKENOUTER = &H2
Const BDR_RAISEDINNER = &H4
Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER)
Const BF_BOTTOM = &H8
Const BF_LEFT = &H1
Const BF_RIGHT = &H4
Const BF_TOP = &H2
Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM)
Const DFC_BUTTON = 4
Const DFC_POPUPMENU = 5 'Only Win98/2000 !!
Const DFCS_BUTTON3STATE = &H10
Const DT_CENTER = &H1
Const DC_GRADIENT = &H20 'Only Win98/2000 !!
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function DrawCaption Lib "user32" (ByVal hWnd As Long, ByVal hdc As Long, pcRect As RECT, ByVal un As Long) As Long
Private Declare Function DrawEdge Lib "user32" (ByVal hdc As Long, qrc As RECT, ByVal edge As Long, ByVal grfFlags As Long) As Long
Private Declare Function DrawFocusRect Lib "user32" (ByVal hdc As Long, lpRect As RECT) As Long
Private Declare Function DrawFrameControl Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal un1 As Long, ByVal un2 As Long) As Long
Private Declare Function DrawText Lib "user32" Alias "DrawTextA" (ByVal hdc As Long, ByVal lpStr As String, ByVal nCount As Long, lpRect As RECT, ByVal wFormat As Long) As Long
Private Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function OffsetRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long

Private Sub Form_Load()
'KPD-Team 1999
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim R As RECT
'Clear the form
Me.Cls
'API uses pixels
Me.ScaleMode = vbPixels
'Set the rectangle's values
SetRect R, 0, 0, Me.ScaleWidth, 20
'Draw a caption on the form
DrawCaption Me.hWnd, Me.hdc, R, DC_ACTIVE Or DC_ICON Or DC_TEXT Or DC_GRADIENT
'Move the recatangle
OffsetRect R, 0, 22
'Draw an edge on our window
DrawEdge Me.hdc, R, EDGE_ETCHED, BF_RECT
OffsetRect R, 0, 22
'Draw a focus rectangle on our window
DrawFocusRect Me.hdc, R
OffsetRect R, 0, 22
'Draw a frame control on our window
DrawFrameControl Me.hdc, R, DFC_BUTTON, DFCS_BUTTON3STATE
OffsetRect R, 0, 22
'draw some text on our form
DrawText Me.hdc, "Hello World !", Len("Hello World !"), R, DT_CENTER
End Sub

Jneu 2001-11-08
  • 打赏
  • 举报
回复
使 PictureBox 控件的自动重绘有效。图形和文本输出到屏幕,并存储在内存的图象中。该对象不接受绘制事件,必要时,用存储在内存中的图象进行重绘。
Amoon 2001-11-08
  • 打赏
  • 举报
回复
没办法
在Windows操作系统上,VisualBasic作为一门计算机语言,功能非常强大,而且简单易学。VisualBasic提供可视化设计工具,编程人员可利用VisualBasic提供的控件轻松的“画”出应用程序的友好界面,因此容易入门,入门以后就有能力进一步学习难度更大的编程语言。VisualBasic作为编程人员的首选程序设计语言,有如下特点: 1、VisualBasic是开发Windows应用程序的强有力的工具,使用了最先进的程序设计思想,能轻而易举的开发出符合Windows规范和风格的应用程序; 2、VisualBasic在科学计算、多媒体软件开发、网络应用等方面都有强大的功能,尤其在数据库开发方面,提供了许多控件,便于连接、查询和显示查询结果,现在很多管理软件,包括一些大型软件,都是利用VisualBasic开发的; 3、VisualBasic改变了传统的程序的机制,采用“事件驱动”方式,用户操作产生不同的事件,程序根据这些事件去分别执行不同的子程序。编程人员可以分别编写出这样一些子程序,因此使编程难度大大下降。   在VisualBasic语言中,控件是用户界面的基本要素,是进行可视化程序设计的重要基础,它不仅关系到界面是否友好,还直接关系到程序的运行速度以及整个程序的好坏。每个控件都具有它的属性、方法和事件,设计窗体就必须很好的掌握控件的属性和应用方法。控件具有很多相同的属性,如标识控件名称的Name属性、标识控件标题的Caption属性、有效属性Enable、可见属性Visible、标识控件位置和大小的Top、Left、Width、Height、属性、定义背景色的BackColor属性、定义前景色的ForeColor属性和定义字体类型的Font属性,各个控件也有其特有的一些属性。   VisualBasic中的控件分为两种,即标准控件(或内部控件)和ActiveX控件。内部控件是工具箱中的“常驻”控件,始终出现在工具箱里,而ActiveX控件是扩展名为.ocx的文件(在Windows\System文件夹里),它是根据变成需要添加到工具箱里的。   在一般情况下,工具箱里只有标准控件,为了把ActiveX控件添加到工具箱里,可按以下步骤执行: (1)在菜单里选择“工程-部件”,弹出“部件”对话框; (2)在对话框中选择“控件”选项卡,显示ActiveX控件列表; (3)在列表框中找到需要添加的控件名称,单击控件名称左侧的复选框; (4)使用同样的方法选择需要添加的其它控件; (5)单击“确定”按钮,即可将所选ActiveX控件添加到工具箱里。 窗体(FORM)的常用属性 属性 说明 (Name)窗体的名称 ActiveControl返回焦点所在的控件,该属性设计阶段不可用,运行时只读。 Appearance外观效果,取值为:0 平面1 3D(立体) AutoRedraw是否自动刷新或重画窗体上所有图形[获得或设置从绘图(graphics)方法到一个持久性位图的输出],取值为:True False BackColor背景颜色,可从弹出的调色板选择。 BorderStyle设置边界类型,取值为: 0 None(无边界框架)1 FixedSingle(窗口大小固定不变的单线框架) 2 Sizable(窗口大小可变的标准双线框架) 3 FixedDialog(窗口大小固定的对话框窗体) 4 FixedToolWindow(窗口大小固定的工具箱窗体) 5 Sizable ToolWindow(窗口大小可变的工具箱窗体) Caption窗体的标题 ClipControls决定Paint事件的graphics方法是重画整个对象,还是重画新显示的区域。取值为: True或False ControlBox是或有控制框, 取值为: True 有 False 无 DrawMode设定窗体上绘图(graphics方法),Shape,Line等控件的输出外观,有16种可选: 1 黑色 2 非或笔,设置值15的反相 3 与非笔,背景色以及画笔反相二者共有颜色的组合 4 非复制笔,设置值13的反相 5 与笔非,画笔以及显示色反相二者共有颜色的组合 6 反相,显示颜色反相 7 异或笔,画笔颜色以及显示颜色的异或 8 非与笔,设置值9的反相 9 与笔,画笔以及显示色二者共有颜色的组合 10 非异或笔,设置值7的反相 11 无操作,该设置实际上是不画图 12 或非笔,显示颜色与画笔颜色反相的组合 13 复制笔,用ForeColor属性指定的颜色,此为默认值 14 或笔非,画笔颜色与显示颜色反相的组合 15 或笔,画笔颜色与显示颜色的组合 16 白色 DrawStyle设定绘图相关方法使用的直线样式, 有7种可选: 0 实线,此为默认值 1 虚线 2 点线 3 单点划线 4 双点划线 5 无线 6 内部实线 DrawWidth设定绘图相关方法使用的直线宽度 Enabled是或把鼠标或键盘事件发送到窗体,取值为: True 可用 False 不可用 FillColor填充颜色, 可从弹出的调色板选择。 FillStyle填充样式, 有8种可选: 0 全部填充 1 透明,此为默认值 2 水平直线 3 竖直直线 4 上斜对角线 5 下斜对角线 6 十字线 7 交叉对角线 Font字型,可从弹出的对话框选择字体,大小和风格 FontTransparent输出数据是否允许重叠(获得或设置一个值,决定是否显示窗体,打印机或PictureBox上的背景文本/图形)。取值为: True或False ForeColor前景颜色,可从弹出的调色板选择。 HasDC决定是否为该控件分配了唯一的显示上下文。取值为: True或False Height窗体的高度 HelpContextID指定一个对象的缺省帮助文件上下文标识符 Icon为窗体设计图标,该图标位于标题栏的左端 KeyPrevier获得或设置是否在激活对象的上的控件的键盘事件之前,优先激活对象键盘事件。取值为: True或False Left窗体距屏幕左边界的距离 LinkMode获得或设置用于DDE会话的链接类型并激活连接,取值为: 0 None 1 Source LinkTopic获得或设置目标控件的源应用程序和主题 MaxButton窗体右上角最大化按钮是否显示,运行时只读, 取值为: True 显示 False 不显示 MDIChild是否为MDI窗体的子窗体, 取值为: True 为MDI窗体的子窗体 False 否 MinButton窗体右上角最小化按钮是否显示,运行时只读, 取值为: True 显示 False 不显示 MouseIcon MousePointer=99时,设定一个自定义的鼠标图标 MousePointer Moveable是否可以移动窗体, 取值为: True 可以移动 False 不可以移动 NegotiateMenus决定是否将对象的菜单合并到该窗体的菜单栏上。取值为: True或False OLEDropMode 获得或设置该对象是否能作为一个OLE放下目标, 取值为: 0 None(无) 1 Manual(手动) Palette 获得或设置一个图象,包含了当PaletteMode被设置为Custom时用于调色板的对象。 PaletteMode 获得或设置一个值,决定对于对象的控件使用哪个调色板。取值为: 0 Halftone 1 UseZOrder 2 Custom Picture 窗体背景图片 RightToLeft 文本书写是否自左向右。取值为: True False 自右向左 ScaleHeight 自定义坐标系的纵坐标轴的高度 ScaleLeft 自定义坐标系的左边界起点的横坐标 ScaleMode 获得或设置一个值,指示当使用graphics方法或可定位的控件时,自定义坐标系的单位, 有8种可选: 0 自定义 1 表示单位为twip(缇),每英寸=1440缇,每厘米=567缇 2 表示单位为point(磅) ,每英寸=72磅,每磅=20缇 3 表示单位为像素,是监视器或打印机分辨率的最小单位 4 表示单位为字符,每个水平单位为120缇,每个垂直单位为240缇 5 表示单位为in(英寸) 6 表示单位为mm(毫米) 7 表示单位为cm(厘米) ScaleTop 自定义坐标系的上边界起点的纵坐标 ScaleWidth 自定义坐标系的横坐标轴的宽度 ShowInTaskbar 窗体或MDI窗体是否出现在Windows95的任务栏。取值为: True 出现 False 不出现 StartUpPosition 窗体第一次出现的位置, 有4种可选: 0 没有指定初始位置 1 设定在所属项目的中央 2 设置在屏幕的中央 3 设置在屏幕的左上角 Tag 存储程序所需的附加数据 Top 窗体距屏幕顶部边界的距离 Visible 窗体是否可见, 取值为: True 该对象可见 False 该对象不可见 WhatsThisButton 获得或设置是否在一个窗体或MDI窗体的标题上显示"这是什么"按钮。取值为: True或False WhatsThisHelp 获得或设置是否在上下文相关帮助中, 使用Windows95帮助或主帮助窗口提供的"这是什么"弹出菜单。取值为: True或False Width 窗体的宽度 WindowStart 获得或设置一个窗体窗口运行时的可见状态, 取值为: 0 窗体正常状态 1 窗体最小状态 2 窗体最大状态

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧