程序功能使窗体随着分辨率改变大小,在“工程”菜单栏下,选取“添加模块”,为工程添加一个模块并在模块中添加如下代码:
在其他窗体中调用此模块,但报错 无效的关键字me,怎么解决呢?谢谢!
 
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Dim dxSet As New DirectX7
'声明DirectX7对象
Dim ddSet As DirectDraw7
'声明DirectDraw7对象
Dim DisModesEnum As DirectDrawEnumModes
'声明DirectDrawEnumModes对象
Dim dds2 As DDSURFACEDESC2Private Const SM_CXSCREEN = 0
Private Const SM_CYSCREEN = 1
Private Const COLOR = 32            '-----32位真彩色
Private Const FLASH = 75            '-----75HZ刷新率
Public Function setResize()
Set ddSet = dxSet.DirectDrawCreate("")
    'dxSet建立DirectDraw对象ddSetddSet.SetCooperativeLevel Me.hwnd, DDSCL_NORMAL
    '设置协作水平
Set DisModesEnum = ddSet.GetDisplayModesEnum(DDEDM_DEFAULT, dds2)
 Call ddSet.SetCooperativeLevel(Me.hwnd, DDSCL_ALLOWMODEX Or DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE)    MsgBox h
    MsgBox v
    MsgBox COLOR
    MsgBox FLASH
    h = GetSystemMetrics(SM_CXSCREEN)     '//水平方向
    v = GetSystemMetrics(SM_CYSCREEN)    '//竖直方向ddSet.SetDisplayMode h, v, COLOR, FLASH, DDSDM_DEFAULTEnd Function

解决方案 »

  1.   

    在标准模块中不能使用Me.
    正确的做法是:在setResize函数中设置一个形式参数(Long型),然后将Me.hWnd传递给这个参数即可.最后,再用setResize返回你所需要的返回值(也可以没有返回值).
      

  2.   


    Public Function setResize(byval mHwnd as long) 
    Set ddSet = dxSet.DirectDrawCreate("") 
        'dxSet建立DirectDraw对象ddSet ddSet.SetCooperativeLevel mHwnd, DDSCL_NORMAL 
        '设置协作水平 
    Set DisModesEnum = ddSet.GetDisplayModesEnum(DDEDM_DEFAULT, dds2) 
    Call ddSet.SetCooperativeLevel(mHwnd, DDSCL_ALLOWMODEX Or DDSCL_FULLSCREEN Or DDSCL_EXCLUSIVE)     MsgBox h 
        MsgBox v 
        MsgBox COLOR 
        MsgBox FLASH 
        h = GetSystemMetrics(SM_CXSCREEN)    '//水平方向 
        v = GetSystemMetrics(SM_CYSCREEN)    '//竖直方向 ddSet.SetDisplayMode h, v, COLOR, FLASH, DDSDM_DEFAULT End Function 在窗体中调用,用以下语句:
    setResize Me.Hwnd