2011-09-13 2 views
0

좋아, 그래서 내가 tryna 오전에 약간의 개요.
주 부모 창에서 3 자식 창을 만들고 그들을 열거하려면 EnumChildWindowEnumChildProc 사용하려고, 3 자식 창을 만들고 싶습니다. 부모와 같은 높이지만 1/3 폭, 그들에게 하나씩 정렬 .. 그래서이 CreateWindowEx 함수의 문제점은 무엇입니까?

, 나는 이동하고 MoveWindow을 사용하여 정렬하는 자식 창을 만들 수 WM_CREATE MSG를 캡처하고, WM_SIZE, 모든 것이 괜찮습니다 자식 창을 만들지 않는다는 점을 제외하면 나는 그것을 디버깅 할 때 (디버깅하는 동안, 비주얼 스튜디오 2008 년 자동차 창에서), I합니다 (자동차 창 ". 표현이 평가 될 수 없다"고 말했다 여기

가 문의 내 CreateWindowEx 함수 문이 실행 점점되지 않도록 발견 : 물론

CreateWindowEx(0, (LPCWSTR)("childClass"), (LPCWSTR)NULL, WS_CHILD | WS_BORDER, 0, 0, 0, 0, hWnd, (HMENU) (int) (ID_FIRSTCHILD + 1), hInst, NULL); 

사람이/가이드 도와주세요 수, 나는 3 개 창을 만들 수있는 for 루프에서 사용되었다,하지만 ... 그래서
다른 일이/나를 여기에서 무슨 일이 일어나고 있는지 조언을? 아니면 내가 잘못을하는 것입니다

PS? 나는이 코드와 모든 것을 가지고있는 곳에서이 전자 책을 읽으므로, 다른 접근법이나 다른 것을 채택하라고하지 말고, 어린이 창작 코드를 어딘가에 두라. 나는 어떤 프로그램도 만들고 있지 않기 때문에. 다만 책의 예를 다음과 ... :)

+1

당신은뿐만 아니라 그 책에서'(LPCWSTR) ("ChildClass에")를'복사 한 적이 있습니까? 그게 정말로 효과가 있니? –

+0

그래,이 같은 책, 그러나 나는 또한 부모와 같은 클래스로, 즉'비주얼 스튜디오가 메인 창에 대해 기본적으로 생성하는 szWindowClass' 변경하려고하지만, 어떤 좋은하지 않았다 어느 쪽이든. – Razort4x

+1

나는 정말로 모른다. 그러나 그것은 나에게 이상하게 냄새가 난다. 'L "ChildClass에"'으로 대체하려고 ... –

답변

1

내 초능력을 사용하면 자식 창 위의 CreateWindow 함수 호출에 WS_VISIBLE 스타일에 전달해야합니다 제안 - 그래서 당신은 그들을 보일 수있다. :)

내 개발 경험은 다음과 같은 제안 :

CreateWindowEx 함수의 반환 값은 무엇입니까? 변수에 반환 값을 할당 했습니까? 그렇다면 디버거에서 해당 줄에 중단 점을 설정 했습니까? CreateWindow의 반환 값이 NULL이면 GetLastError (디버거에서 "@err"로 평가할 수 있음)는 무엇입니까? 메인 창 후

는 스파이가 자식 윈도우가 존재하는지 ++ 실행 않았다, (눈에 보이지 않는 아이들과) 팝업? 그들의 상태는 무엇입니까?

그렇지 않으면, 당신은 당신의 자식 창 클래스의 WndProc의 WM_CREATE 콜백이 호출지고 있음을 확인 했습니까?

+0

예, 디버거에서 호출이 NULL을 반환했는지 확인한 다음 1407을 반환하는 @err을 확인했습니다. 검색 결과에서 'CreateWindowEx'에 지정된 창 클래스가 등록되지 않았 음을 나타냅니다. 또한이 클래스를 등록하면 WndClassEx :: lpfnWndProc 메서드에서 지정해야하는 자식 창에이 클래스를 등록 할 것이므로? 왜냐하면 부모 클래스에서 그 값은'WndProc'입니다. 그렇다면이 경우에도 동일해야합니까? 이 "ChildClass"를 등록해야합니까? 이전에 나는이 텍스트 문자열을 코드에 넣었지만 실제로 아무것도 지정하지 않았습니다. – Razort4x

+0

동일한 창 클래스의 모든 인스턴스에는 동일한 wndproc 콜백 함수가 있습니다. 두 개의 창 클래스가 필요할 것입니다. 하나는 부모 용이고 다른 하나는 자식 창용입니다 (각 창 클래스에는 wndproc 함수 콜백이 별도로 있습니다). 앱이 시작될 때 두 창 클래스를 모두 등록하십시오. 다르게 동작해야하는 경우 초기화 데이터를 각 창에 전달하기 위해 CreateWindow에 lpParam 인수를 사용하십시오. – selbie

관련 문제