2012-06-28 3 views
0

부모 창과 자식 창이 몇 개 있습니다. SpyXX를 사용하면 아이들이 모두 특정 스타일 클래스를 가지고 있음을 알 수 있습니다 (ChildWindowClass).기존 자식 클래스로 창 (CreateWindowEx)을 만들 수 없습니다.

이 특정 클래스의 이름으로 창을 만들면 CreateWindowExNULL 핸들을 반환합니다. 내 자신의 클래스를 사용하고 부모를 설정하면 창은 하위 창이지만 다른 모든 하위 클래스와는 다른 클래스를가집니다.

내가 스타일을 얻은 다음 설정하면 스타일은 발견되지만 내 자식 창에는 설정되지 않습니다. 아직 CreateWindowEx

HWND firstChild = FindWindowEx(MyClass::_parent, NULL, szFsxChildWindowClass, NULL); 
LONG childStyle = GetWindowLong(firstChild, GWL_STYLE); 
... 
SetWindowLong(MyClass::_child,GWL_STYLE, childStyle); 

저에 의해 등록되지 않은 ChildWindowClass에 사용되는 스타일을 보여주고, 그래서 그것을 등록하는 방법을 대조하는 수 없습니다. 그렇다면 어떻게하면 내 창에 대해이 스타일을 설정할 수 있습니까?

- 요청에 따라 편집 전화 -

child = CreateWindowEx(WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR, 
     szWindowClass, // this is where I want to place the name of the child class 
     _T("Test"), 
     WS_CHILDWINDOW | WS_VISIBLE, 
     x,y, // 0,0 
     w, h, // 500,100 
     MyClass::_parent, // parent 
     NULL, 
     MyClass::_hInstance, // must this be 0?? 
     NULL 
     ); 
+0

CreateWindowEx 호출을 우리에게 보여줘야합니다. –

+0

또한, 사용하려는 창 클래스가 프로세스 공간에 등록되어 있는지 확인하십시오. – nielsj

+0

동일한 프로세스, 동일한 스레드! –

답변

1

확인 GetLastError. 0이 아니면 API를 오용하고있는 것입니다. 0 인 경우 창 프로시 저는 WM_NCCREATE 또는 WM_CREATE에서 FALSE를 반환하여 명시 적으로 생성에 실패했음을 의미합니다.

이러한 메시지를 처리 ​​할 때 창 프로시 저는 기능 (스타일, 제목, 좌표, 부모 창 및 메뉴)에 전달하는 모든 매개 변수에 액세스 할 수 있으며 특정 창 클래스는 lpCreateParams, 또는 심지어 제목이나 좌표에서, 그렇지 않으면 창작에 실패합니다.

해당 클래스의 창에 대해 중단 점을 설정하거나 WM_CREATE을 연결하고 기존 자식 창을 작성한 방법, 매개 변수를 확인하십시오. (단지 문서가 없다고 가정하십시오.)

+0

FSX (Microsoft Flightsimulator)에 연결하려고합니다. 내 지식으로는 문서가 없습니다) 하위 창을 추가하는 방법. 내가 볼 수있는 유일한 방법은 spyxx로 조직하는 방법입니다. –