ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GUI 제어 - Windows
    GUI/컨트롤 2009. 3. 22. 23:01
    int WINAPI WinMain(
      HINSTANCE hInstance,  // handle to current instance
      HINSTANCE hPrevInstance,  // handle to previous instance
      LPSTR lpCmdLine,      // pointer to command line
      int nCmdShow          // show state of window
    )

    GetCommandLine()


    WM_CREATE
    WM_DESTROY
    WM_QUIT
    WM_PAINT
    WM_KEYDOWN
    WM_CHAR
    WM_LBUTTONDOWN
    WM_CONTEXTMENU
    WM_HELP

    GetMessage()
    TranslateMessage()
    DispatchMessage()
    WaitMessage()
    PeekMessage()
    DefWindowProc()
    메시지를 무사히 처리했으면 0을 리턴

    메시지 크래커
    HANDLE_MSG()

    미리 등록되어 있는 윈도우 클래스(standard Windows controls)
        컨트롤에 따른 고유한 스타일(속성)
        통지 메시지

        button // 스타일(푸시 버튼, 체크 박스, 라디오 버튼)
    BS_PUSHBUTTON

    on WM_COMMAND
        static // 텍스트 레이블, 아이콘, 비트맵, 테두리(outline), 사각형(rectangle)
        scrollbar // 스크롤 바
        edit // 텍스트 편집/입력
        listbox // list box
        combobox // combo box
        .. // tab
        .. // 그룹 박스
    CreateWindow()
    WS_CHILD
    WS_VISIBLE
    common controls // 윈도우 95
        Header
        List-view
        Rebar
        Toolbar
        ToolTip
        Trackbar
        SysTreeView32 // Tree-view, 트리
        msctls_trackbar32 // 슬라이더
        스핀
        애니메이션
        msctls_pregress // progress bar, 게이지
        프로퍼티 페이지

    owner draw
        available for all controls.

    Custom draw
        available only for the common controls
        not available for the standard (and older) Windows controls

    메뉴
    WM_COMMAND(싱글 엔트리 포인트)에서 validation을 한다.
    액셀러레이터
    핫키
    툴바
    버튼

    WM_CTLCOLORBTN // 푸시 버튼은 오너 드로우 버튼으로
    WM_CTLCOLOREDIT
    WM_CTLCOLORLISTBOX
    WM_CTLCOLORSCROLLBAR
    WM_CTLCOLORSTATIC
    WM_CTLCOLORDLG
    WM_CTLCOLORMSGBOX

    WM_SETFONT

    에디트나 콤보 박스, 리치 에디트 등의 컨트롤에는 클립보드를 제어하는 기능
    팝업 메뉴

    WM_CUT
    WM_COPY
    WM_PASTE

    컨트롤의 동작에 약간의 변화를 주려면 '서브클래싱'을 하면 된다.
    SetWindowLongPtr()
    GWLP_WNDPROC
    /*
    SetWindowLong()
    GWL_WNDPROC
    */
    CallWindowProc()

    참조 사이트:

Designed by Tistory.