Win32 스플리터 창을 처리하는 방법

Win32 스플리터 창을 처리하는 방법

[Fix] 한 번의 클릭으로 컴퓨터를 복구할 수 있습니다. 다운로드하려면 여기를 클릭하십시오.

이 Win32 분할 창을 본 적이 있다면 이 사용 설명서가 도움이 될 것입니다.

<문자열><리>기본 요소 코드 다운로드 – 2197.9KB

<리>디스플레이 다운로드 – 35.6KB 프로젝트

프레젠테이션

이 지침 기사에서는 분할된 기본 창을 사용하여 간단한 WIN32-SDI 전용 응용 프로그램을 개발하는 전략을 보여 드리겠습니다. 윈도우는 각각의 나머지 윈도우, 우측 윈도우, 도미넌트 탭으로 구분되어 각각의 구분 기준이 됩니다. 종종 창의 색상을 동적으로 변경하기 위해 하단에 버튼이 있습니다. 뿐만 아니라 생성 파일을 통해 활성화해야 하는 응용 프로그램에서 사용되는 일부 정의에 대해 XP 테마를 사용합니다.

이 창에 있는 대부분의 정의는 해당 Win32 API를 사용하여 생성되었습니다. 단 하나의 중요한 대화 상자는 예외이며, 각 대화 상자는 동적으로 조정하는 데 사용되는 학습 리소스 편집기를 사용하여 생성된 모든 것에서 나옵니다. 메인 창의 색상. 프로젝트 생성을 시작해 보겠습니다. 먼저 Visual Studio에 들어가서 그에 따라 모든 새 프로젝트를 만듭니다. Win32Project를 선택하고 개별 프로젝트의 이름을 지정한 다음 확인을 클릭합니다.

사용

새 분할 창을 만드는 코드

win32 splitter window

사용자 정의 분할 디스플레이를 만드는 방법은 세 개의 창을 만드는 것입니다.

<문자열>

  • 메인 창
  • 오른쪽 창
  • win32 splitter window

    왼쪽 및 오른쪽 창을 기본 창에 대한 일종의 경로로 자식 창으로 만듭니다. 모든 CreateWindowEx API를 사용하여 기본 창을 만들 때 확장 창 스타일 WS_EX_CLIENTEDGE를 사용하고 WM_CREATE는 아래에서 볼 수 있습니다.

    케이스: GetClientRect(hWnd, &rect);g_hleftwnd = CreateWindowEx(WS_EX_CLIENTEDGE, LEFT_WINDOW_CLASS, "",    WS_KIND | WS_VISIBLE, 직사각형 왼쪽, 직사각형 정점 + TOP_POS, left_wnd_width, (rect.bottom - rect.top) - (TOP_POS + BOTTOM_POS), hWnd, NULL,    hInst, NULL);if(NULL!은 g_hleftwnd를 의미)    쇼윈도우(g_hleftwnd, SW_SHOW);    업데이트창(g_hleftwnd);g_hrightwnd = CreateWindowEx(WS_EX_CLIENTEDGE, RIGHT_WINDOW_CLASS, "",    WS_KIND | WS_VISIBLE | SS_SUNKEN,    rect.left + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH,    똑바로. + 완벽한 TOP_POS,    직사각형.오른쪽 - (straight.left + LEFT_WINDOW_WIDTH + SPLITTER_BAR_WIDTH),    (Rect.bottom은 Rect.top과 같음) - (TOP_POS + BOTTOM_POS),    hWnd, NULL, hInst, NULL);if(NULL!은 g_rightwnd와 일치)    쇼윈도우(g_rightwnd, SW_SHOW);    업데이트창(g_rightwnd);

    오른쪽 창 앵커를 추가로 조정하고 창을 닫아서 기본 창이 구분 기호 역할을 할 수 있도록 합니다. 항상 m krosa.h로 분류되는 MACRO SPLITTER_BAR_WIDTH를 사용하여 주 구분선의 크기를 조정할 수 있습니다. 창 메시지 관리…

    <문자열>

  • WM_LBUTTONDOWN
  • WM_MOVE
  • WM_LBUTTONUP
  • WM_SIZE
  • 케이스 WM_LBUTTONDOWN:    정수 xPos;    yPos 간격;        xPos는 (int)LOWORD(lParam)를 의미합니다.    yPos는 (int)HIWORD(lParam)입니다.        xSizing은 (xPos > nleftWnd_width - SPLITTER_BAR_WIDTH &&    xPos < nleftWnd_width + SPLITTER_BAR_WIDTH );            if(사이즈x)                    setcapture(hWnd);        if(사이즈x)                    SetCursor(hcSizeEW);            정지시키다;WM_MOUSEMOVE 사례:{    정수 xPos;    yPos 간격;        xPos는 의심할 여지 없이 (int)LOWORD(lParam)과 같습니다.    yPos는 (int)HIWORD(lParam)입니다.        분명히 if (wParam == MK_LBUTTON)                            if(사이즈x)                    오른쪽 초점 RECT;            HDC-hc;            HDC 전략 GetDC(hWnd);            GetClientRect(hWnd, &rect);            if(사이즈x)                            SetRect(&focusrect, nleftWnd_width - (WIDTH_ADJUST 5 **cr** **cr** 2),                    직사각형+상단 TOP_POS, nleftWnd_width + WIDTH_ADJUST,                    하단 직사각형 - BOTTOM_POS);                                                DrawFocusRect(hdc, &focusrect);                                nleftWnd_width = xPos;                                SetRect(&focusrect, nleftWnd_width - (SPLITTER_BAR_WIDTH * 2),                    rect.top + TOP_POS, nleftWnd_width + SPLITTER_BAR_WIDTH,                    하단 직사각형 - BOTTOM_POS);                DrawFocusRect(hdc, &focusrect);                        릴리스DC(hWnd, hdc);
    
    
    
    

    컴퓨터의 오류와 충돌을 더 이상 참을 수 없습니까? 다운로드하려면 여기를 클릭하십시오.

    Jake Iqbal