📄 13419.html
字号:
<html>
<head>
<title>大家帮忙看一看这是不是 VB6 的 bug</title>
</head>
<body bgcolor="#FFFFFF" vlink="#808080">
<center>
<h1>大家帮忙看一看这是不是 VB6 的 bug</h1>
</center>
<hr size=7 width=75%>
<hr size=7 width=75%><p>
Posted by <a href="mailto:sephiroth@optimasoft.com.tw">Sephiroth</a> on May 26, 1999 at 17:06:00:<p>
近来在写作 AX Control 时发现一个问题:<p>假设 UserControl.Name = MyCtrl, 它有一个 PropertyPage.Name = MyPage<br>在 UserControl 上设定两个属性存放图片:<p>1. PicCtrl As StdPicture: <br> 只能从 MyCtrl 的 properties window 设定图片<br>2. PicPage As StdPicture:<br> 只能从属性页 MyPage 设定图片 (将 Don't show in property <br> browser 打勾)<p>MyCtrl 的程式如下:(前面的宣告我就省略了...)<p>Public Property Get PicCtrl() As StdPicture<br> Set PicCtrl = mobjPicCtrl<br>End Property<p>Public Property Set PicCtrl(vData As StdPicture)<br> Set mobjPicCtrl = vData<br> PropertyChanged "PicCtrl"<br> PaintPicture mobjPicCtrl, 0, 0<br>End Property<p>Public Property Get PicPage() As StdPicture<br> Set PicPage = mobjPicPage<br>End Property<p>Public Property Set PicPage(vData As StdPicture)<br> Set mobjPicPage = vData<br> PropertyChanged "PicPage"<br> PaintPicture mobjPicPage, 0, 100<br>End Property<p><br>Private Sub UserControl_Paint()<br> PaintPicture mobjPicCtrl, 0, 0<br> PaintPicture mobjPicPage, 0, 100<br>End Sub<p>Private Sub UserControl_ReadProperties(PropBag As PropertyBag)<br> With PropertyBag<br> Set mobjPicCtrl = .ReadProperty("PicCtrl") <br> Set mobjPicPage = .ReadProperty("PicPage")<br> End With<br>End Sub<p>Private Sub UserControl_WriteProperties(PropBag As PropertyBag)<br> With PropertyBag<br> .WriteProperty "PicCtrl", mobjPicCtrl<br> .WriteProperty "PicPage", mobjPicPage<br> End With<br>End Sub<p>MyPage 的程式如下:(不重要的地方我也省略了)<br>在 MyPage 上面放一个 PictureBox.Name = pic, <br>一个 Common Dialog.Name = cdl<br>在 pic 的 MouseDown 写以下程式:<p>Private Sub pic_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)<br> On Error Resume Next<br> Select Case Button<br> Case vbLeftButton<br> With cdl<br> .Filter = "*.gif;*.bmp;*.dib;*.jpg;*.wmf;*.emf;*.ico;*.cur|*.gif;*.bmp;*.dib;*.jpg;*.wmf;*.emf;*.ico;*.cur"<br> .ShowOpen<br> If Err.Number Then<br> Err.Clear<br> Else<br> Set pic.Picture = LoadPicture(cdl.FileName)<br> Set SelectedControls(0).PicPage = pic.Picture<br> End If<br> End With<br> Case vbRightButton<br> Set pic(Index).Picture = Nothing<br> End Select<br>End Sub<p>Private Sub PropertyPage_SelectionChanged()<br> Set pic.Picture = SelectedControls(0).PicPage<br>End Sub<p><br>这程式只有在一种状况下会出错, 如果 PicPage 的图片是 icon 而且是<br>16 色以上的 icon, 那么在设定完成之后, 关闭 Form 再打开, 无论如何<br>PicPage 都会变成只有 16 色的 icon; 反之, 如果我是设定 PicCtrl<br>是一个 24 bit色的 icon 呢? 读取之后, 并不会发生颜色错乱的问题.<br>至于其它格式的图档(jpeg/pcx/gif/bmp)则不会发生问题, 其它格式则没<br>试过. 不知这是 VB6 的 bug 或是程式的问题?<br>
<br>
<br><hr size=7 width=75%><p>
<a name="followups">Follow Ups:</a><br>
<ul><!--insert: 13419-->
<!--top: 13422--><li><a href="13422.html">不对! 不对! 应该还有问题存在</a> <b>Sephiroth</b> <i>17:37:35 5/26/99</i>
(<!--responses: 13422-->0)
<ul><!--insert: 13422-->
</ul><!--end: 13422-->
<!--top: 13421--><li><a href="13421.html">发现问题所在</a> <b>Sephiroth</b> <i>17:27:36 5/26/99</i>
(<!--responses: 13421-->0)
<ul><!--insert: 13421-->
</ul><!--end: 13421-->
</ul><!--end: 13419-->
<br><hr size=7 width=75%><p>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -