태그 보관물: mfc

CMiniFrameWnd

http://www.functionx.com/visualc/controls/miniframe.htm
http://blog.naver.com/lifeisforu/80030201322

The Mini Frame Window

Introduction

미니 프레임 윈도우는 대부분 응용프로그램의 주요 오브젝트인 다른 윈도우들과 함께 존재하는 유동(floating) 오브젝트로서 사용됩니다. 그것은 우리가 예전부터 보아 왔던 것처럼 경계와 클라이언트 영역을 가지는 보통의 프레임 윈도우처럼 보입니다. 그렇지만 미니 프레임 윈도우는 메인 윈도우가 아니라 툴로서 사용됩니다. 이러한 기능의 예를 들자면, 그것은 시스템 최소/최대화 버튼을 가지고 있지 않습니다. 툴 윈도우처럼 그것은 짧은 타이틀 바와 닫기 버튼을 가지고 있습니다.

Creation of a Mini Frame Window

미니 프레임 윈도우는 CMiniFrameWnd 클래스에 기반합니다. 미니 프레임 윈도우를 생성하기 위해서는 먼저 CMiniFrameWnd 에 대한 포인터나 변수를 선언합니다. AfxRegisterWndClass() 함수를 사용해서 그것의 클래스를 정의할 수 있습니다. 그리고 나서 그 함수의 반환값을 Create() 메서드에 넘깁니다. 이 메서드의 구문이 다음에 나와 있습니다 :

[cpp]
virtual BOOL Create
LPCTSTR lpClassName,
LPCTSTR lpWndowName,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd = NULL,
UINT uID = 0
);
[/cpp]

lpClassName 매개변수는 AfxRegisterWndClass() 함수로부터 반환된 값이어야 합니다.

lpWindowName 은 윈도우의 타이틀바에 보여질 캡션입니다.

dwStyle 매개변수는 윈도우에 적용될 스타일입니다. 일반적으로 그것은 보통 윈도우의 정규 스타일을 사용합니다만, 많은 스타일이 다릅니다. 예를 들어서 Minimize 와 Maximize 버튼을 적용하든 적용하지 않든 그것들은 보이지 않습니다. 단지 다음 조합만을 사용할 수 있습니다 : WS_POPUP | WS_CAPTION | WS_SYSMENU. 정규 윈도우 스타일 이외에도 다음과 같은 특별한 스타일 중 하나 이상을 사용해 조합을 만들 수 있습니다 :

    MFS_MOVEFRAME : 이 스타일을 가지면 사용자가 프레임의 어떤 테두리 부분이라도

    클릭 & 드래그해서 마치 타이틀 바를 드래그한 것처럼 윈도우를 움직일 수 있습니다. 만약

    당신이 이 스타일을 적용한다면, 다른 스타일을 지정해서 윈도우를 리사이즈할 수 있도록

    설정했다고 해도 그것은 무시됩니다.

    MFS_4THICKFRAME : 이 스타일은 사용자가 미니 프레임을 리사이즈하지 못하게 합니다.

    MFS_SYNCACTIVE : 이 스타일은 미니 프레임의 부모가 활성화되어 있을 때

    자신도 활성화되어 있도록 보장합니다.

    MFS_THICKFRAME : 이것은 두꺼운 프레임을 생성하고 사용자가 필요시 윈도우를

    리사이즈할 수 있도록 합니다. MFS_MOVEFRAME 이 무시됩니다.

    MFS_BLOCKSYSMENU : 이것은 시스템 메뉴에 대한 접근을 막습니다.

rect 매개 변수는 프레임 윈도우의 위치 및 차원을 지정합니다.

pParentWnd 인자는 윈도우의 CWnd 부모입니다. 이 인자는 필수가 아닙니다.

nID 인자는 미니 프레임 윈도우의 식별자입니다. 이것은 필수가 아닙니다.

Create() 메서드 이외에도 CMiniFrameWnd 클래스는 CreateEX() 멤버 함수를 제공해 미니 프레임 윈도우를 생성할 수 있게 합니다.

[cpp]
void CMiniFrame2Dlg::OnBnClickedMiniframeBtn()
{
// TODO: Add your control notification handler code here
CMiniFrameWnd *MFW = new CMiniFrameWnd;
CString StrClassName = AfxRegisterWndClass(

CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS,
LoadCursor(NULL, IDC_ARROW),
(HBRUSH)GetStockObject(COLOR_BTNFACE+1),

LoadIcon(NULL, IDI_APPLICATION));

MFW->CreateEx(0, StrClassName,

"Small Application",

WS_POPUP | WS_CAPTION | WS_SYSMENU |

MFS_BLOCKSYSMENU,

CRect(100, 100, 350, 420));

MFW->ShowWindow(SW_SHOW);
[/cpp]