Vb6 Visual Basic 6.0-需要在运行时启用/禁用MDI表单的滚动条

Vb6 Visual Basic 6.0-需要在运行时启用/禁用MDI表单的滚动条,vb6,runtime,scrollbar,mdi,Vb6,Runtime,Scrollbar,Mdi,我只需要在某些MDI子窗体中启用MDI父滚动条,而在其他窗体中禁用它。我有分辨率更改的调整代码,但对于DPI更改,窗体宽度超出屏幕大小。所以我需要为这些表单启用它,并为其他表单禁用它 决议 ResizeX = Screen.Width / (1024 * Screen.TwipsPerPixelX) ResizeY = Screen.Height / (768 * Screen.TwipsPerPixelY) 新闻部 XPIXELSPERINCH = GetDeviceCaps(hdc, 88

我只需要在某些MDI子窗体中启用MDI父滚动条,而在其他窗体中禁用它。我有分辨率更改的调整代码,但对于DPI更改,窗体宽度超出屏幕大小。所以我需要为这些表单启用它,并为其他表单禁用它

决议

ResizeX = Screen.Width / (1024 * Screen.TwipsPerPixelX)
ResizeY = Screen.Height / (768 * Screen.TwipsPerPixelY)
新闻部

XPIXELSPERINCH = GetDeviceCaps(hdc, 88)
YPIXELSPERINCH = GetDeviceCaps(hdc, 90)

有没有办法使用sendmessage函数来禁用/启用MDI父窗体滚动条。

我用
ShowScrollBar()
SetWindowLong()
试了一下。我在这两方面都不成功,因为VB6接管并不断重新创建滚动条

我所做的一切都有自己的问题。我相信你可以想出其他“黑客”来绕过这个问题

无论如何,请将
frmMdiChild
MDIChild
属性设置为
False
,并进行如下设置:

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Private Const GW_CHILD As Long = 5
然后在加载表单时:

SetParent frmMdiChild.hwnd, GetWindow(frmMdiParent.hwnd, GW_CHILD)
这将把孩子放在窗口内。你可能需要重新定位它。正如我提到的,如果用户调整了
frmMdiParent
,您可能需要以某种方式对其进行调整

现在,如果您只是简单地调用以下内容(没有找到合适的孩子):

你会完全回避这个问题的。但你可能对它的外观不满意。如果你是,那么完美

SetParent frmMdiChild.hwnd, frmMdiParent.hwnd