在win2K下可以实现透明,在WIN98下提示无法找到DLL入口点。
分析其原因是user32文件中没有透明函数。
怎么实现在如题要求?谢谢

解决方案 »

  1.   

    用API里的CreateCompatibleBitmap和SelectObject 
      

  2.   

    有好几个程序都不是使用win2k特有的函数的,但是太大了,超过200k。
      

  3.   

    Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
    Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As LongPrivate Sub Form_Load()
    Dim hbitbmp
    Me.AutoRedraw = True
    '从graphics方法到一个持久性位图的输出调用createcompatiblebitmap函数,建一个位图,其高度和宽度都为0
    hbitmap = CreateCompatibleBitmap(Me.hdc, 0, 0)
    '调用selectobject函数,把所建的位图放到设备环境中
    SelectObject Me.hdc, hbitmap
    '强制完全重画一个对象
    Me.Refresh
    end sub
      

  4.   

    to:yh1205(菜鹅) 
    你的代码在win2000下不太对头啊。在移动窗口后无效。
      

  5.   

    SetLayeredWindowAttributes是2000以上操作系统才有的API函数
      

  6.   

    98下的Windows应用程序想实现透明效果,一般来说需要处理自己的窗口的WM_Paint消息,需要GetDC获取屏幕的HDC,调用BitBlt函数将屏幕将要被覆盖的区域拷贝到内存Bitmap对象中,然后对该对象的ScanLine二维数组逐象素的修改rgbtRed、rgbtGreen和rgbtBlue值,再把它BitBlt到屏幕dc上。
      

  7.   

    to:yh1205(菜鹅) 
    你这种方法没有WIN2000 中 USER32.DLL中SetLayeredWindowAttributes效果好,如果窗体中有图像就没有半透明效果,还有就是移动窗体后不能自动刷新
      

  8.   

    题目是在WIN98下可不可以实现窗体透明?
    2000下没有试过