2013-08-21 4 views
0

일부 MDI 자식 폼에서만 MDI 부모 스크롤 막대를 활성화하고 다른 폼에서는 비활성화해야합니다. 해상도 변경을위한 코드 크기를 조정했지만 DPI를 변경하면 양식 너비가 화면 크기를 초과합니다. 그래서 나는이 양식을 위해 그것을 가능하게하고 다른 형태를 위해 그것을 무능하게 할 필요가있다. DPIVisual Basic 6.0 - 런타임에 MDI 폼의 스크롤 막대를 활성화/비활성화해야합니다.

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

를 들어 해상도

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

를 들어

이는/비활성화 MDI 부모 폼의 스크롤 막대를 사용하려면 sendMessage 첨부 기능을 사용하여 어떤 방법입니다.

답변

0

ShowScrollBar()SetWindowLong()으로 조금 시도했습니다. VB6가 대신하고 스크롤바를 다시 만드는 동안 두 가지 모두 성공하지 못했습니다.

내가 뭘했는지는 자체 문제가 있습니다. 그 문제를 해결하기 위해 다른 "해킹"을 생각해 낼 수있을 것입니다.

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) 

은 어쨌든, frmMdiChildMDIChild의 속성이 False로 설정과 같이 일을 설정 설정

이것은 자식을 창안에 배치합니다. 당신은 그것을 재배치해야 할 수도 있습니다. 그리고 언급 한대로 사용자가 frmMdiParent의 크기를 조정하면 어떻게 든 적응해야합니다. 당신은 단순히 대신 (적절한 아이를 얻지 못하고) 다음 호출하는 경우

이제 :

SetParent frmMdiChild.hwnd, frmMdiParent.hwnd 

을 당신은 완전히 문제를 해결 얻을 것이다. 그러나 외모에 만족하지 못할 수도 있습니다. 너라면, 완벽 해!