2011-08-04 4 views
3

Form2.Show vbModeless, Form1의 Win32 등가물을 사용하면 임의의 hWnd에 소유자 (부모가 아닌)를 설정하고 기본 위치를 설정할 수 있습니까?
알고있는 한, 창을 만들 때만 설정할 수 있습니다.VB6 양식의 소유자로 창 핸들 사용

+0

나는'.Show'은 CreateWindow 함수 [예]에서 – Deanna

+0

그렇다 (물론 계정에 여러 개의 모니터를 촬영)를 호출하기 전에 나 자신을 배치하여 지금은이 문제를 가지고, 당신은'SetWindowLong 함수를 [사용할 수 있습니다 Ptr]'과'GWL_HWNDPARENT'을 'nIndex'로 설정하여 소유자 윈도우를 설정합니다. –

답변

3

DevX에서이 기사를 찾았습니다. 당신의 질문은 거의 그대로입니다.

http://www.devx.com/vb2themax/Tip/18318

+0

나는 DevX를 몇 년 동안 보지 못했다. 아직도 주위에 있다는 것을 깨닫지 못했다. :) 정확히 내가 원했던 것이지만, 다중 모니터 (정확히이 코드를 수정하기를 원했던 것)와 버릇이있다. 사용자 정의 코드를 사용하여 모니터를 가져 와서 중앙에 배치하십시오. 나는 항상 최고의 능력 때문에 맨 나중에 조정할 수 있습니다. 감사합니다 – Deanna

+0

FYI, 소유자 양식을 언로 드하는 VB6에서는 API 소유의 hWnd와 큰 차이가있는 "소유 한"모든 항목을 언로드합니다. – wqw

3

나는 당신이 성취하려고하는 것이 확실하지 않지만, SetParent 기능을 찾고 있다고 생각합니다. hWndChild

Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long 

는 자식 창에 대한 핸들입니다.
hWndNewParent은 새 상위 핸들입니다. 바탕 화면을 소유자로 만들려면 null을 전달하십시오 (정확하게 기억한다면 0).

자세한 내용은 here에서 확인할 수 있습니다.

+0

아니요, 소유자 (모달, 일부 포커스 등)를 사용할 수 없도록 설정하고 부모 (다른 창에 임베드 됨)를 설정하지 않으려 고 시도했습니다. 고마워요. – Deanna

+0

예, 최상위 창에 적합합니다. 소유자 윈도우를 설정하려면 SetWindowLongPtr()보다 SetParent()를 사용하는 것이 좋습니다. –

+0

@Hans - 틀렸어. SetParent를 사용하여 소유자 윈도우를 설정할 수 없으므로 최상위 창도 'hWndNewParent'창에서 상위 처리됩니다. –