자식 창 만들기

MDI 자식 창을 만드는 응용 프로그램 CreateMDIWindow 함수 호출 또는 MDI 클라이언트 창에 WM_MDICREATE 메시지를 보낼 수 있습니다. (응용 프로그램 사용할 수 CreateWindowEx 함수 WS_EX_MDICHILD 스타일과 MDI 자식 창을 만들 합니다.) 단일 스레드 MDI 응용 프로그램 메서드 중 하나를 사용 하 여 자식 창을 만들 수 있습니다. 다중 스레드 MDI 응용 프로그램의 스레드가 다른 스레드에서 자식 창을 만들 수 CreateMDIWindow 또는 CreateWindowEx 함수를 사용 해야 합니다.

WM_MDICREATE 메시지의 lParam 매개 변수는 MDICREATESTRUCT 구조를 멀리 포인터입니다. 4 차원 구성원을 포함 하는 구조: 창 고 cxcy, 창의 가로 및 세로 익스텐트를 표시 하는 가로 및 세로 위치를 나타내는 xy를. 이러한 멤버 중 하나는 응용 프로그램에 의해 명시적으로 할당 될 수 있습니다 또는 CW_USEDEFAULT, 위치, 크기 또는 계단식 알고리즘에 따라 둘 경우 시스템 선택으로 설정 되어 있습니다. 어떤 경우에, 모든 4 명의 멤버를 초기화 해야 합니다. Multipad CW_USEDEFAULT를 사용 하 여 모든 차원에 대 한.

MDICREATESTRUCT 구조체의 마지막 멤버 창 스타일 비트를 포함할 수 있습니다 스타일 멤버가입니다. 창 스타일의 조합을 가질 수 있는 MDI 자식 창을 만들지 MDIS_ALLCHILDSTYLES 창 스타일을 지정 합니다. MDI 자식 창을 기본 설정으로 WS_MINIMIZE, WS_MAXIMIZE, WS_HSCROLL, 및 WS_VSCROLL 스타일은이 스타일이 지정 되지 않은 경우.

Multipad는 MDI 자식 창을 만듭니다 (소스 파일 MPFILE에에서 위치는 로컬로 정의 된 AddFile 함수를 사용 하 여 합니다.C). The AddFile 함수 "Untitled"를 하거나 편집 중인 파일의 이름 중 하나를 윈도우의 MDICREATESTRUCT 구조의 szTitle 멤버를 할당 하 여 자식 창 제목을 설정 합니다. SzClass 멤버는 Multipad의 InitializeApplication 함수에 등록 된 MDI 자식 창 클래스의 이름으로 설정 됩니다. HOwner 멤버는 응용 프로그램의 인스턴스 핸들을 설정.

다음 예제에서는 Multipad에 AddFile 함수를 보여 줍니다.

HWND &APIENTRY AddFile(pName) CHAR * pName; 
{HWND hwnd; 
    CHAR sz [160]; 
    MDICREATESTRUCT mcs; 
 
    경우 (! pName) {/ / pName 매개 변수가 NULL 이면 로드 "Untitled" / / STRINGTABLE 리소스에서 문자열을 설정 합니다 szTitle / / MDICREATESTRUCT의 구성원. 
 
        LoadString (hInst, IDS_UNTITLED, sz, sizeof(sz)); 
        mcs.szTitle (LPCTSTR) sz; = 
    } 다른 / / 전체 경로 파일 이름을 사용 하 여 창 제목을 / OpenFile 함수를 호출 하 여 가져온 /는 / / OF_PARSE 플래그를 AddFile() 전에 호출 됩니다. 
 
        mcs.szTitle = of.szPathName; 
 
    mcs.szClass = szChild; 
    mcs.hOwner = hInst; 
 
    / / 자식 창에 대 한 기본 크기를 사용 합니다. 
 
    mcs.x = mcs.cx = CW_USEDEFAULT; 
    mcs.y = mcs.cy = CW_USEDEFAULT; 
 
    / / 줄 자식 창의 기본 스타일. StyleDefault / / 변수 MULTIPAD에 정의 됩니다.C. mcs.style = styleDefault; 
 
    / / 말해 MDI 클라이언트 창이 자식 창을 만들 수 있습니다. 
 
    hwnd = (HWND) SendMessage (hwndMDIClient, WM_MDICREATE, 0, (LONG) (LPMDICREATESTRUCT) amp; mcs); 
 
    / / 파일을 발견 하는 경우 자식으로 그 내용을 읽기 / / 창의 클라이언트 영역. 
 
    경우 (pName) {if (!LoadFile (hwnd, pName)) {/ / 수 없습니다 파일을 로드할; 창을 닫습니다. 
 
            SendMessage (hwndMDIClient, WM_MDIDESTROY, 0 L (DWORD) hwnd); 
        }} hwnd; 반환 
} 
 

WM_MDICREATE 메시지의 lParam 매개 변수에서 전달 된 포인터가 CreateWindow 함수에 전달 되 고 WM_CREATE 메시지 전달 CREATESTRUCT 구조에서 첫 번째 구성원으로 나타납니다. Multipad에서 자식 창을 초기화 자체 WM_CREATE 메시지 처리 추가 데이터에 문서 변수를 초기화 하 고 편집 컨트롤의 자식 창을 만드는 중.

 

Index