윈도우 위에 새로운 윈도우 생성...

반응형

[윈도우 위에 새로운 윈도우 생성]

보통 API에서는
부모 윈도우를 만든 후 그 위에 자식 윈도우를 만들때..
CreateWindow 함수와 함께 WS_CHILD|WS_VISIBLE 를 하여 위치를 설정하면
해당 위치에 생성되게된다.
아..
그 전에..
윈도우 정보를 설정해줘야겠죠..
WNDCLASS이 구조체 사용하는거~ 아시죠.. ^^

이런 작업을 MFC에서는 어떻게 할까요..?
상식적인 내용이지만.. 그 상식 때문에.. 쉽게 잊어버릴수 있다는것~ *

MFC에서는 해당 객체에 포함된 멤버함수 Create 를 사용하게 됩니다.
만약 CWnd 를 상속받은 하나의 윈도우 클래스를 만들었다고 하였을때.
클래스 타입으로 버튼이나, 스태틱 컨트롤, 리스트 컨트롤 등을 설정한다면
그냥 자식 윈도우로 생성이 될것입니다. 허나
임의의 윈도우를 생성하여 그 위에 새로운 컨트롤들을 올려 사용하겠다 라고 하였을때는
분명 런타임 오류가 발생하겠죠.. ^^

왜냐...
임의의 윈도우기 때문에 API에서 사용했던 WNDCLASS와 같이 정보를 설정해주어야 합니다.
MFC에서는 AfxRegisterWndClass 함수를 사용하여 설정하여 줍니다.

ex)
CString strMyClass = AfxRegisterWndClass(CS_VREDRAW|CS_HREDRAW,
                                                             NULL, (HBRUSH)GetStockObject(BLACK_BRUSH),
                                                             NULL);

CWnd *wnd = new CWnd;
wnd->CreateEx(0, strMyClass, _T("child"), WS_OVERLAPPEDWINDOW|WS_CHILD|WS_VISIBLE,
                      10, 10, 300, 300, NULL, NULL);

이런 형태로 만들어주면 다이얼로그나 기타 여러 윈도우 위에..
새로운 하나의 윈도우를 자식으로 가질 수 있습니다..^^

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유