겸손한 개발을 위한 자양분

윈도우 스타일

MSDN2009. 2. 18. 11:31

/* Window Styles */
#define WS_OVERLAPPED       0x00000000L  // 기본 윈도우
#define WS_POPUP            0x80000000L  // 팝업 윈도우. WS_CHILD와 함께 쓸 수 없음.
#define WS_CHILD            0x40000000L  // 자식 윈도우. WS_POPUP과 함께 쓸 수 없음.
#define WS_MINIMIZE         0x20000000L  // 생성시 최소화
#define WS_VISIBLE          0x10000000L
#define WS_DISABLED         0x08000000L  // 생성시 사용불가 상태
#define WS_CLIPSIBLINGS     0x04000000L
#define WS_CLIPCHILDREN     0x02000000L
#define WS_MAXIMIZE         0x01000000L  // 생성시 최대화
#define WS_CAPTION          0x00C00000L    /* WS_BORDER | WS_DLGFRAME  */
#define WS_BORDER           0x00800000L  // 얇은 경계선, 크기 조정 불가
#define WS_DLGFRAME         0x00400000L  // 두꺼운 경계선, 타이틀바 삽입 불가
#define WS_VSCROLL          0x00200000L  // 수직 스크롤바를 가진 윈도우
#define WS_HSCROLL          0x00100000L  // 수평 스크롤바를 가진 윈도우
#define WS_SYSMENU          0x00080000L  // 시스템 메뉴를 가진 윈도우
#define WS_THICKFRAME       0x00040000L  // 두꺼운 경계선, 크기 조절 가능
#define WS_GROUP            0x00020000L  // 버튼등의 컨트롤을 그룹 지정할 때에 사용
#define WS_TABSTOP          0x00010000L

#define WS_MINIMIZEBOX      0x00020000L  // 최소화 버튼을 생성
#define WS_MAXIMIZEBOX      0x00010000L  // 최대화 버튼을 생성

#define WS_TILED            WS_OVERLAPPED
#define WS_ICONIC           WS_MINIMIZE
#define WS_SIZEBOX          WS_THICKFRAME
#define WS_TILEDWINDOW      WS_OVERLAPPEDWINDOW

/* Common Window Styles */
#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED     | \
                             WS_CAPTION        | \
                             WS_SYSMENU        | \
                             WS_THICKFRAME     | \
                             WS_MINIMIZEBOX    | \
                             WS_MAXIMIZEBOX)

#define WS_POPUPWINDOW      (WS_POPUP          | \
                             WS_BORDER         | \
                             WS_SYSMENU)

#define WS_CHILDWINDOW      (WS_CHILD)

/* Extended Window Styles */
#define WS_EX_DLGMODALFRAME     0x00000001L  // 이중 경계선
#define WS_EX_NOPARENTNOTIFY    0x00000004L  // 생성/소멸시 WM_PARENTNOTIFY 메세지를 보내지 않음
#define WS_EX_TOPMOST           0x00000008L  // 항상 최상위 윈도우
#define WS_EX_ACCEPTFILES       0x00000010L  // 드래그되는 파일을 받을 수 있는 윈도우
#define WS_EX_TRANSPARENT       0x00000020L
#if(WINVER >= 0x0400)
#define WS_EX_MDICHILD          0x00000040L  // MDI 차일드 윈도우
#define WS_EX_TOOLWINDOW        0x00000080L  // 툴바 윈도우
#define WS_EX_WINDOWEDGE        0x00000100L  // 양각 윈도우
#define WS_EX_CLIENTEDGE        0x00000200L  // 음각 윈도우
#define WS_EX_CONTEXTHELP       0x00000400L  // 타이틀바에 ? 버튼 출력

#endif /* WINVER >= 0x0400 */
#if(WINVER >= 0x0400)

#define WS_EX_RIGHT             0x00001000L
#define WS_EX_LEFT              0x00000000L
#define WS_EX_RTLREADING        0x00002000L
#define WS_EX_LTRREADING        0x00000000L
#define WS_EX_LEFTSCROLLBAR     0x00004000L
#define WS_EX_RIGHTSCROLLBAR    0x00000000L

#define WS_EX_CONTROLPARENT     0x00010000L  // Tab 키로 차일드 사이를 전환
#define WS_EX_STATICEDGE        0x00020000L  // 사용자의 입력을 허용하지 않는 형태
#define WS_EX_APPWINDOW         0x00040000L

#define WS_EX_OVERLAPPEDWINDOW  (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
#define WS_EX_PALETTEWINDOW     (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)

#endif /* WINVER >= 0x0400 */

#if(_WIN32_WINNT >= 0x0500)
#define WS_EX_LAYERED           0x00080000

#endif /* _WIN32_WINNT >= 0x0500 */

#if(WINVER >= 0x0500)
#define WS_EX_NOINHERITLAYOUT   0x00100000L // Disable inheritence of mirroring by children
#define WS_EX_LAYOUTRTL         0x00400000L // Right to left mirroring
#endif /* WINVER >= 0x0500 */

#if(_WIN32_WINNT >= 0x0501)
#define WS_EX_COMPOSITED        0x02000000L
#endif /* _WIN32_WINNT >= 0x0501 */
#if(_WIN32_WINNT >= 0x0500)
#define WS_EX_NOACTIVATE        0x08000000L
#endif /* _WIN32_WINNT >= 0x0500 */