2013-12-08 2 views
0

후 키 누르기를 허용하지 않습니다. 내 목표는 다른 응용 프로그램에서 브라우저 창을 도킹하여 내 응용 프로그램에 넣는 것입니다.ShowWindow (browserPtr, 3)

부모가 될 패널 hwnd와 브라우저 창의 hwnd가 있습니다. 아이가되고, 제대로 배치

ShowWindow(browserPtr, 3); 
SetParent(browserPtr, browserContainerPanel.Handle); 
MoveWindow(browserPtr, 0, 0, browserContainerPanel.Width, browserContainerPanel.Height, true); 

이 경우 브라우저 창에서 다음은

는 코드입니다. 그러나 키보드 입력을 중지하고 포커스를 수집 할 수 없습니다.

ShowWindow를 호출하지 않으면 창 위치와 크기를 제외한 모든 항목이 올바르게 작동합니다. Wihout ShowWindow 크기와 위치를 설정할 수 없습니다. MoveWindow는 무시했습니다.

도킹 된 윈도우가 사용자 입력을 허용하지 않는 이유는 무엇입니까? 내가 뭘 잘못하고 있니?

UPDATE

현재 내 코드 :

/// Attach container app input thread to the running app input thread, so that 
/// the running app receives user input. 
FAppThreadID = GetWindowThreadProcessId(window, new IntPtr()); 
AttachThreadInput(GetCurrentThreadId(), FAppThreadID, true); 

/// Changing parent of the running app to our provided container control 
SetParent(window, container); 
SendMessage(container, WM_UPDATEUISTATE, UIS_INITIALIZE, 0); 
UpdateWindow(window); 

/// Make the running app to fill all the client area of the container 
SetWindowPos(window, 0, 0, 0, 1000, 1000, SWP_NOZORDER); 
SetForegroundWindow(window); 

그러나이 경우 창 크기에

어떤 이유로 무시됩니다. 그러나 모든 것이 초점과 입력으로 괜찮습니다. 크기를 수정하는 방법?

+0

3이란 무엇입니까? SW_ 상수를 사용하지 않는 이유는 무엇입니까? – Paul

+0

.net에서 사용했는데 거기에 그런 상수를 모르겠습니다. 3은 SW_SHOWMAXIMIZED 및 SW_MAXIMIZE 상수 값입니다. 그래서 여기에는 아무런 차이가 없습니다. – pro100sanya

+1

부모 및 자식 창에는 입력을 관리하는 일종의 방법이 있어야합니다. 브라우저 창에서 적절한 호스팅 인터페이스를 사용해야하지만 사용하고있는 브라우저가 무엇인지 말하지 않았으므로 말할 수있는 것만 큼 많지 않습니다. –

답변

0

사용자 입력을 보내려면 브라우저 창에서 SetFocus를 호출해야합니다.

관련 문제