CWnd::GetDlgItemText
int GetDlgItemText( int nID, LPTSTR lpStr, int nMaxCount ) const;
int GetDlgItemText( int nID, CString& rString ) const;
리턴
버퍼로 복사된 바이트의 수를 리턴, 복사된 텍스트가 없으면 0을 리턴한다. 단, 마지막 NULL 문자는 포함되지 않는다.
인수
nID : 타이틀이 검색되어지는 컨트롤의
lpStr : 컨트롤의 타이틀 혹은 텍스트를 받기 위한 버퍼
nMaxCount : lpStr으로 복사되는 스트링의 최대 길이(바이트), 만약, 스트링이 nMaxCount 보다 길다면 잘려버린다.
rString : CString으로의 참조
설명
대화상자에서 컨트롤과 관련된 타이틀 혹은 텍스트를 검색하기 위해 이 멤버함수를 호출한다. GetDlgItemText 멤버함수는 텍스트를 lpStr에 의해 포인트된 위치로 복사하고 복사된 바이트 수를 리턴한다.
CWnd::GetNextDlgGroupItem
CWnd* GetNextDlgGroupItem( CWnd* pWndCtl, BOOL bPrevious = FALSE ) const;
리턴
그 멤버 함수가 성공적이면 그 그룹에 있는 이전 (혹은 다음) 컨트롤의 포인터를 리턴한다.
리턴된 포인터는 임시적이고 다음 사용을 위해 저장되어지지 않는다.
인수
pWndCtl : 검색을 위한 시작 포인트처럼 쓰여지는 컨트롤을 식별한다.
bPrevious : 함수가 대화상자에서 컨트롤 그룹 검색을 어떻게 하는가를 설명한다. TRUE이면 그 그룹에서 이전의 컨트롤을 검색하고, 거짓이면 그 그룹에서 다음 컨트롤을 검색한다.
설명
대화상자에서 컨트롤 그룹 안의 이전(혹은 다음) 컨트롤을 검색한다. 컨트롤 그룹은 WS_GROUP 스타일로 생성된 컨트롤로 시작하고 WS_GROUP 스타일로 생성되지 않은 마지막 컨트롤로 끝난다. 디폴트로, GetNextDlgGroupItem 멤버 함수는 그 그룹에서 다음 컨트롤의 포인터를 리턴한다. 만약, pWndCtl이 그 그룹에서 첫째 컨트롤을 식별하고 bPrevious 값이 TRUE이라면 GetNextDlgGroupItem은 그 그룹의 마지막 컨트롤의 포인터를 리턴한다.
CWnd::GetNextDlgTabItem
CWnd* GetNextDlgTabItem( CWnd* pWndCtl, BOOL bPrevious = FALSE ) const;
리턴
그 멤버함수가 성공적이라면 WS_TABSTOP 스타일을 가진 이전 (혹은 다음) 컨트롤의 포인터를 리턴한다. 리턴된 포인터는 임시적이며 다음 사용을 위해 저장되지 않는다.
인수
pWndCtl : 검색을 위한 시작 포인터처럼 사용되어지는 컨트롤을 식별한다.
bPrevious : 함수가 대화상자에서 컨트롤 그룹 검색을 어떻게 하는가를 설명한다. TRUE이면 그 그룹에서 이전의 컨트롤을 검색하고, 거짓이면 그 그룹에서 다음 컨트롤을 검색한다.
설명
WS_TABSTOP 스타일로 생성된 첫째 컨트롤의 포인터를 받으며 명시된 컨트롤을 선행하거나 따른다
CWnd::IsDlgButtonChecked
UINT IsDlgButtonChecked( int nIDButton ) const;
리턴
주어진 컨트롤이 체크되었다면 0이 아닌값, 그렇지 않으면 0을 리턴한다. 라디오 버튼과 체크 박스만 체크 될 수 있다. 3-state 버튼의 경우, 만약, 그 버튼이 부정이라면 리턴 값이 2가 되어질 수 있다. 이 멤버함수는 푸시버튼에 대해 0을 리턴한다.
인수
nIDButton : 버튼 컨트롤의
설명
버튼 컨트롤이 체크 표시를 가졌는지 결정한다. 만약, 버튼이 3-state 컨트롤이라면, 그 멤버 함수는 흐린 체크, 체크, 혹은 둘 다 아닌지를 결정한다.
CWnd::IsDialogMessage
BOOL IsDialogMessage( LPMSG lpMsg );
리턴
그 멤버 함수가 주어진 메시지를 처리했는지 명시한다. 그 메시지가 처리되었다면 0이 아닌 값을, 그렇지 않다면 0 값을 리턴한다. 만약, 리턴 값이 0 이라면 메시지를 처리하기 위한 기본 클래스의 CWnd::PreTranslateMessage 멤버 함수를 호출한다.
CWnd::PreTranslateMessage 멤버함수의 오버라이드에서 그 코드는 다음과 같다:
BOOL CMyDlg::PreTranslateMessage( msg )
{
if( IsDialogMessage( msg ) )
return TRUE;
else
return CWnd::PreTranslateMessage( msg );
}
인수
lpMsg : 체크되어질 메시지를 포함하는 MSG 구조체
설명
주어진 메시지가 모형 없는 대화상자에게 주어질 것인지를 결정하기 위한 멤버함수를 호출한다. 만약 그렇다면, 이 함수는 그 메시지를 처리한다. IsDialogMessage 함수가 메시지를 처리할 때, 키보드 메시지에 대하여 체크를 하고 대응하는 대화상자에 대한 선택 명령으로 그것들을 변환한다. 예를 들면, TAB 키는 다음 컨트롤 혹은 컨트롤의 그룹을 선택하고, DOWN ARROW 키는 그룹에서 다음 컨트롤을 선택한다. 사용자는 IsDialogMessage에 의해 처리된 메시지를 ::TranslateMessage 혹은 ::DispatchMessage 윈도우즈 함수로 통과시켜서는 안된다. 왜냐하면 그것이 이미 처리되었기 때문이다.
CWnd::SendDlgItemMessage
LRESULT SendDlgItemMessage( int nID, UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
리턴
컨트롤의 윈도우 프로시저에 의해 리턴된 값, 혹은 그 컨트롤이 발견되지 않았다면 0을 리턴한다.
인수
nID : 메시지를 받을 대화 컨트롤의 ID
message : 보내어질 메시지
wParam : 정보에 의존하는 부가적인 메시지
lParam : 정보에 의존하는 부가적인 메시지
설명
컨트롤로 메시지를 보낸다.
SendDlgItemMessage 멤버함수는 그 메시지가 처리되어질 때까지 리턴하지 않는다.
SendDlgItemMessage 사용은 CWnd*를 주어진 컨트롤로 얻는것과 SendMessage 멤버함수 호출하는 것과 동일하다.
CWnd::SetDlgItemInt
void SetDlgItemInt( int nID, UINT nValue, BOOL bSigned = TRUE );
인수
nID : 바뀌어질 컨트롤의
nValue : 아이템 텍스트를 생성하기위해 사용되는 정수값
bSigned :
설명
대화상자에서 주어진 컨트롤의 텍스트를 명시된 정수값의 스트링 표현으로 놓는다.
SetDlgItemInt는 WM_SETTEXT 메시지를 주어진 컨트롤로 보낸다.
CWnd::SetDlgItemText
void SetDlgItemText( int nID, LPCTSTR lpszString );
인수
nID : 텍스트 set 되어질 컨트롤을 확인한다.
lpszString : CString 오브젝트 혹은 그 컨트롤로 복사되어질 텍스트를 포함하는
null-terminated 스트링을 가르킨다.
설명
윈도우 혹은 대화상자에 의해 소유되는 컨트롤의 표제 혹은 텍스트를 set 한다.
SetDlgItemText는 WM_SETTEXT 메시지를 주어진 컨트롤로 보낸다.
CWnd::SubclassDlgItem
BOOL SubclassDlgItem( UINT nID, CWnd* pParent );
리턴
함수가 성공적으로 수행되면 0가 아닌 값을 그렇지 않으면 0을 리턴한다.
인수
nID : 컨트롤의 ID
pParent : 컨트롤의 부모 (보통 대화상자)
설명
대화 템플리트로부터 생성되는 컨트롤의 "동적인 하위클래스"로 멤버함수를 호출하고 그것을 CWnd 오브젝트로 첨부한다. 컨트롤이 동적으로 하위 클래스될 때 윈도우즈 메시지는 CWnd의 메시지 맵을 통해서 발송할 것이며 CWnd의 클래스에서 메시지 핸들러를 먼저 호출할 것이다. 기본 클래스로 통과된 메시지들은 그 컨트롤에서 디폴트 메시지 핸들러로 통과될 것이다. 이 멤버함수는 CWnd 오브젝트로 윈도우즈 컨트롤을 첨부하고 컨트롤의 WndProc 함수와 AfxWndProc 함수를 되돌린다. 그 함수는 GetSuperWndProcAddr 멤버 함수에 의해 리턴된 위치에서 이전의 WndProc을 저장한다.
CWnd::ExecuteDlgInit
BOOL ExecuteDlgInit( LPCTSTR lpszResourceName );
BOOL ExecuteDlgInit( LPVOID lpResource );
리턴
대화 리소스가 수행되었다면 TRUE, 그렇지 않다면 FALSE를 리턴한다.
인수
lpszResourceName : 그 리소스의 이름을 상술 하는 null-terminated 문자열의 포인터
lpResource : 리소스의 포인터
설명
대화 리소스를 초기화하기 위한 멤버함수를 호출한다.
ExecuteDlgInit는 실행하는 모듈, 혹은 다른 소스로부터 리소스로 한계를 짓는 리소스를 사용할 것이다. 이것을 수행하기 위해서는 ExecuteDlgInit가 AfxFindResourceHandle을 호출하여 리소스 핸들을 찾는다. 만약 MFC 어플이케이션이 공유된 DLL(MFCx0[U][D].DLL)을 사용하지 않는다면, AfxFindResourceHandle은 AfxGetResourceHandle을 호출하며, 실행가능함에 대하여 현재 리소스의 핸들을 리턴한다. 만약, MFCx0[U][D].DLL을 사용하는 MFC 어플리케이션이라면, AfxFindResourceHandle은 공유되고 확장된 DLL의 CDynLinkLibrary 오브젝트 리스트가 정확한 리소스 핸들을 찾는 것을 방해한다.
CWnd::RunModalLoop
int RunModalLoop( DWORD dwFlags );
리턴
EndModalLoop 멤버 함수로 통과된 nResult 인수의 값을 리턴하며, 그 다음 그 modal 루프의 끝이 된다.
인수
dwFlags : 보내어질 윈도우즈 메시지를 상술한다. 다음 값들 중 하나가 될 수 있다 :
MLF_NOIDLEMSG : 부모로 WM_ENTERIDLE 메시지를 보내지 않기
MLF_NOKICKIDLE : 윈도우로 WM_KICKIDLE 메시지 보내지 않기
MLF_SHOWONIDLE : 메시지 queue가 idle일 때 윈도우를 보임
설명
ContinueModal이 FALSE를 리턴할 때까지 메시지를 검색, 해석, 혹은 발송하기 위한 멤버함수를 호출한다. 디폴트로, ContinueModal는 EndModalLoop가 호출된 후 FALSE를 리턴한다. nResult가 EndModalLoop로 처럼 제공된 그 값을 리턴한다.
CWnd::ContinueModal
BOOL ContinueModal( );
리턴
모달 루프가 계속되면 0이 아닌 값을, EndModalLoop가 호출되었을 때 0을 리턴한다.
설명
언제 모달 상태가 exit될지 결정하기 위한 RunModalLoop에 의해 호출된 멤버함수 이다.
디폴트로, EndModalLoop가 호출될 때까지 0이 아닌 값을 리턴한다.
CWnd::EndModalLoop
void EndModalLoop( int nResult );
인수
nResult : RunModalLoop의 호출자로 리턴될 값을 포함한다.
설명
RunModalLoop로 호출을 끝내기 위한 멤버함수를 호출한다. nResult 인수는 RunModalLoop로부터 리턴 값으로 전파된다.
CWnd::BindDefaultProperty
void BindDefaultProperty( DISPID dwDispID, VARTYPE vtProp, LPCTSTR szFieldName, CWnd * pDSCWnd );
인수
dwDispID : data-source 컨트롤로 바운드가 되어질 data-bound 컨트롤에서 속성의 DISPID를 상술한다.
vtProp : 바운드 되어질 특성의 타입을 설명한다. 예를들어, VT_BSTR, VT_VARIANT, 등등.
szFieldName : data-source 컨트롤에 의해 제공되는 커서에서 컬럼의 이름. 그 속성은 data-source 컨트롤로 바운드 될 것이다.
pDSCWnd : 속성이 바운드 될 data-source 컨트롤을 호스트하는 윈도우를 가리킨다. 이 포인터를 되찾기 위한 DCS의 호스트 윈도우의 리소스 ID로 GetDlgItem을 호출한다.
설명
타입 라이브러리에서 표시된 호출 오브젝트의 디폴트 단순 바운드 속성(에디트 컨트롤과 같은)과 data-source 컨트롤의 DataSource, UserName, Password, 그리고 SQL 속성들로 정의된 underlying 커서를 연결한다. 이 함수에서 호출하는 CWnd 객체는 data-bound 컨트롤이 될 것이다. BindDefaultProperty는 다음의 문맥에서 사용되어질 수 있다:
BOOL CMyDlg::OnInitDialog()
{
...
CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);
CWnd* pList = GetDlgItem(IDC_DBLISTBOX);
pList->BindDefaultProperty(0x2,
VT_BSTR, _T("CourseID"), pDSC);
CWnd* pEdit = GetDlgItem(IDC_MASKEDBOX);
pEdit->BindDefaultProperty(0x16,
VT_BSTR, _T("InstuctorID"), pDSC);
...
return TRUE;
}
CWnd::BindProperty
void BindProperty( DISPID dwDispID, CWnd * pWndDSC );
인수
dwDispID : data-source 컨트롤로 바운드 될 data-bound 컨트롤에서 속성의 DISPID.
pWndDSC : 속성이 바운드 될 data-source 컨트롤을 호스트하는 윈도우를 가리킨다. 이 포인터를 되찾기 위한 DCS의 호스트 윈도우의 리소스 ID로 GetDlgItem을 호출한다.
설명
data-bound 컨트롤(격자 컨트롤 같은)상의 cursor-bound 속성과 data-source 컨트롤과 MFC 바인딩 관리자와 관계된 등록을 연결한다. 사용자가 이 함수상에서 호출하는 CWnd 객체는 data-bound 컨트롤이 되어질 것이다. BindProperty는 다음의 문맥에서 사용되어질 수 있다:
BOOL CMyDlg::OnInitDialog()
{
...
CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);
CWnd* pList= GetDlgItem(IDC_DBLISTBOX);
pList.BindProperty(0x9, pDSC);
...
return TRUE;
}
CWnd::GetDSCCursor
IUnknown * GetDSCCursor( );
리턴
data-source 컨트롤에 의해 정의되는 커서의 포인터를 리턴한다. MFC는 그 포인터를 위해 AddRef 호출을 돌봐준다.
설명
data-source 컨트롤의 DataSource, UserName, Password, 그리고 SQL 속성들로 정의된 underlying 커서의 포인터를 되찾기 위해 멤버함수를 호출한다.
Data-bound 격자 컨트롤과 마찬가지로 컴플렉스 data-bound 컨트롤의 ICursor 속성을 설정하기 위해 리턴된 포인터를 사용한다. Data-source 컨트롤은 첫째 bound 컨트롤이 것의 커서를 요구할 때까지 활성화되지 않을 것이다.
이것은 GetDSCCursor 호출에 의해 명시적으로 혹은 MFC 바인딩 관리자에 의해 묵시적으로 일어날 수 있다. 어느 경우든, 사용자는 GetDSCCursor 호출에 의해 활성이 되도록 data-source 컨트롤을 강요할 수 있으며 그 다음 IUnknown의 리턴된 포인터에서 Release를 호출한다. 활성화는 data-source 컨트롤을 underlying data 소스와의 접속하도록 할 것이다. 리턴된 포인터는 다음 문맥에서 사용되어질 수 있다:
BOOL CMyDlg::OnInitDialog()
{
// Find the child controls on the dialog
CWnd* pDSC = GetDlgItem(IDC_REMOTEDATACONTROL);
CDBListBox* pList = (CDBListBox*)
GetDlgItem(IDC_DBLISTBOX);
// Tell the MFC binding manager that we are
// binding DISPID 3 to the data-source control.
pList->BindProperty(0x3, pDSC);
// Tell the listbox which field to expose as its
// bound column
pList->SetBoundColumn(_T("CourseID"));
// Tell the listbox which cursor and column
// to populate its list from
pList->SetListField(_T("CourseID"));
IPUNKNOWN *pcursor = pDSC->GetDSCCursor();
...
if (!pcursor)
{
// The pointer was not successfully assigned.
return FALSE;
}
// The pointer was successfully assigned,
pList->SetRowSource(pcursor);
...
pcursor->Release();
return TRUE;
}
CWnd::GetMenu
CMenu* GetMenu( ) const;
리턴
메뉴를 확인한다. CWnd가 메뉴를 가지지 않는다면 NULL 값을 리턴한다. 만약, CWnd가 자식 윈도우라면 리턴 값은 정의되지 않는다. 리턴된 포인터는 임시적이며 다음 사용을 위해 저장되지 않는다.
설명
이 윈도우에 대한 메뉴의 포인터를 되찾는다. 자식 윈도우는 메뉴를 가지지 않기 때문에 자식 윈도우에는 사용되지 않는다.
CWnd::SetMenu
BOOL SetMenu( CMenu* pMenu );
리턴
메뉴가 바뀌어 지면 0이 아닌 값, 그렇지 않으면 0을 리턴한다.
인수
pMenu : 새로운 메뉴를 확인한다. 만약, 인수가 NULL 값이면 현재 메뉴가 지워진다.
설명
명시된 메뉴로 현재 메뉴를 set 한다. 메뉴 변경을 반영하기 위해 다시 그려질 윈도우를 야기 시킨다. SetMenu는 이전의 메뉴를 소멸시키지 않는다. 어플리케이션은 이 작업을 수행하기 위해 CMenu::DestroyMenu 멤버 함수 호출해야 한다.
CWnd::DrawMenuBar
void DrawMenuBar( );
설명
메뉴 바를 다시 그린다. 만약, 윈도우즈가 윈도우를 생성한 후에 메뉴 바가 변경된다면 변경된 메뉴 바를 그리기 위해 이 함수를 호출한다.
CWnd::GetSystemMenu
CMenu* GetSystemMenu( BOOL bRevert ) const;
리턴
bRevert가 FALSE이면 Control 메뉴의 복사를 식별한다. bRevert가 TRUE면 리턴 값은 정의되지 않는다.
리턴된 포인터는 임시적이며 다음 사용을 위해 저장되지 않는다.
인수
bRevert : 선택되어질 액션을 기술한다. bRevert가 FALSE면 GetSystemMenu는 현재 사용중인 Control 메뉴의 복사로 핸들을 리턴한다. 이 복사는 처음에 Control 메뉴에 대하여 동일하지만 변경될 수 있다. bRevert가 TRUE면 GetSystemMenu는 디폴트 상태로 Control 메뉴를 되돌려 놓는다. 아마 변경된, 이전의 Control 메뉴는 소멸된다. 이 경우 리턴 값은 정의되지 않는다.
설명
복사와 변경에 대해 Control 메뉴를 억세스하기 위한 어플리케이션을 허용한다.
Control 메뉴 그 자신의 복사를 하기 위해 GetSystemMenu를 사용하지 않는 어떠한 윈도우는 표준 Control 메뉴를 받는다.
GetSystemMenu 멤버 함수에 의해 리턴되는 포인터는 Control 메뉴를 변경하기 위해 CMenu::AppendMenu, CMenu::InsertMenu, 혹은 CMenu::ModifyMenu 함수와 함께 쓰일 수 있다.
Control 메뉴는 SC_CLOSE, SC_MOVE, 그리고 SC_SIZE와 같은 다양한 ID 값과 동일한 아이템을 초기에 포함한다. Control 메뉴상의 아이템은 WM_SYSCOMMAND 메시지를 생성한다. 모든 미리 정의된 Control-menu 아이템은 0xF000 보다 큰 ID 넘버를 가진다. 만약, 어플리케이션이 Control 메뉴로 아이템을 추가한다면, 반드시 F000 보다 작은 ID 넘버를 사용해야 한다.
윈도우는 표준 Control 메뉴 상에서 자동적으로 아이템을 흐리게 한다. CWnd는 어떠한 메뉴가 디스플레이 되기 전에 보내어지는 WM_INITMENU 메시지에 대한 대답으로 그것의 고유한 checking과 dimming을 수행할 수 있다.
CWnd::HiliteMenuItem
BOOL HiliteMenuItem( CMenu* pMenu, UINT nIDHiliteItem, UINT nHilite );
리턴
그 메뉴 아이템이 하이라이트 되었는지 기술한다. 그 아이템이 하이라이트 되었다면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
인수
pMenu : 하이라이트 되어질 아이템을 포함한 top-level 메뉴를 식별한다.
nIDHiliteItem : nHilite 인수 값에 의존하며, 하이라이트 되어질 메뉴 아이템을 기술한다.
nHilite : 메뉴 아이템이 하이라이트 되었는지 혹은 하이라이트가 제거되었는지를 기술한다. 그것은 MF_HILITE, 혹은 MF_UNHILITE (MF_BYCOMMAND 혹은 MF_BYPOSITION와 함께)의 결합이 될 수 있다. 그 값은 OR 연산자를 사용하여 결합될 수 있다. 이들 값들은 다음과 같은 의미를 가지고 있다:
MF_BYCOMMAND : 메뉴-아이템 ID(디폴트 해석)와 같이 nIDHiliteItem을 해석한다.
MF_BYPOSITION : 메뉴 아이템의 zero-based 오프셋과 같이 nIDHiliteItem을 해석한다.
MF_HILITE : 아이템을 하이라이트 시킨다. 만약, 이 값이 주어지지 않으면, 하이라이트는 아이템으로부터 제거된다.
MF_UNHILITE : 아이템으로부터 하이라이트를 제거한다.
설명
top-level (menu-bar) 메뉴 아이템으로부터 하이라이트 혹은 제거한다.
MF_HILITE와 MF_UNHILITE 플래그는 멤버 함수만 사용되어 질 수 있다;
그것들은 CMenu::ModifyMenu 멤버 함수로 사용될 수 없다.
CWnd::EnableToolTips
BOOL EnableToolTips( BOOL bEnable );
리턴
tooltips가 enable이라면 TRUE, 그렇지 않으면 FALSE를 리턴한다.
인수
bEnable : tooltips 컨트롤이 enabled 혹은 disabled 인지 기술한다. TRUE는 그 컨트롤을 enable 시키고; FALSE는 컨트롤을 disable 시킨다.
설명
주어진 윈도우에 대한 tooltips를 enable 시키기 위해 이 멤버함수를 호출한다. 윈도우에 대한 TOOLINFO struct(s)를 제공하기 위해 OnToolHitTest를 오버라이드 한다.
(Note) CToolBar와 같은 몇몇 윈도우즈는 OnToolHitTest의 내장된 실행을 제공한다.
이 구조체에 대해 더 자세한 정보는 Win32 Programmer's Reference에 있는 TOOLINFO를 참조하기 바란다.
부모 윈도우가 CFrameWnd로부터 파생되지 않는다면 단순히 EnableToolTips를 호출하는 것은 자식 컨트롤에 대한 tool tips를 보여 주기에는 충분하지 않다. 왜냐하면, CFrameWnd는 TTN_NEEDTEXT 신호에 대한 디폴트 핸들러를 제공하기 때문이다.
만약, 부모 윈도우가 CFrameWnd로부터 파생되지 않는다면, 즉, 그것이 대화상자 혹은 폼 view이고 TTN_NEEDTEXT tool tip 신호를 위한 핸들러를 제공하지 않는다면, 자식 컨트롤을 위한 tool tips는 정확히 보여주지 않을 것이다.
샘플 핸들러에 대한 비주얼 C++ Programmer's Guide에 있는 Tool Tips를 참조하기 바란다. EnableToolTips가 그것들과 관련된 텍스트를 가지고 있지 않으므로 사용자 윈도우즈에 대해 디폴트 tool tips를 제공한다. 보여주기 위한 tool tips에 대해 텍스트를 되찾기 위해서는, TTN_NEEDTEXT 신호가 tool tip 윈도우가 보여지기 바로 전에 tool tip 컨트롤의 부모 윈도우에게 보내진다. 만약, TOOLTIPTEXT 구조체의 pszText 멤버로 어떤 값을 할당하기 위해 이 메시지에 대한 핸들러가 없다면, 그 tool tip에 대한 텍스트가 보여지지 않을 것이다.
CWnd::CancelToolTips
static void PASCAL CancelToolTips( BOOL bKeys = FALSE );
인수
bKeys : 키가 눌려졌고 디폴트로 상태바 텍스트를 설정할 때 tooltips를 취소하기 위해서는
TRUE이고, 그렇지 않으며 FALSE 이다.
설명
tooltip가 현재 보여진다면 스크린으로부터 tooltip을 제거하기 위해 이 멤버함수를 호출한다.
(Note) 코드로 처리된 tooltips에 영향이 없는 멤버 함수를 사용한다.
CWnd::EnableToolTips로 처리된 tooltip 컨트롤에만 영향을 준다.
CWnd::FilterToolTipMessage
void FilterToolTipMessage( MSG* pMsg );
인수
pMsg : tooltip 메시지의 포인터
설명
이 멤버 함수는 툴바상의 버튼과 관련된 tooltip 메시지를 보여주기 위한 프레임워크에 의해 호출된다. 통상적으로 PreTranslateMessage로부터 호출된다. 프레임워크가 호출하지 않을 때 호출한다.
CWnd::OnToolHitTest
virtual int CWnd::OnToolHitTest( CPoint point, TOOLINFO* pTI ) const;
리턴
Tooltip 컨트롤이 발견되었을 때 1이고, 발견되지 않았을 때 -1을 리턴한다.
인수
point : 커서의 x와 y 좌표. 이들 좌표는 항상 윈도우의 왼쪽 상단 구석에서 상대적인 좌표이다.
pTI : TOOLINFO 구조체의 포인터. 다음 구조체 값들은 디폴트로 설정된다.
hwnd = m_hWnd (윈도우로 핸들)
uId = (UINT)hWndChild (자식 윈도우로 핸들)
uFlags |= TTF_IDISHWND (툴의 핸들)
lpszText = LPSTR_TEXTCALLBACK (명시된 윈도우에서 보여지게될 스트링의 포인터)
설명
프레임워크는 좌표가 명시된 틀의 사각형 경계에 있는지 결정하기 위해 이 멤버 함수를 호출한다. 만약, 좌표가 사각형 안에 있다면 툴에 관한 정보가 나타난다.
만약, tooltips이 관련된 영역이 버튼이 아니라면, OnToolHitTest는 TTF_NOTBUTTON과 TTF_CENTERTIP으로 구조체 플래그를 설정한다. 디폴트보다 다른 정보를 제공하기 위하여 OnToolHitTest를 오버라이드한다.
그 구조체에 관한 더 자세한 정보는 Win32 SDK Programmer's Reference에 있는 TOOLINFO를 참조하기 바란다.
CWnd::SetTimer
UINT SetTimer( UINT nIDEvent, UINT nElapse, void (CALLBACK EXPORT* lpfnTimer)(HWND, UINT, UINT, DWORD) );
리턴
함수가 성공적으로 수행되었다면 새로운 타이머의 ID를 리턴한다. 어플리케이션은 타이머를 kill하기 위해 KillTimer 멤버 함수로 이 값을 전달한다. 성공적이면 0이 아닌값, 그렇지 않으면 0을 리턴한다.
인수
nIDEvent : 0이 아닌 타이머의 ID
nElapse : 타임 아웃 값 (단위는 1/100초)
lpfnTimer : WM_TIMER 메시지들을 처리하는 TimerProc 콜백 함수를 지원하는 어플리케이션의 주소. 만약, 이 인수가 NULL 이면 WM_TIMER 메시지들은 어플리케이션의 메시지 큐에 위치되고 CWnd 객체에 의해 처리된다.
설명
시스템 타이머를 설치한다. 타임-아웃 값은 명시되고 타임-아웃이 일어나는 매 시간 시스템은 WM_TIMER 메시지를 설치 어플리케이션 메시지 큐로 보내거나 그 메시지를 TimerProc 콜백 함수로 정의된 어플리케이션으로 전달한다.
lpfnTimer 콜백 함수는 TimeProc로 명명될 필요는 없으나, 다음과 같이 정의 되어야한다:
void CALLBACK EXPORT TimerProc(
HWND hWnd, // handle of CWnd that called SetTimer
UINT nMsg, // WM_TIMER
UINT nIDEvent // timer identification
DWORD dwTime // system time
);
타이머들은 한정된 전역 리소스이므로 실제 사용 가능한 타이머를 검사하기 위한 SetTimer 멤버 함수에 의해 리턴된 값을 체크하는 어플리케이션은 중요하다.
CWnd::KillTimer
BOOL KillTimer( int nIDEvent );
리턴
그 함수의 결과를 기술한다. 이벤트가 kill 되었다면 0이 아닌 값이다. 만약, KillTimer 멤버 함수가 명시된 타이머 이벤트를 찾을 수 없다면 0 값을 리턴한다.
인수
nIDEvent : SetTimer로 전달된 타이머 이벤트의 값
설명
SetTimer로 먼저 호출로 nIDEvent에 의해 확인된 타이머 이벤트를 kill 한다. 그 타이머와 관련된 미결정의 WM_TIMER 어떤 메시지들은 메시지 큐로부터 제거된다.
CWnd::FlashWindow
BOOL FlashWindow( BOOL bInvert );
리턴
윈도우가 FlashWindows 멤버 함수를 호출하기 전에 활성화 되었다면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
인수
bInvert : CWnd가 플래쉬 혹은 그것의 원래 상태로 리턴될 것인지를 기술한다. CWnd는 bInvert가 TRUE일 때 한 상태에서 다른 상태로 플래쉬 된다. bInvert가 FALSE면 윈도우는 그 원래 상태(활성 혹은 비활성 둘 중 하나)로 되돌려진다.
설명
주어진 윈도우를 한번 플래쉬 한다. 성공적인 플래슁은, 시스템 타이머를 생성하고 반복적으로 FlashWindows를 호출한다. CWnd를 플래쉬하는 것은 마치 CWnd가 비활성에서 활성 상태 혹은 vice versa(제목 표시줄이 비활성에서 활성으로 혹은 활성에서 비활성으로 바뀌는것)로 바뀌는 것처럼 그것의 제목 표시줄의 모양이 바뀌는 것을 의미한다.
통상적으로, 윈도우가 주의가 요구되나 현재 입력 포커스를 가지지 않는 사용자에게 알리기 위해 플래쉬 된다.
윈도우가 입력 포커스를 가지고 있을 때와 더 이상 플래쉬하지 않을 것이면 bInvert 인수가 FALSE 되어야 한다. 입력 포커스를 가지기 위해 기다리는 동안 계속적인 호출에서는 TRUE가 되어야 한다.
이 함수는 최소화된 윈도우에 대해 0이 아닌 값을 항상 리턴한다. 만약, 윈도우가 최소화 되었다면, FlashWindows가 윈도우의 아이콘을 단순히 플래쉬 할 것이다. 최소화된 윈도우에 대해서는 bInvert가 무시된다.
CWnd::MessageBox
int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );
리턴
그 함수의 결과를 기술한다. 메시지 박스를 생성하기 위해 메모리가 충분치 않다면 0을 리턴한다.
인수
lpszText : 보여지게될 메시지를 포함한 CString 객체 혹은 널종료 문자열을 가르킨다.
lpszCaption : 메시지 박스 제목으로 사용되어질 CString 객체 혹은 널종료 문자열을 가르킨다. lpszCaption가 NULL이면, 디폴트 캡션은 “Error"가 된다.
nType : 메시지 박스의 목차와 행동을 기술한다.
설명
application-supplied 메시지와 캡션, 미리 정의된 아이콘의 결합 그리고 대화상자 스타일 목록을 포함한 윈도우를 생성하고 보여준다. 어플리케이션에서 메시지 박스를 구현하기 위해서 멤버 함수 대신 전역함수 AfxMessageBox를 사용한다.
다음은 메시지 박스에서 사용될 수 있는 다양한 시스템 아이콘들을 보여준다:
MB_ICONHAND, MB_ICONSTOP, and MB_ICONERROR
MB_ICONQUESTION
MB_ICONEXCLAMATION and MB_ICONWARNING
MB_ICONASTERISK and MB_ICONINFORMATION
CWnd::GetCurrentMessage
static const MSG* PASCAL GetCurrentMessage( );
리턴
현재 처리중인 윈도우의 메시지를 포함한 MSG 구조체 포인터를 리턴한다. OnMessage 핸들러 안에 있을 때만 호출되어질 수 있다.
CWnd::Default
LRESULT Default( );
리턴
메시지 전송에 의존
설명
디폴트 윈도우 프로시저를 호출한다. 디폴트 윈도우 프로시저는 어플리케이션이 처리되지 않는 어떠한 윈도우 메시지를 위해 디폴트 처리를 제공한다. 이 멤버 함수는 모든 메시지가 처리됨을 보증한다.
CWnd::PreTranslateMessage
virtual BOOL PreTranslateMessage( MSG* pMsg );
리턴
메시지가 번역되었고 전송되지 않을 경우 0이 아닌 값을, 메시지가 번역되지 않았고 전송되었으면 0을 리턴한다.
인수
pMsg : 처리하기 위한 메시지를 포함한 MSG 구조체
설명
TranslateMessage와 DispatchMessage 윈도우 함수로 전송되기 전에 윈도우 메시지를 번역하기 위해 클래스 CWinApp에 의해 사용된다.
CWnd::SendMessage
LRESULT SendMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
리턴
메시지 처리의 결과. 리턴 값은 메시지 전송에 의존한다.
인수
message : 전송될 메시지
wParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
lParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
설명
이 윈도우로 명시된 메시지를 보낸다. SendMessage 멤버 함수는 윈도우 프로시저를 직접 호출하고 윈도우 프로시저가 메시지를 처리하기 전까지 리턴하지 않는다. 이것은 윈도우의 메시지 큐 속으로 위치하고 즉시 리턴하는 PostMessage 멤버 함수와는 현저히 다르다.
CWnd::PostMessage
BOOL PostMessage( UINT message, WPARAM wParam = 0, LPARAM lParam = 0 );
리턴
메시지가 전송되었으면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
인수
message : 전송될 메시지
wParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
lParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
설명
윈도우의 메시지 큐에 있는 메시지를 위치시킨다. 그리고 나서 메시지를 처리하기 위한 윈도우에 대응을 기다리지 않고 리턴한다. 메시지 큐에 있는 메시지들은 GetMessage 혹은 PeekMessage 멤버 함수에 호출로 되찾아 진다.
윈도우 PostMessage 함수는 다른 어플리케이션을 억세스하기 위해 사용되어 질 수 있다.
CWnd::SendNotifyMessage
BOOL SendNotifyMessage( UINT message, WPARAM wParam, LPARAM lParam );
리턴
함수가 성공적으로 수행되었다면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
인수
message : 전송될 메시지
wParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
lParam : 부가적인 메시지 정보. 전송된 메시지에 의존하는 이 인수의 내용
설명
윈도우로 명시된 메시지를 보낸다. 만약, 윈도우가 호출 thread에 의해 생성되었다면, SendNotifyMessage는 윈도를 위한 윈도우 프로시저를 호출하고 윈도우 프로시저가 그 메시지를 처리하기 전까지 리턴하지 않는다. 만약, 윈도우가 다른 thread에 의해 생성되었다면, endNotifyMessage는 윈도우 프로시저에게 메시지를 보내고 즉시 리턴한다.(윈도우 프로시저가 메시지 처리를 끝날 때 까지 기다리지 않는다.)
CWnd::ChangeClipboardChain
BOOL ChangeClipboardChain( HWND hWndNext );
리턴
성공적으로 수행되었으면 0이 아닌 값을, 그렇지 않으면 0을 리턴한다.
인수
hWndNext : 클립보드-뷰어 체인에서 CWnd를 따르는 윈도우를 확인한다.
설명
클립보드 표시기의 체인으로부터 CWnd를 제거한다, 그리고 체인에서 CWnd 조상의 자손인 hWndNext로 기술된 윈도우를 생성한다.
CWnd::SetClipboardViewer
HWND SetClipboardViewer( );
리턴
성공적으로 수행되었다면, 클립보드 표시기 체인에서 다음 윈도우로 핸들. 어플리케이션은 이 핸들(멤버 변수처럼 저장될 수 있는)을 저장 해야하고 클립보드 표시기 체인 메시지들로 대응될 때 그것을 사용해야 한다.
설명
언제라도 클립보드 목록이 변경되면 WM_DRAWCLIPBOARD 메시지에 의해 통보된 윈도우의 체인으로 이 윈도우를 추가한다.
클립보드-표시기 체인의 부분인 한 윈도우는 WM_DRAWCLIPBOARD,
WM_CHANGECBCHAIN, 그리고 WM_DESTROY 메시지들에 응답해야하고 체인에서 다음 윈도우로 메시지를 전달해야 한다.
이 멤버 함수는 WM_DRAWCLIPBOARD 메시지를 윈도우로 전송한다. 클립보드 표시기 체인에서 다음 윈도우로의 핸들은 아직 리턴되지 않았기 때문에, 어플리케이션은
SetClipboardViewer로 호출하는 동안 받는 WM_DRAWCLIPBOARD 메시지 상에 전달해서는 않된다.
클립보트 표시기 체인으로부터 자신을 제거하려면, 어플리케이션은 ChangeClipboardChain 멤버 함수를 호출해야 한다.
CWnd::OpenClipboard
BOOL OpenClipboard( );
리턴
클립보드가 CWnd를 경유하여 열려졌다면 0이 아닌 값을, 다른 어플리케이션 혹은 윈도우가 클립보드를 열었다면 0을 리턴한다.
설명
클립보드를 연다. 다른 어플리케이션들은 CloseClipboard 윈도우 함수가 호출되기 전까지 클립보드를 변경할 수 없을 것이다. 현재 CWnd 객체는 EmptyClipboard 윈도우 함수가 호출되기 전까지 클리보드의 오우너가 되지 않을 것이다.
CWnd::GetClipboardOwner
static CWnd* PASCAL GetClipboardOwner( );
리턴
함수가 성공적으로 수행되었다면 클립보드를 가진 윈도우를 식별한다. 그렇지 않다면 NULL을 리턴한다.
리턴된 포인터는 임시적이며 다음 사용을 위해 저장되지 않는다.
설명
클립보드의 현재 오우너를 되찾는다.
만약, 그것이 현재 소유되지 않는다면 클리보드는 데이터를 여전히 담을 수 있다.
CWnd::GetOpenClipboardWindow
static CWnd* PASCAL GetOpenClipboardWindow( );
리턴
함수가 성공적으로 수행되었다면 클립보드 오픈을 현재 가진 윈도의 핸들을, 그렇지 않다면 NULL을 리턴한다.
설명
클립보드 오픈을 현재 가진 윈도우의 핸들을 회수한다.
CWnd::GetClipboardViewer
static CWnd* PASCAL GetClipboardViewer( );
리턴
성공적이면 클립보드를 보여주는 것에 대해 일반적으로 책임을 지는 윈도우를 식별한다. 그외에는 NULL(예로써, 뷰어가 없다면)을 리턴한다.
리턴된 포인터는 임시적이며 다음 사용을 위해 저장되지 않는다.
설명
클립보드 체인에서 첫째 윈도우를 회수한다.
CWnd::SetProperty
void SetProperty( DISPID dwDispID, VARTYPE vtProp, ... );
인수
dwDispID : 설정될 속성. 이 값은 보통 Component Gallery에 의해 공급된다.
vtProp : 설정될 속성의 타입. 가능한 값들에 대해, COleDispatchDriver::InvokeHelper에 관한 설명 부분을 참조하기 바란다.
... : vtProp로 명시된 타입의 단일 인수
설명
dwDispID에 의해 명시된 OLE 컨트롤 속성을 설정하기 위해 이 멤버 함수를 호출한다.
(Note) 이 함수는 OLE 컨트롤을 표현하는 CWnd 객체 상에서만 호출되어져야 한다.
OLE 컨트롤 컨테이너와 함께 이 멤버 함수를 사용하는 것에 대하여 더 자세한 정보는, Visual C++ Programmer's Guide에 있는 the article ActiveX Control Container을 참조하기 바란다.
CWnd::OnAmbientProperty
BOOL OnAmbientProperty( COleControlSite* pSite, DISPID dispid, VARIANT* pvar )
리턴
환경 속성이 지원되면 TRUE, 그렇지 않으면 FALSE를 리턴한다.
인수
pSite : 환경 속성을 요구하는 컨트롤 위치의 포인터
dispid : 요청된 환경 속성의 전송 ID
pvar : 환경 속성 값이 통하여 반환될 caller-allocated VARIANT 구조체의 포인터.
설명
프레임워크는 OLE 컨트롤을 포함한 윈도우로부터 환경 속성 값들을 얻기 위해 이 멤버 함수를 호출한다. OLE 컨트롤 컨테이너에 의해 반환된 디폴트 환경 속성 값들을 그것의 컨트롤로 변경하기 위해 이 함수를 오버라이드 한다. 오버라이드 함수에 의해 처리되지 않은 어떤 환경 속성은 기본 클래스 수행으로 되어야 한다.
CWnd::GetControlUnknown
LPUNKNOWN GetControlUnknown( );
리턴
이 CWnd 객체에 의해 표현되는 OLE 컨트롤의 IUnknown 인터페이스 포인터.
만약, 이 객체가 OLE 컨트롤을 표현하지 않는다면, 그 리턴 값은 NULL 이다.
설명
알려지지 않는 OLE 컨트롤의 포인터를 되찾기 위해 이 멤버 함수를 호출한다. 사용자는 이 IUnknown 포인터를 놓아주어서는 안 된다. 통상적으로, 컨트롤의 명확한 인터페이스를 얻기 위하여 사용된다.
GetControlUnknown에 의해 반환된 인터페이스 포인터는 reference-counted가 아니다. 그것에서 IUnknown::AddRef를 미리 호출하지 않았다면, 포인터 상에서 IUnknown::Release를 호출해서는 안 된다.
CWnd::GetProperty
void GetProperty( DISPID dwDispID, VARTYPE vtProp, void* pvProp )const;
인수
dwDispID : 되찾아 질 속성을 확인한다. 이 값은 보통 Component Gallery에 의해 제공된다.
vtProp : 회수될 속성의 타입을 기술한다. 가능한 값들은, COleDispatchDriver::InvokeHelper에 대한 설명 부분을 참조하기 바란다.
pvProp : 속성 값을 받을 변수의 주소. vtProp로 명시된 타입을 일치시켜야 한다.
설명
dwDispID로 명시된 OLE 컨트롤 속성을 얻기위해 이 멤버 함수를 호출한다.
GetProperty는 그리고 나서 pvProp를 통하여 값을 반환한다.
(Note) 이 함수는 OLE 컨트롤을 표현하는 CWnd 객체 상에서만 호출된다.
OLE Control Containers와 함께 멤버 함수를 사용하는 것에 대해 더 자세한 정보는, Visual C++ Programmer's Guide에 있는 the article ActiveX Control Containers 혹은 Programming ActiveX Controls in an ActiveX Control Container를 참조하기 바란다.
CWnd::InvokeHelper
void InvokeHelper( DISPID dwDispID, WORD wFlags, VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ... );
throw( COleException );
throw( COleDispatchException );
인수
dwDispID : 되찾아 질 속성을 확인한다. 이 값은 보통 Component Gallery에
의해 제공된다.
wFlags : IDispatch::Invoke로 호출의 문맥을 기술하는 플래그.
가능한 wFlags 값은, the Win32 SDK OLE Programmer's Reference에
있는 IDispatch::Invoke를 참조하기 바란다.
vtRet : 리턴 값의 타입을 상술한다. 가능한 값들은, COleDispatchDriver::InvokeHelper에
대한 설명 부분을 참조하기 바란다.
pvRet : 속성 값 혹은 리턴 값을 받을 변수의 주소. vtRet에 의해 명기되는 타입을
일치시켜야 한다.
pbParamInfo : pbParamInfo를 따르는 인수들의 타입들을 상술하는 바이트의
널종료 문자열의 포인터. 가능한 값들은,
COleDispatchDriver::InvokeHelper에 대한 설명 부분을 참조.
... : pbParamInfo에서 상술되는 타입의, 인수들의 변수 목록
설명
wFlags에 의해 명시된 문맥에서, dwDispID에 의해 명시된 속성 혹은 OLE 컨트롤 메소드를 호출하기 위해 이 멤버 함수를 호출한다. pbParamInfo 인수는 메소드 혹은 속성으로 전달된 인수들의 타입을 상술한다. 그 인수의 변수 리스트는 구문 선언에서 ...로 표현된다.
이 함수는 인수들을 VARIANTARG 값으로 변환한다, 그 다음 OLE 컨트롤 상에서 IDispatch::Invoke 메소드를 호출한다. 만약, IDispatch::Invoke 호출이 실패한다면, 이 함수는 예외로 던져질 것이다.
만약, SCODE(상태 코드)가 IDispatch::Invoke의 값 DISP_E_EXCEPTION에 의해 리턴되었다면, 이 함수는 COleException 객체를 버린다. 그 외에는 COleDispatchException을 버린다.
(Note) 이 함수는 OLE 컨트롤을 표현하는 CWnd 객체 상에서만 호출되어야만 한다.
OLE Control Containers와 함께 멤버 함수를 사용하는 것에 대해 더 자세한 정보는, Visual C++ Programmer's Guide에 있는 the article ActiveX Control Containers 혹은 Programming ActiveX Controls in an ActiveX Control Container를 참조하기 바란다.
CWnd::WindowProc
virtual LRESULT WindowProc( UINT message, WPARAM wParam, LPARAM lParam );
리턴
메시지에 의존하는 리턴 값
인수
message : 처리될 윈도우즈 메시지
wParam : 메시지를 처리에 사용된 부가적은 정보를 제공한다. 인수 값은 메시지에
의존한다.
lParam : 메시지를 처리에 사용된 부가적은 정보를 제공한다. 인수 값은 메시지에
의존한다.
설명
CWnd 객체를 위한 Windows 프로시저(WindowProc)을 제공한다. 그것은 윈도우의 메시지 맵을 통하여 메시지를 전송한다.
CWnd::DefWindowProc
virtual LRESULT DefWindowProc( UINT message, WPARAM wParam, LPARAM lParam );
리턴
메시지 전송에 의존한다.
인수
message : 처리될 Windows 메시지를 확인한다.
wParam : 부가적인 메시지-의존 정보
lParam : 부가적인 메시지-의존 정보
설명
디폴트 윈도우 프로시저를 호출한다, 어플리케이션이 수행하지 않는 어떤 윈도우 메시지에 대하여 디폴트 처리를 제공한다. 이 멤버 함수는 모든 메시지가 처리되는 것을 보장한다. 그것은 윈도우 프로시저로 받는 이들처럼 같은 인수와 함께 호출되어야만 한다.
CWnd::PostNcDestroy
virtual void PostNcDestroy( );
설명
윈도우가 소멸된 후 디폴트 OnNcDestroy 멤버 함수에 의해 호출된다. 파생된 클래스들은 이 포인터의 삭제와 같이 사용자 정의로 제거하기 위해 이 함수를 사용할 수 있다.
CWnd::OnNotify
virtual BOOL CWnd::OnNotify( WPARAM wParam, LPARAM lParam, LRESULT* pResult );
리턴
이 메시지를 처리한다면 어플리케이션은 0이 아닌 값을 리턴하며, 그 외는 0을 리턴한다.
인수
wParam : 메시지가 컨트롤로부터 왔다면 그 메시지를 보내는 컨트롤을 식별한다. 그 외는 0값을 가진다.
lParam : 신호 코드와 부가적인 정보를 가진 기 메시지 (NMHDR) 구조체의 포인터. 어떤 기호 메시지들에서, 이 인수는 그것의 첫째 멤버처럼 NMHDR 구조체를 가지는 더 큰 구조체를 가르킨다.
pResult : 메시지가 핸들되었다면 결과 코트를 저장할 LRESULT 변수의 포인터
설명
프레임워크는 컨트롤 이벤트가 일어나거나 그 컨트롤이 어떤 종류의 정보를 요구하는 컨트롤의 부모 윈도우에게 알리기 위해 이 멤버 함수를 호출한다.
OnNotify는 컨트롤 신호에 대한 메시지 맵을 처리한다.
WM_NOTIFY 메시지를 다루기 위해서 유도된 클래스에서 이 멤버 함수를 오버라이드 한다. 오버라이드는 기본 클래스 OnNotify가 호출되지 않는다면 메시지 맵을 처리하지 않을 것이다.
WM_NOTIFY 메시지 상에서 더 자세한 정보는, Technical Note 61 (TN061), ON_NOTIFY와 WM_NOTIFY messages를 참조. 사용자는 TN060, The New Windows Common Controls, 그리고 TN062, Message Reflection for Windows Controls에서 설명된 관련 topic에 역시 관심이 있을지 모른다.
CWnd::OnChildNotify
virtual BOOL OnChildNotify( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pLResult );
리턴
이 윈도우가 부모로 전송된 메시지를 다루는 것에 대하여 신뢰할 수 있다면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
인수
message : 부모 윈도우로 전송된 Windows 메시지 수
wParam : 메시지와 관련된 wparam
lParam : 메시지와 관련된 lparam
pLResult :부모의 윈도우 프로시저로부터 반환되어질 값의 포인터. 만약 리턴 값이 기대되지 않으면, 이 포인터는 NULL이 될 것이다.
설명
이 윈도우로 적용하는 통지 메시지를 받을 때 이 윈도우의 부모 윈도우에 의해 이 멤버 함수가 호출된다. 이 멤버 함수를 직접 호출하지 않는다.
이 멤버 함수의 디폴트 수행은 0을 리턴하며, 부모는 그 메시지를 다루어야 함을 의미한다.
컨트롤이 통지 메시지로 응답하는 방법을 확장하기 위해 이 멤버 함수를 오버라이드 한다.
CWnd::DoDataExchange
virtual void DoDataExchange( CDataExchange* pDX );
인수
pDX : CDataExchange 객체의 포인터
설명
대화 데이터를 교환하고 확인하기 위해 프레임워크에 의해 호출된다.
이 함수를 직접 호출하지 않는다. UpdateData 멤버 함수에 의해 호출된다. 대화 박스의 컨트롤을 초기화하고 대화상자로부터 데이터를 되찾기 위해 UpdateData를 호출한다.
CDialog로부터 application-specific 대화 클래스를 파생할 때, 프레임워크의 자동적인 데이터 교환과 확인을 이용하기 원한다면 이 멤버 함수를 오버라이드할 필요가 있다.
ClassWizard는 바랬던 대화 데이터 교환(DDX)과 유효(DDV) 전역 함수 콜의 “데이타 맵” 포함을 위해 이 멤버 함수의 오버라이드된 버전을 쓸 것이다.
이 멤버 함수의 오버라이드된 버전을 자동적으로 생성하기 위해서, 대화 에디터와 함께 대화 리소스를 먼저 만든다. 그 다음 application-specific 대화 클래스를 파생(유도)한다. 그리고 나서, ClassWizard를 호출하고 변수들과 데이터 그리고 유효한 범위를 새로운 대화상자에서 다양한 컨트롤들과 결합시키기 위해 그것을 사용한다. ClassWizard는 그리고 나서 오버라이드된 DoDataExchange를 쓰며, DoDataExchange는 데이터 맵을 포함한다.
다음은 ClassWizard에 의해 생성된 DDX/DDV 코드 블록 예이다.
void CPenWidthsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPenWidthsDlg)
DDX_Text(pDX, IDC_THIN_PEN_WIDTH, m_nThinWidth);
DDV_MinMaxInt(pDX, m_nThinWidth, 1, 20);
DDX_Text(pDX, IDC_THICK_PEN_WIDTH, m_nThickWidth);
DDV_MinMaxInt(pDX, m_nThickWidth, 1, 20);
//}}AFX_DATA_MAP
}
ClassWizard는 \\{{ 와 \\}} 괄호 안에서 코드를 유지할 것이다. 사용자는 이 코드를 변경해서는 안된다. 멤버 함수를 오버라이드한 DoDataExchange는 소스 파일에서 매크로 문을 앞에 두어야 한다.
대화 데이터 교환과 유효성에 대한 저 자세한 정보는, 사설 ODBC와 MFC에 있는 Displaying and Manipulating Data in a Form, Visual C++ Programmer's Guide에 있는 Dialog Data Exchange and Validation, 그리고 Using ClassWizard를 보라.
ClassWizard에 의해 생성되는 DDX_ 와 DDV_ 매크로의 설명은, Technical Note 26을 보라.
CWnd::OnInitMenu
afx_msg void OnInitMenu( CMenu* pMenu );
인수
pMenu : 초기화될 메뉴를 기술한다. 임시적이며 다음 사용을 위해 저장되지 않는다.
설명
프레임워크는 메뉴가 활성 되려고 할 때 이 멤버 함수를 호출한다. 사용자가 메뉴상의 아이템을 클릭하거나 메뉴키를 누를 때 호출이 일어난다. 그것이 보여지기 전에 메뉴를 변경하기 위해 이 멤버 함수를 오버라이드 한다.
OnInitMenu는 메뉴가 처음으로 억세스 될 때만 호출되거나, 각각의 억세스에 대해 한 번만 호출된다. 즉, 버튼이 눌려진 동안 몇 몇 메뉴 아이템을 가로질러 움직이는 마우스는 새로운 호출을 생성하지 않는다는 뜻이다. 이 호출은 메뉴 아이템들에 대하여 정보를 제공하지 않는다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnInitMenuPopup
afx_msg void OnInitMenuPopup( CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu );
인수
pPopupMenu :팝업 메뉴의 메뉴 객체를 기술한다. 임시적이며 다음 사용을 위해 저장되어서는 안된다.
nIndex : 메인 메뉴에서 팝업 메뉴의 색인을 기술한다.
bSysMenu : 팝업 메뉴가 Control 메뉴라면 TRUE 그렇지 않다면 FALSE 이다.
설명
팝업 메뉴가 활성되려고 할 때 프레임워크는 이 함수를 호출한다. 이것은 전체 메뉴의 변경 없이 보여지기 전에 어플리케이션이 팝업 메뉴를 변경하는 것을 허용한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysChar
afx_msg void OnSysChar( UINT nChar, UINT nRepCnt, UINT nFlags );
인수
nChar : Control-메뉴 키의 ASCII-문자 키 코드를 기술한다.
nRepCnt : 반복 카운트를 기술한다. (사용자가 그 키를 누르고 있는 결과처럼 키치기가 반복된 횟수)
nFlags : nFlags 인수는 다음 값들을 가질 수 있다:
값
의미
0-15
반복 카운트를 기술한다. 그 값은 사용자가 그 키를 누르고 있는 결과처럼 키치기가 반복된 횟수이다.
16-23
스캔 코드를 기술한다. 그 값은 원형 장비 제조사(OEM)에 의존한다.
24
그 키가 확장 101 혹은 102 키 자판에 있는 오른쪽 ALT와 CTRL 키처럼 확장된 키인지를 기술한다. 확장키이면 그 값은 1, 그렇지 않으면 0이다.
25-28
Windows에 의해 내부적으로 사용된다.
29
컨텍스트 코드를 기술한다. 키가 눌러진 동안 ALT 키가 눌려지면 그 값은 1, 그렇지 않으면 0 값을 가진다.
30
이전 키의 상태를 기술한다. 메시지가 전송되기 전에 키가 눌려지면 그 값은 1, 키가 올려져 있으면 0이다.
31
변화 상태를 기술한다. 키가 놓아져 있으면 그 값은 1, 키가 눌려져 있으면 0이다.
만약, CWnd가 입력 포커스를 가지고 WM_SYSKEYUP와 WM_SYSKEYDOWN 메시지들이 번역되면 프레임워크가 이 멤버 함수를 호출한다. 그것은 Control-menu 키의 가상-키 코드를 기술한다.
컨텍스트 코드가 0일 때, WM_SYSCHAR는 WM_SYSCHAR 메시지를
TranslateAccelerator Windows 함수로 전송할 수 있으며, TranslateAccelerator Windows 함수는 시스템 문자 키 대신에 보통 키 메시지일지라도 그것을 핸들 할 것이다.
이것은 심지어 활성윈도우가 입력 포커를 가지지 않아도 활성 윈도우와 함께 사용되어질 가속 키를 허용한다.
IBM 확장 101과 102 키 자판에서, 확장 키는 키보드의 메인 구역상에서 오른쪽 ALT 그리고 CTRL 키, 숫자 키 패트의 왼쪽으로 무리에 있는 INS, DEL, HOME, END, PAGE UP, PAGE DOWN, 그리고 방향키, 그리고 숫자 키 패드에 있는 슬래쉬 (/)와 ENTER 키이다. 어떤 다른 자판은 nFlags에 있는 확장-키 비트를 지원할 지 모른다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysCommand
afx_msg void OnSysCommand( UINT nID, LPARAM lParam );
인수
nID : 시스템 명령이 요구되는 타입을 기술한다. 이 인수는 다음 중 한가지가 될 수 있다:
SC_CLOSE : CWnd 객체를 닫는다.
SC_HOTKEY : application-specified 핫키와 관련된 CWnd 객체를 활성 시킨다.
lParam의 low-order 단어는 활성화하기 위해 윈도우 HWND를 확인한다.
SC_HSCROLL : 가로방향으로 스크롤한다.
SC_KEYMENU : 키를 치는 것을 통해 메뉴를 복원시킨다.
SC_MAXIMIZE (or SC_ZOOM) : CWnd 객체를 최대화 한다.
SC_MINIMIZE (or SC_ICON) : CWnd 객체를 최소화 한다. (아이콘화)
SC_MOUSEMENU : 마우스 클릭을 통해 메뉴를 복원한다.
SC_MOVE : CWnd 객체를 이동한다.
SC_NEXTWINDOW : 다음 윈도우로 이동한다.
SC_PREVWINDOW : 이전 윈도우로 이동한다.
SC_RESTORE : 보통 위치와 크기로 윈도우를 복원한다.
SC_SCREENSAVE : SYSTEM.INI 파일의 [boot] 섹션에 기술된 화면 보호 어플리케이션을 실행한다.
SC_SIZE : CWnd 객체의 크기를 조절한다.
SC_TASKLIST : Windows Task Manager(윈도우 작업 관리자) 어플리케이션을 실행하거나 활성 시킨다.
SC_VSCROLL : 세로로 스크롤한다.
lParam : Control-menu 명령이 마우스로 닫히었다면, lParam는 커서의 좌표를 담는다. low-order 단어는 x-좌표를, 그리고 high-order 단어는 y-좌표를 담는다. 그 외는 이 인수를 사용되지 않는다.
SC_HOTKEY : application-specified 핫키와 관련되 윈도우를 활성화시킨다. lParam의 low-order 단어는 활성화하기 위해 윈도우를 확인한다.
설명
프레임워크는 사용자가 Control 메뉴로부터 명령을 선택할 때, 혹은 사용자가 최대화 최소화 버튼을 선택하였을 때 이 멤버 함수를 호출한다.
디폴트로, OnSysCommand는 선행 테이블에 기술된 미리 정의된 액션을 위해 Control 메뉴 요청을 수행한다.
WM_SYSCOMMAND 메시지에서, nID 인수의 low-order 비트 네 개는 Windows에 의해 내부적으로 사용된다. 어플리케이션이 nID의 값을 시험할 때, 정확한 결과를 얻기 위해 AND 비트 연산자를 사용하여 값 0xFFF0과 nID 값을 결합해야 한다.
Control 메뉴에 있는 메뉴 아이템은 GetSystemMenu, AppendMenu, InsertMenu, 그리고 ModifyMenu 멤버 함수로 변경될 수 있다. Control 메뉴를 변경하는 어플리케이션들은 WM_SYSCOMMAND 메시지, 그리고 OnSysCommand로 아마 전달된 어플리케이션에 의해 핸들되지 않은 어떤 WM_SYSCOMMAND를 처리해야 한다. 어플리케이션에 의해 추가된 어떤 명령 값들은 아마 어플리케이션에 의해 처리되지 않으며 OnSysCommand로 전달되지 않는다.
어플리케이션은 OnSysCommand로 WM_SYSCOMMAND 메시지 전달에 의해 언제라도 어떠한 시스템 명령을 수행할 수 있다.
Control 메뉴로부터 아이템들을 선택하기 위해 정의된 가속(단축) 키 누름은 OnSysCommand 호출 안으로 번역된다. 다른 모든 가속 키 누름은 WM_COMMAND 메시지 안으로 번역된다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysDeadChar
afx_msg void OnSysDeadChar( UINT nChar, UINT nRepCnt, UINT nFlags );
인수
nChar : dead-key 문자 값을 기술한다.
nRepCnt : 반복 카운트를 기술한다.
nFlags : 다음 리스트에서 보여지는 바와 같이, 스캔 코드, key-transition 코드, 이전의 키 상태, 그리고 컨텍스트 코드를 기술한다.
값
의미
0?7
스캔 코드(OEM-의존 값). high-order 단어의 하위 바이트.
8
함수 키 혹은 숫자 키 패드 상에 있는 키와 같은, 확장된 키 (확장된 키라면 1, 그렇지 않으면 0이다).
9?10
사용되지 않는다.
11?12
Windows에 의해 내부적으로 사용된다.
13
컨텍스트 코드 (키가 눌려지는 동한 ALT 키가 눌려지면 1, 그 외는 0)
14
이전의 키 상태 ( 호출 전에 그 키가 내려지면 1, 그 키가 올려지면 0)
15
변화 상태 (키가 놓아져 있으면 1, 키가 눌려져 있으면 0)
설명
CWnd 객체가 OnSysKeyUp 혹은 OnSysKeyDown 멤버 함수가 호출될 때 입력 포커스를 가지면, 프레임워크는 이 멤버 함수를 호출한다. 그것은 dead-key의 문자 값을 기술한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysKeyDown
afx_msg void OnSysKeyDown( UINT nChar, UINT nRepCnt, UINT nFlags );
인수
nChar : 키가 눌려지고 있는 가상-키 코드를 기술한다.
nRepCnt : 반복 카운트를 기술한다.
nFlags : 다음 리스트에서 보여지는 바와 같이, 스캔 코드, key-transition 코드, 이전의 키 상태, 그리고 컨텍스트 코드를 기술한다.
값
의미
0?7
스캔 코드(OEM-의존 값). high-order 단어의 하위 바이트.
8
함수 키 혹은 숫자 키 패드 상에 있는 키와 같은, 확장된 키 (확장된 키라면 1, 그렇지 않으면 0이다).
9?10
사용되지 않는다.
11?12
Windows에 의해 내부적으로 사용된다.
13
컨텍스트 코드 (키가 눌려지는 동한 ALT 키가 눌려지면 1, 그 외는 0)
14
이전의 키 상태 ( 호출 전에 그 키가 내려지면 1, 그 키가 올려지면 0)
15
변화 상태 (키가 놓아져 있으면 1, 키가 눌려져 있으면 0)
OnSysKeyDown 호출에 대해서, key-transition 비트(bit 15) 는 0이다. 만약, 키가 눌려진 동안 ALT 키가 눌려지면 context-code 비트(bit 13)은 1이며, 윈도우가 입력 포커스를 가지지 않아 활성 윈도우로 메시지가 보내졌다면 0이다.
설명
CWnd 객체가 입력 포커스를 가진다면, OnSysKeyDown 멤버 함수는 사용자가 ALT 키를 누르면서 다른 키를 누를 때 프레임워크에 의해 호출된다. 만약, 윈도우가 입력 포커스를 현재 가지지 않는다면, 활성 윈도우의 OnSysKeyDown 멤버 함수는 호출된다. 메시지를 받는 CWnd 객체는 nFlags에서 컨텍스트 코드를 검사함으로써 이들 두 컨텍스트를 구별할 수 있다.
컨텍스트 코드가 0일 때, OnSysKeyDown에 의해 받은 WM_SYSKEYDOWN 메시지는 TranslateAccelerator Windows 함수로 전달될 수 있으며, 비록 이 함수는 시스템-키 메시지 대신 보통의 키 메시지일지라도 그것을 핸들할 것이다. 이것은 심지어 활성 윈도우가 입력 포커스를 가지지 않아도 활성 윈도우와 함께 사용되어질 가속 키들을 허용한다.
자동-반복 때문에, 하나의 OnSysKeyDown 보다 많은 호출은 WM_SYSKEYUP 메시지가 받아들여지기 전에 일어날지도 모른다. 이전의 키 상태(bit14)는 OnSysKeyDown 호출이 첫째 다운 변화 혹은 반복된 다운 변화를 나타내는지 결정하기 위해 사용된다.
IBM 확장 101과 102 키 자판에서, 확장키는 키보드의 메인 구역상에서 오른쪽 ALT 그리고 CTRL 키, 숫자 키패트의 왼쪽으로 무리에 있는 INS, DEL, HOME, END, PAGE UP, PAGE DOWN, 그리고 방향키, 그리고 숫자 키 패드에 있는 슬래쉬 (/)와 ENTER 키이다. 어떤 다른 자판은 nFlags에 있는 확장-키 비트를 지원할 지 모른다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysKeyUp
afx_msg void OnSysKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );
인수
nChar : 키가 눌려지고 있는 가상-키 코드를 기술한다.
nRepCnt : 반복 카운트를 기술한다.
nFlags : 다음 리스트에서 보여지는 바와 같이, 스캔 코드, key-transition 코드, 이전의 키 상태, 그리고 컨텍스트 코드를 기술한다.
값
의미
0?7
스캔 코드(OEM-의존 값). high-order 단어의 하위 바이트.
8
함수 키 혹은 숫자 키 패드 상에 있는 키와 같은, 확장된 키 (확장된 키라면 1, 그렇지 않으면 0이다).
9?10
사용되지 않는다.
11?12
Windows에 의해 내부적으로 사용된다.
13
컨텍스트 코드 (키가 눌려지는 동한 ALT 키가 눌려지면 1, 그 외는 0)
14
이전의 키 상태 ( 호출 전에 그 키가 내려지면 1, 그 키가 올려지면 0)
15
변화 상태 (키가 놓아져 있으면 1, 키가 눌려져 있으면 0)
OnSysKeyUp 호출에 대해서, key-transition 비트(bit 15) 는 1이다. 만약, 키가 눌려진 동안 ALT 키가 눌려지면 context-code 비트(bit 13)은 1이며, 윈도우가 입력 포커스를 가지지 않아 활성 윈도우로 메시지가 보내졌다면 0이다.
설명
CWnd 객체가 입력 포커스를 가진다면, OnSysKeyUp 멤버 함수는 사용자가 ALT 키를 누르면서 함께 눌려졌던 어떤 키를 놓을 때 프레임워크에 의해 호출된다. 만약, 윈도우가 입력 포커스를 현재 가지지 않는다면, 활성 윈도우의 OnSysKeyUp 멤버 함수는 호출된다. 호출을 받는 CWnd 객체는 nFlags에서 컨텍스트 코드를 검사함으로써 이들 두 컨텍스트를 구별할 수 있다.
컨텍스트 코드가 0일 때, OnSysKeyUp에 의해 받은 WM_SYSKEYUP 메시지는 TranslateAccelerator Windows 함수로 전달될 수 있으며, 비록 이 함수는 시스템-키 메시지 대신 보통의 키 메시지일지라도 그것을 핸들할 것이다. 이것은 심지어 활성 윈도우가 입력 포커스를 가지지 않아도 활성 윈도우와 함께 사용되어질 가속 키들을 허용한다.
IBM 확장 101과 102 키 자판에서, 확장키는 키보드의 메인 구역상에서 오른쪽 ALT 그리고 CTRL 키, 숫자 키패트의 왼쪽으로 무리에 있는 INS, DEL, HOME, END, PAGE UP, PAGE DOWN, 그리고 방향키, 그리고 숫자 키 패드에 있는 슬래쉬 (/)와 ENTER 키이다. 어떤 다른 자판은 nFlags에 있는 확장-키 비트를 지원할 지 모른다.
U.S. 확장 102-키 자판이 아니라면, 오른쪽 ALT 키는 CTRL+ALT 키 결합과 같이 다루어진다. 다음은 메시지의 순서와 사용자가 키를 누르고 놓을 때의 결과로 생기는 호출을 보여준다:
순서
액세스되는 함수
전달되는 메시지
1.
WM_KEYDOWN
VK_CONTROL
2.
WM_KEYDOWN
VK_MENU
3.
WM_KEYUP
VK_CONTROL
4.
WM_SYSKEYUP
VK_MENU
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnCompacting
afx_msg void OnCompacting( UINT nCpuTime );
인수
nCpuTime : 다른 운영 수행을 소비한 CPU 시간으로 메모리를 채우는 Windows에 의해 현재 소비한 CPU 시간의 비율을 기술한다. 예로써, 8000h는 메모리를 채우는데 소비한 CPU 시간의 50%를 나타낸다.
설명
Windows가 30에서 60초 간격에 대한 시스템 시간의 12.5% 보다 많이 메모리를 채우는데 소비되는 것을 발견할 때 모든 top-level 윈도우에 대하여 프레임워크는 이 멤버 함수를 호출한다. 이것은 시스템 메모리가 낮다는 것을 나타낸다.
Cwnd 객체가 이 호출을 받을 때, 그것은 Windows에서 수행하는 어플리케이션의 총수와 어플리케이션 행동의 현재 레벨을 고려하여 가능한 많은 메모리를 풀어줄 것이다. 그 어플리케이션은 얼마나 많은 어플리케이션이 수행중인지 결정하기 위하여 Windows 함수를 호출할 수 있다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnFontChange
afx_msg void OnFontChange( );
설명
시스템에서 모든 top-level 윈도우는, 어플리케이션이 폰트 리소스의 pool을 변경한 후에 프레임워크로부터 OnFontChange 호출을 받는다. 시스템(예로써, AddFontResource 혹은 RemoveFontResource Windows 함수를 통하여)으로부터 폰트를 추가하거나 제거하는 어플리케이션은 WM_FONTCHANGE 메시지를 모든 top-level 윈도우로 보낼 것이다.
이 메시지를 전송하기 위해, HWND_BROADCAST로 설정된 hWnd 인수와 함께 SendMessage Windows 함수를 사용한다.
CWnd::OnPaletteIsChanging
afx_msg void OnPaletteIsChanging( CWnd* pRealizeWnd );
인수
pRealizeWnd : 논리적인 팔레트에 관한 윈도우를 기술한다.
설명
프레임워크는 어플리케이션이 논리적인 팔레트를 실현하려하는 어플리케이션을 알리기 위해 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnPaletteChanged
afx_msg void OnPaletteChanged( CWnd* pFocusWnd );
인수
pFocusWnd : 변경하기 위해 시스템 팔레트를 일으킨 윈도우의 포인터. 그 포인터는 임시적이며 저장되지 않을 것이다..
설명
프레임워크는 입력 포커스를 가진 윈도우가 논리적인 팔레트를 실현한 후 모든 top-level 윈도우에 대하여 이 멤버 함수를 호출한다. 그 때문에 시스템 팔레트를 변경한다. 이 호출은 입력 포커스 없이 논리적인 팔레트를 실현하고 클라이언트 영역을 업데이트하기 위해 컬러 팔레트를 사용하는 윈도우를 허용한다.
OnPaletteChanged 멤버 함수는 모든 top-level과 시스템 팔레드를 변경하고 겹쳐진 윈도우를 위해 호출되며, 보내어질 WM_PALETTECHANGED 메시지를 일으킨 한 가지를 포함한다. 만약, 어떤 자식 윈도우가 칼라 팔레트를 사용한다면, 아마 이 메시지는 그것으로 전송되어진다.
무한 루프를 피하기 위해, pFocusWnd가 자신의 포인터를 가지고 있지 않다는 것을 결정하지 않는다면, 그 윈도우는 팔레트를 실현하지 않을 것이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSysColorChange
afx_msg void OnSysColorChange( );
설명
프레임워크는 한 변경이 그 시스템 칼라 설정에서 만들어질 때 모든 top-level 윈도우에 대하여 이 멤버 함수를 호출한다.
Windows는 시스템 칼라 변경으로 영향을 받은 어떠한 윈도우에 대해서도
OnSysColorChange를 호출한다.
존재하는 시스템 칼라를 사용하는 브러쉬를 가진 어플리케이션은 이들 브러쉬들을 삭제할 것이며, 새로운 시스템 칼라로 그것들을 다시 생성할 것이다.
CWnd::OnWindowPosChanging
afx_msg void OnWindowPosChanging( WINDOWPOS* lpwndpos );
인수
lpwndpos : 윈도우의 새로운 사이즈와 위치에 대한 정보를 가진 WINDOWPOS 데이터 구조체의 포인터
설명
프레임워크는 SetWindowPos 멤버 함수 혹은 다른 윈도우-관리 함수로의 호출 결과로서, 사이즈, 위치, 혹은 Z-order가 변경되려 할 때 이 멤버 함수를 호출한다.
WINDOWPOS 구조체의 플래그 멤버에서 적당한 비트를 설정하거나 지워서 어플리케이션이 윈도우로 변경하는 것을 막을 수 있다.
WS_OVERLAPPED 혹은 WS_THICKFRAME 스타일을 가진 윈도우에 대해서, 디폴트 수행은 WM_GETMINMAXINFO 메시지를 윈도우로 전송한다. 이것은 윈도우의 새로운 크기와 위치를 확인하고 CS_BYTEALIGNCLIENT 그리고 CS_BYTEALIGN 클라이언트 스타일을 시행하는 것이 된다. 어플리케이션은 그것의 기본 클래스를 호출하지 않음으로서 이 함수를 오버라이드할 수 있다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnWindowPosChanged
afx_msg void OnWindowPosChanged( WINDOWPOS* lpwndpos );
인수
lpwndpos : 윈도우의 새로운 크기와 위치에 대한 정보를 가지는 WINDOWPOS 데이터 구조체를 가르킨다.
설명
프레임워크는 SetWindowPos 멤버 함수 혹은 다른 윈도우-관리 함수로의 호출 결과로서, 사이즈, 위치, 혹은 Z-order가 변경되려 할 때 이 멤버 함수를 호출한다.
디폴트 구현은 윈도우로 WM_SIZE 와 WM_MOVE 메시지를 전송한다. 어플리케이션이 그것의 기본 클래스 호출 없이 OnWindowPosChanged 호출을 처리한다면 이 들 메시지들은 전송되지 않는다. 그것은 기본 클래tm 호출 없이 OnWindowPosChanged로 호출하는 동안 처리하는 어떤 이동 혹은 크기 조절을 수행하기 위해 더욱 효과적이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnDropFiles
afx_msg void OnDropFiles( HDROP hDropInfo );
인수
hDropInfo : 중단된 파일들을 설명하는 내부적인 데이터 구조체의 포인터.
이 처리는 중단된 파일들에 대한 정보를 검색하기 위해 DragFinish, DragQueryFile, 그리고 DragQueryPoint Windows 함수에 의해 사용된다.
설명
프레임워크는 사용자가 중단된 파일들의 용기처럼 그 스스로를 등록한 윈도우 위에서 왼쪽 버튼을 놓을 때 이 멤버 함수를 호출한다.
통상적으로, 파생된 클래스는 중단된 파일들을 지원하기 위해서 설계될 것이며, 윈도우를 생성하는 동안 그 자신을 등록할 것이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnSpoolerStatus
afx_msg void OnSpoolerStatus( UINT nStatus, UINT nJobs );
인수
nStatus : SP_JOBSTATUS 플래그를 기술한다.
nJobs : 인쇄 관리자 큐에 남아있는 작업의 수.
설명
작업이 인쇄 관리자 큐로부터 제거되거나 그 큐로 추가될 때마다 인쇄 관리자로부터 프레임워크는 이 함수를 호출한다.
이 호출은 단지 정보를 제공하는 목적이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnTimeChange
afx_msg void OnTimeChange( );
설명
프레임워크는 그 시스템 시간이 변경된 후 이 멤버 함수를 호출한다.
그 시스템 시간을 변경하는 어떤 어플리케이션은 이 메시지를 모든 top-level 윈도우로 전송한다. WM_TIMECHANGE 메시지를 모든 top-level 윈도우로 전송하기 위해서, 어플리케이션은 HWND_BROADCAST로 설정하는 hwnd 인수와 함께 SendMessage Windows 함수를 사용할 수 있다.
CWnd::OnWinIniChange
afx_msg void OnWinIniChange( LPCTSTR lpszSection );
인수
lpszSection : 변경된 섹션의 이름을 기술하는 스트링을 가르킨다. (스트링은 섹션의 이름을 둘러싸는 사각 괄호를 포함하지 않는다.)
설명
프레임워크는 변경이 Windows 초기화 파일(WIN.INI)로 생성되어진 후에 이 멤버 함수를 호출한다.
어플리케이션이 WIN.INI 파일에 있는 설정을 변경하기 위하여 그 함수를 사용한 후에 SystemParametersInfo Windows 함수가 OnWinIniChange 함수를 호출한다.
모든 top-level 윈도우로 WM_WININICHANGE 메시지를 보내기 위하여, 어플리케이션은 HWND_BROADCAST로 설정된 hwnd 인수와 함께 SendMessage Windows 함수를 사용할 수 있다.
만약, 어플리케이션이 동시에 WIN.INI에 있는 많은 다른 섹션들을 변경한다면, 그 어플리케이션은 NULL로 설정된 lpszSection와 함께 하나의 WM_WININICHANGE 메시지를 보낼 것이다. 그렇지 않으면, WIN.INI를 변경할 때마다 어플리케이션은 WM_WININICHANGE를 보낼 것이다.
만약, 어플리케이션이 NULL로 설정된 lpszSection와 함께 OnWinIniChange 호출을 받는다면, 어플리케이션은 어플리케이션에 영향을 미치는 WIN.INI에 있는 모든 섹션을 검사할 것이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnCommand
virtual BOOL OnCommand( WPARAM wParam, LPARAM lParam );
리턴
이 메시지를 처리한다면 어플리케이션은 0이 아닌 값을 리턴하고, 그 외는 0을 리턴한다.
인수
wParam : wParam의 내림-차순 워드는 메뉴 아이템 혹은 컨트롤의 명령 ID를 확인한다. 만약, 메시지가 컨트롤로부터 온다면 wParam의 올림-차순 워드는 통보 메시지를 기술한다. 메시지가 가속기로부터 온다면, 올림-차순 워드는 1 값을, 메뉴로부터 온다면, 올림-차순 워드는 0이다.
lParam : 만약, 그 메시지가 컨트롤로부터 온다면 그 메시지를 전송하는 컨트롤을 확인하고, 그렇지 않으면 lParam이 0이다.
설명
사용자가 메뉴로부터 아이템을 선택하거나, 자식 컨트롤이 통보 메시지를 전송하거나, 가속 키 누름이 번역될 때 프레임워크는 이 멤버 함수를 호출한다.
OnCommand는 컨트롤 통보와 ON_COMMAND 엔트리를 위한 메시지 맵을 처리하고, 알맞은 멤버 함수를 호출한다.
WM_COMMAND 메시지를 처리하기 위해 파생된 클래스에서 이 멤버 함수를 오버라이드 한다. 기본 클래스 OnCommand가 호출되지 않았다면 오버라이드는 그 메시지 맵을 처리하지 않을 것이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnActivate
afx_msg void OnActivate( UINT nState, CWnd* pWndOther, BOOL bMinimized );
인수
nState : CWnd가 활성화되어 있는지 혹은 비활성화되어 있는지를 기술한다. 그것은 다음 값들 중 하나가 될 수 있다:
WA_INACTIVE : 그 윈도우는 비활성화가 되어있다.
WA_ACTIVE : 그 윈도우는 마우스 클릭보다 어떤 다른 방법을 통하여 활성화가 되어있다.(예로써, 윈도우를 선택하기 위해 키보드 인터페이스 사용에 의한 방법)
WA_CLICKACTIVE : 그 윈도우는 마우스 클릭에 의해 활성화되어 있다.
pWndOther : 활성화 혹은 비활성화 되어있는 CWnd 포인터. 그 포인터는 NULL이 될 수 있고 임시적이다.
bMinimized : 활서와 혹은 비활성화 되었는 CWnd 의 최소화된 상태를 기술한다. TRUE 값은 그 윈도우가 최소화되었다는 것을 나타낸다.
만약 TRUE라면, CWnd가 활성화 되어있고, 그렇지 않다면 비활성화 되어있다.
설명
CWnd 객체가 활성화되어 있거나 비활성화되어 있을 때 프레임워크는 이 멤버 함수를 호출한다. 비활성화되어 있는 메인 윈도우가 먼저 OnActivate가 호출된 것을 가지고, 그리고 나서 활성화되어있는 메인 윈도우는 OnActivate가 호출된 것을 가진다.
CWnd 객체가 마우스 클릭으로 활성화된다면, 역시 OnMouseActivate 멤버 함수 호출을 받을 것이다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnActivateApp
afx_msg void OnActivateApp( BOOL bActive, HTASK hTask );
인수
bActive : CWnd가 활성화되어있는지 혹은 비활성화되어 있는지를 기술한다. TRUE는 CWnd가 활성화되어 있다는 의미이고, FALSE는 비활성화되어 있다는 뜻이다.
hTask : 작업 처리를 기술한다. bActive가 TRUE이면, 그 핸들이 활성화되어 있는 CWnd를 가지는 작업을 확인한다.
설명
프레임워크는 활성화되어 있는 작업의 모든 top-level 윈도우로, 그리고 비활성화되어 있는 모든 top-level 윈도우에 대하여 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnCancelMode
afx_msg void OnCancelMode( );
설명
프레임워크는 어떤 내부 모드를 취소하기 위한 CWnd를 알리려고 이 멤버 함수를 호출한다. 만약, CWnd 객체가 포커스를 가진다면, 그것의 OnCancelMode 멤버 함수는 대화 박스 혹은 메시지 박스가 보여질 때 호출된다. 이것은 마우스 캡춰처럼 모드를 취소하기 위해 CWnd에게 기회를 준다.
그 디폴트 구현은 ReleaseCapture Windows 함수를 호출함으로서 응답한다. 다른 모드를 처리하기 위해 파생된 클래스에서 이 멤버함수를 오버라이드한다.
CWnd::OnChildActivate
afx_msg void OnChildActivate( );
설명
만약, CWnd 객체가 다중 문서 인터페이스(MDI) 자식 윈도우라면,
사용자가 윈도우의 제목 표시줄을 클릭하거나 그 윈도우가 활성, 이동, 혹은 크기 설정이 될 때 OnChildActivate는 프레임워크에 의해 호출된다.
CWnd::OnClose
afx_msg void OnClose( );
설명
프레임워크는 CWnd 혹은 어플리케이션이 종료될 신호처럼 이 멤버 함수를 호출한다. 디폴트 구현은 DestroyWindow를 호출한다.
CWnd::OnCreate
afx_msg int OnCreate( LPCREATESTRUCT lpCreateStruct );
리턴
CWnd 객체의 생성을 계속하기 위해 OnCreate는 0을 리턴해야 한다. 만약, 어플리케이션이 1을 리턴한다면, 그 윈도우는 소멸될 것이다.
인수
lpCreateStruct : 생성되어지는 CWnd 객체에 대하여 정보를 가진 CREATESTRUCT 구조체를 가르킨다.
설명
Windows 윈도우가 Create 혹은 CreateEx 멤버 함수를 호출함으로서 생성되는 것을 어플리케이션이 요구할 때 프레임워크는 이 멤버 함수를 호출한다. CWnd 객체는 그 윈도우가 생성된 후 그것이 보이기 전에 이 호출을 받는다. OnCreate는 Create 혹은 CreateEx 멤버 함수가 리턴하기 전에 호출된다.
파생된 클래스의 어떤 요구된 초기화를 수행하기 위해 이 함수를 오버라이드한다.
CREATESTRUCT 구조체는 그 윈도우를 생성하기 위해 사용된 인수들의 사본을 가진다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnCtlColor
afx_msg HBRUSH OnCtlColor( CDC* pDC, CWnd* pWnd, UINT nCtlColor );
리턴
OnCtlColor는 컨트롤 배경을 그리기 위해 사용되어질 브러쉬로 처리를 리턴해야 한다.
인수
pDC : 자식 윈도우에 대한 디스플레이 컨텍스트의 포인터를 가진다. 임시적일지도 모른다.
pWnd : 칼라에 대한 컨트롤의 포인터를 가진다. 임시적일지도 모른다.
nCtlColor : 컨트롤의 타입을 기술한다, 다음 값들 중 하나를 가진다:
CTLCOLOR_BTN : 버튼 컨틀롤
CTLCOLOR_DLG : 대화 상자
CTLCOLOR_EDIT : 에디트 컨트롤
CTLCOLOR_LISTBOX : 리스트-박스 컨트롤
CTLCOLOR_MSGBOX : 대화 상자
CTLCOLOR_SCROLLBAR : 스크롤-바 컨트롤
CTLCOLOR_STATIC : 정적인 컨트롤
설명
자식 컨트롤이 막 그려지려고 할 때 프레임워크가 이 멤버 함수를 호출한다. 대부분의 컨트롤들은 정확한 칼라들을 허용하는 컨트롤을 그리는 것에 대하여 pDC를 준비하기 위해 이 메시지를 그들 부모(보통 대화상자)로 보낸다.
텍스트 칼라를 변경하기 위해, 희망한 빨강, 초록, 그리고 파랑(RGB) 값들을 가지는 SetTextColor 멤버 함수를 호출한다.
단일-라인 에디트 컨트롤의 배경 칼라를 변경하기 위해서는, CTLCOLOR_EDIT 그리고 CTLCOLOR_MSGBOX 메시지 코드 모두에서 브러쉬 처리를 설정하며, CTLCOLOR_EDIT 코드에 응답하여 CDC::SetBkColor 함수를 호출한다. drop-down 리스트 박스는 사실 콤보 박스의 자식이며 윈도우의 자식이 아니기 때문에 OnCtlColor는 drop-down 콤보 박스의 리스트 박스에 대하여 호출되지 않을 것이다. drop-down 리스트 박스의 칼라를 변경하기 위해서는, nCtlColor 인수 속에 CTLCOLOR_LISTBOX에 대하여 검사하는 OnCtlColor의 오버라이드와 함께 CComboBox를 생성한다. 이 핸들러에서, SetBkColor 멤버 함수는 텍스트에 대한 배경색을 설정하기 위하여 사용되어져야 한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 base-class 수행를 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnDestroy
afx_msg void OnDestroy( );
설명
프레임워크는 소멸되어지고 있는 CWnd 객체를 알리기 위해 이 멤버 함수를 호출한다. OnDestroy는 CWnd 객체가 스크린으로부터 제거된 후에 호출된다.
OnDestroy는 CWnd가 소멸되는 것에 대해 먼저 호출되고, 그 다음, 그것들이 소멸되는 것처럼 CWnd의 자식 윈도우에 대하여 호출된다.
만약, 소멸되는 CWnd 객체가 클립보드-표시기 체인(SetClipboardViewer 멤버 함수 호출로 설정)의 부분이라면, CWnd는 OnDestroy 함수로부터 반환되는 ChangeClipboardChain 멤버 함수를 호출함으로써 클립보드-표시기 체인으로부터 스스로를 제거해야 한다.
CWnd::OnEnable
afx_msg void OnEnable( BOOL bEnable );
인수
bEnable : CWnd 객체가 enable 혹은 disable되었는지를 기술한다. 만약 CWnd가 enable되어 있다면 이 인수는 TRUE이며, disable되어 있으면 FALSE이다.
설명
프레임워크는 어플리케이션이 CWnd 객체의 가능한 상태를 변경할 때 이 멤버함수를 호출한다. OnEnable는 EnableWindow 멤버 함수가 리턴되기 전에 호출된다. 그러나 상태(WS_DISABLED 스타일 비트)가 가능한 윈도우는 변경된 후에 호출된다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnEndSession
afx_msg void OnEndSession( BOOL bEnding );
인수
bEnding : 세션이 종료되어 있는지 아닌지를 기술한다. 세션이 종료되어 있다면 그 값은 TRUE, 그렇지 않으면 FALSE를 가진다.
설명
프레임워크는 CWnd 객체가 OnQueryEndSession 멤버 함수 호출로부터 0이 아닌 값이 리턴된 후에 이 멤버 함수를 호출한다. OnEndSession 호출은 그 세션이 사실상 종료하는 것인지 CWnd 객체를 알린다.
만약 bEnding 이 TRUE이면, Windows는 모든 어플리케이션이 이 호출 처리로부터 리턴된 후에 언제라도 종료할 수 있다. 결과적으로, OnEndSession 범주 내 종료에 대하여 요구된 모든 작업들을 수행하는 어플리케이션을 가진다.
세션이 종료되고 있을 때 DestroyWindow 멤버 함수 혹은 PostQuitMessage Windows 함수를 호출할 필요는 없다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnEnterIdle
afx_msg void OnEnterIdle( UINT nWhy, CWnd* pWho );
인수
nWhy : 그 메시지가 대화 상자 혹은 보여지는 메뉴의 결과인지를 기술한다. 이 인수는 다음 값들 중 하나가 될 수 있다:
MSGF_DIALOGBOX : 대화 상자가 보여지고 있기 때문에 시스템은 idle이다.
MSGF_MENU : 메뉴가 보여지고 있기 때문에 시스템은 idle이다.
pWho : 대화 상자(nWhy가 MSGF_DIALOGBOX라면), 혹은 보여지는 메뉴(nWhy가 MSGF_MENU라면)를 포함하는 윈도우의 포인터를 기술한다. 이 포인터는 아마 임시적이고 다음 사용을 위해 저장되지 않는다.
설명
프레임워크는 modal 대화 상자 혹은 메뉴가 idle 상태를 입력하고 있는 어플리케이션의 메인 윈도우 프로시저를 알리기 위해서 이 멤버 함수를 호출한다. Modal 대화 상자 혹은 메뉴는, 하나 혹은 그 이상의 이전 메시지들을 처리한 후 그것의 큐(queue)에서 메시지들을 기다리고 있지 않을 때 idle 상태를 입력한다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnEraseBkgnd
afx_msg BOOL OnEraseBkgnd( CDC* pDC );
리턴
배경을 지운다면 0이 아닌 값을, 그외는 0을 리턴한다.
인수
pDC : 장치-문맥 객체를 기술한다.
설명
프레임워크는 CWnd 객체 배경이 지우기(예로써, 사이즈 변경 때)를 필요로 할 때 이 멤버 함수를 호출한다. 그것은 그리기를 위한 유효하지 않은 영역을 준비하기 위해 호출된다. 디폴트 구현은 윈도우 클래스 구조체의 hbrBackground 멤버에 의해 기술되어진 윈도우 클래스 배경 브러쉬를 사용하는 배경을 지운다.
만약 hbrBackground 멤버가 NULL이면, OnEraseBkgnd의 오버라이드된 버전은 배경색을 지울 것이다. 버전은 브러쉬에 대해 처음으로 UnrealizeObject를 호출하고 브러쉬를 선택함으로써 CWnd 좌표로 의도된 브러쉬의 원형 또한 정렬할 것이다.
만약, 그 메시지를 처리하고 배경을 지운다면 오버라이드된 OnEraseBkgnd는
WM_ERASEBKGND에 답하여 0이 아닌 값을 리턴할 것이다.
이것은 더 이상 지우는 것이 요구되지 않는 것을 나타낸다. 만약, 0을 리턴하면 그 윈도우는 지워질 필요에 따라 마크된 것이 남을 것이다.(통상적으로, 이것은 PAINTSTRUCT 구조체의 fErase 멤버가 TRUE될 것을 의미한다.)
Windows는 배경이 MM_TEXT 매핑 모드로 계산된 것을 가정한다. 만약 장치 문맥이 어떠한 다른 매핑 모드를 사용하고 있다면, 그 영역은 클라이언트 영역의 볼 수 있는 부분 범주 내에 있지 않게 된다.
(Note) 이 멤버 함수는 Windows 메시지를 다루는 어플리케이션을 허용하기 위해 프레임워크에 의해 호출된다. 함수로 전달된 인수는 그 메시지가 받아들여질 때 프레임워크에 의해 받은 인수들을 반향한다. 만약, 이 함수의 기본 클래스 수행을 호출한다면 그 수행은 사용자가 함수로 제공한 인수들이 아닌, 그 메시지와 함께 처음에 전송된 인수들을 사용할 것이다.
CWnd::OnGetMinMaxInfo
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );
인수
lpMMI : 윈도우의 최대 크기와 위치와 윈도우의 최소, 최대 트래킹 크기에 대한 정보를
포함하는 MINMAXINFO 구조체를 가리킨다.
이 구조체에 대한 더 자세한 정보는 MINMAXINFO 구조체를 참조 하시오.
설명
이 프레임워크는 윈도우의 최대 크기나 넓이나 최소, 최대 트래킹 크기를 알아야 할 때마다
이 멤버 함수를 호출한다.
최대 크기는 윈도우의 경계가 완전히 확장되었을 때의 윈도우 크기이다.
윈도우의 최대 트래킹 크기는 윈도우 크기를 조정하기 위해 경계를 사용해서 만들 수 있는 가장 큰 윈도우 크기이다.
윈도우의 최소 트래킹 크기는 윈도우 크기를 조정하기 위해 경계를 사용해서 만들 수 있는 가장 작은 윈도우 크기이다.
윈도우는 다양한 위치와 넓이들에 대해 디폴트 값들을 기술해서 포인트들의 배열을 채운다.
어플리케이션은 OnGetMinMaxInfo에서 이 값들을 변경할 수 있다.
Note
이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 다룰 수 있도록 허용해 주는
프레임워크에 의해 호출된다는 것을 주의해라.
당신의 함수에 전달된 인수는 메시지를 받은 프레임워크에 의해 받은 인수를 나타낸다.
만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가
아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnIconEraseBkgnd
afx_msg void OnIconEraseBkgnd( CDC* pDC );
인수
pDC 아이콘의 장치 문맥 객체를 기술한다. 임시로 사용되고 나중에 사용하기 위해
저장하지 않는다.
설명
이 프레임워크는 아이콘 배경이 그 아이콘을 그리기 전에 채워져야 할 때 최소화된(아이콘화된) CWnd 객체에 대한 멤버 함수를 호출한다. CWnd는 단지 클래스 아이콘이 윈도우 디폴트 구현을 정의한다면 이 호출을 받는다. 만약 그렇지 않으면 OnEraseBkgnd가 호출된다. DefWindowProc 멤버 함수는 부모 윈도우의 배경 브러쉬로 아이콘 배경을 채운다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는 프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnKillFocus
afx_msg void OnKillFocus( CWnd* pNewWnd );
인수
pNewWnd : (NULL이나 임시적으로 될 수 있는)입력 포커스를 받는 윈도우를 가리키는 포인터를 기술한다.
설명
이 프레임워크는 입력 포커스를 잃기 전에 즉시 이 멤버 함수를 호출한다. 만약 CWnd 객체가 캐럿(^)을 표시하고 있다면, 이 캐럿은 이 지점에서 소멸되어야 한다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는 프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMenuChar
afx_msg LRESULT OnMenuChar( UINT nChar, UINT nFlags, CMenu* pMenu );
리턴
리턴 값의 오름차순 word는 다음 코드들 중에 하나를 포함해야 한다.
값
설명
0
사용자가 누른 문자를 무시하고 시스템 스피커에 짧은 소리를 생성하도록 윈도우에게 알린다.
1
현재 메뉴를 닫도록 윈도우에게 알린다.
2
리턴 값의 내림차순 word는 특정한 아이템에 대한 아이템 번호를 포함한다는 것을 윈도우에게 알린다. 이 아이템은 윈도우에 의해 선택된다.
내림차순 word는 만약 오름차순 word가 0이나 1을 포함한다면 무시된다. 어플리케이션은 메뉴에
위치한 비트맵을 선택하기 위해 가속 장치(단축) 키가 사용될 때 이 메시지를 처리해야 한다.
인수
nChar : 구조 설정에 의존하면서, 사용자가 누른 ANSI 혹은 Unicode 문자를 기술한다.
nFlags : 만약 menu가 팝업 메뉴라면 MF_POPUP 플래크를 포함한다. 만약 메뉴가 콘트롤 메뉴라면 MF_SYSMENU 플래그를 포함한다.
pMenu : 선택된 CMenu에 대한 포인터를 포함한다. 이 포인터는 임시적익 저장될 수 없다.
설명
이 프레임워크는 현재 메뉴에서 미리 정의된 단축키와 일치하지 않는 메뉴 단축키를 사용자가
누를 때 이 멤버 함수를 호출한다. 그것은 그 메뉴를 소유하고 있는 CWnd에 보내진다.
OnMenuChar 사용자가 ALT 키나 다른 키를 누를 때 비록 그 키가 단축키와 일치하지 않더라도 또한 호출된다. 이 경우, pMenu는 CWnd에 소유된 메뉴를 가리키고, nFlag는 0이다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMenuSelect
afx_msg void OnMenuSelect( UINT nItemID, UINT nFlags HMENU hSysMenu );
인수
nItemID : 선택된 아이템을 인식한다. 만약 선택된 아이템이 메뉴 아이템이라면 nItemID는
메뉴 아이템 ID를 포함한다. 만약 선택된 아이템이 팝업 메뉴라면 nItemID는 팝업 메뉴 인덱스를, 그리고 hSysMenu는 메인(클릭된) 메뉴의 핸들을 포함한다.
nFlags : 다음 메뉴 플래그들의 조합을 포함한다.
MF_BITMAP 아이템이 비트맵이다.
MF_CHECKED 아이템이 체크된다
MF_DISABLED 아이템은 사용가능하지 않다.
MF_GRAYED 아이템이 흐리게 된다.
MF_MOUSESELECT 아이템이 마우스로 선택되었다.
MF_OWNERDRAW 아이템이 owner-draw이다.
MF_POPUP 아이템이 팝업 메뉴를 포함한다.
MF_SEPARATOR 아이템이 메뉴 아이템 분리자이다.
MF_SYSMENU 아이템이 콘트롤 메뉴안에 포함된다.
hSysMenu 만약 nFlags가 MF_SYSMENU를 포함한다면 메시지와 관련된 메뉴를 인식한다.
만약 nFlags가 MF_POPUP를 포함한다면, 메인 메뉴의 핸들을 인식한다. 만약 nFlags가
MF_SYSMENU와 MF_POPUP 모두 포함하지 않는다면 그것은 사용되지 않는다.
설명
만약 CWnd 객체가 메뉴와 관련있다면, OnMenuSelect는 사용자가 메뉴 아이템을 선택할 때 프레임워크에 의해 호출된다. 만약 nFlags가 0xFFFF를 포함하고 hSysMenu가 0을 포함한다면 사용자가 ESC 키나 메뉴의 바깥을 눌렀기 때문이어서 윈도우는 메뉴를 닫는다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMove
afx_msg void OnMove( int x, int y );
인수
x : 클라이언트 영역의 윈쪽 위 코너의 새로운 x 좌표 위치를 기술한다.
이 새로운 위치는 팝업 윈도우와 자식 윈도우에 대한 부모 클라이언트 좌표의 겹친 부분에 대해서 스크린 좌표에서 주어진다.
y : 클라이언트 영역의 윈쪽 위 코너의 새로운 y 좌표 위치를 기술한다.
이 새로운 위치는 팝업 윈도우와 자식 윈도우에 대한 부모 클라이언트 좌표의 겹친 부분에 대해서 스크린 좌표에서 주어진다.
설명
이 프레임워크는 CWnd 객체가 이동한 후에 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMoving
afx_msg void OnMoving( UINT nSide, LPRECT lpRect );
인수
nSide : 이동되어 질 윈도우의 edge.
lpRect : 아이템의 좌표를 포함 할 CRect 또는 RECT 구조체의 주소.
설명
사용자 가 CWnd 객체를 이동 시키는 동안 프레임워크는 이 멤버 함수를 호출한다.
이 멤버함수는 어플리케이션이 윈도우 메시지를 처리할 수 있도록 하기위해 프레임워크에 의해 호출되는 것을 주목하라. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnDeviceChange
afx_msg BOOL OnDeviceChange( UINT nEventType, DWORD dwData );
인수
nEventType : 하나의 이벤트 타입. 유용한 값들을 묘사를 위해 설명 부분을 보라
dwData : 이벤트- 설명 데이타를 참고 있는 구조체의 주소.이것의 의미는 주어진 이벤트에 달려있다.
설명
프레임워크는 장치나 컴퓨터의 하드웨어 환경설정을 위한 변화의 장치 드라이버나 어플리케이션을 알리기 위해 이 함수를 사용한다. 이젝션이나 (ejection)락킹과 같은 소프트웨어 제어가능한 특성등을 제공하는 장치들을 위해 운용시스템은 일반적으로 어플리케이션들과 장치 드라이버들이 그들의 장치들의 사용을 끝낼수 있도록 DBT_DEVICEREMOVEPENDING 을 전달한다. 만약 운용시트템이 강제적으로 장치를 삭제한다면 그것은그렇게 하기전에 DBT_DEVICEREMOVEPENDING 메시지를 보내지 않을 것이다.
nEvent 인수들은 다음의 변수들중에 하나가 될것이다. :
DBT_DEVICEARRIVAL : 삽입 되었거나 지금 유용한 장치
DBT_DEVICEQUERYREMOVE : 요구된 장치를 삭제하기 위한 접근 권한. 어떠한 어플리케이션도 이 요구를 거부하거나 삭제를 취소할 수 있다.
DBT_DEVICEQUERYREMOVEFAILED : 취소된 장치를 제거할 요구.
DBT_DEVICEREMOVEPENDING : 막 제거될 장치. 거부되어질 수 없다.
DBT_DEVICEREMOVECOMPLETE : 제거된 장치.
DBT_DEVICETYPESPECIFIC : 장치-설명 이벤트.
DBT_CONFIGCHANGED : 변화된 현재의 환경설정.
DBT_DEVNODES_CHANGED : 변화된 장치 노드.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnStyleChanged
afx_msg void OnStyleChanged( int nStyleType, LPSTYLESTRUCT lpStyleStruct );
인수
nStyleType : 확장되었거나 확장되지 않은 윈도우 스타일이 변화될것인지 아닌지를 설명한다. 인수는 다음의 변수들과 조합될 수 있다.
GWL_EXSTYLE : 변화된 윈도우의 확장된 스타일
GWL_STYLE :변화된 윈도우의 확장되지 않은 스타일.
lpStyleStruct : 윈도우를 위한 새로운 스타일을 포함하는 STYLESTRUCT 구조체를 가리킨다. 어플리케이션은 스타일을 시험할 수 있으나 그것은 그것들을 변경시킬 수 없다.
설명
프레임워크는 the ::SetWindowLong 함수가 윈도우 스타일의 하나 또는 그 이상을 변경 시킨후 이 함수를 호출한다. 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다는 것을 주목하라. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고
전달되는 인수들을 사용한다.
CWnd::OnStyleChanging
afx_msg void OnStyleChanging( int nStyleType, LPSTYLESTRUCT lpStyleStruct );
인수
nStyleType : 확장되었거나 확장되지 않은 윈도우 스타일이 변화될 것인지 아닌지를 설명한다. 인수는 다음의 변수들과 조합될 수 있다.
GWL_EXSTYLE : 변화된 윈도우의 확장된 스타일
GWL_STYLE :변화된 윈도우의 확장되지 않은 스타일.
lpStyleStruct : 윈도우를 위한 새로운 스타일을 포함하는 STYLESTRUCT 구조체를 가리킨다. 어플리케이션은 스타일을 시험할 수 있고 그것들을 변경시킬 수 있다.
설명
프레임워크는 the ::SetWindowLong 함수가 막 윈도우 스타일의 하나 또는 그 이상을 변경 시킬때 이 함수를 호출한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnPaint
afx_msg void OnPaint( );
설명
프레임워크는 윈도우 또는 어플리케이션이 어플리케이션의 원도우의 부분을 repaint 요청을 할때 이 함수를 호출한다. WM_PAINT 메시지는 UpdateWindow 똔는 RedrawWindow 멤버 함수가 호출될 때 보내진다. 윈도우는 RDW_INTERNALPAINT 플래그 셋을 가진 RedrawWindow 멤버함수를 호출한 결과로서 내부 paint 메시지를 받게 될것이다.
이러한 경우 윈도우는 갱신 영역을 가지지 않을 것이다. 어플리케이션은 윈도우가 갱신 영역을 가질것인지 아닌지를 결정하기 위해 GetUpdateRect 멤버 함수를 호출한다. 만약 GetUpdateRect가 0를 리턴하면 어플리케이션은 BeginPaint 와 EndPaint 멤버함수들을 호출하지 못한다.
WM_PAINT 메시지가 유효하지 않은 영역과 RDW_INTERNALPAINT 플래그 셋을 가진 RedrawWindow 멤버 함수에 대한 호출에 의해 발생하기 때문에 어플리케이션의 책임은 각각의 WM_PAINT 메시지를 위해 그것의 내부 데이터 구조체들을 검사함으로써 어떠한 내부 repainting 또는 갱신을 검사한다. 내부 WM_PAINT 메시지는 윈도들에 의해 단지 한번 보내진다. RedrawWindow 멤버함수가 RDW_INTERNALPAINT 플래그 셋을 가지고 다시 호출될 때까지나 또는 윈도우가 유효하지 않을 때까지 WM_PAINT 메시지가 UpdateWindow 멤버함수에 의해 윈도우에 전달된 후에 더이상 WM_PAINT 메시지는 보내지거나 부쳐지지 않을 것이다.
document/view 어플리케이션에서 이미지 표현에 대한 정보는 CView::OnDraw를 보라.
WM_Paint 사용에 관한 더 많은 정보를 위해 the Win32 SDK Programmer's Reference에 있는 다음의 주제들을 보라.
The WM_PAINT Message
Using the WM_PAINT Message
CWnd::OnParentNotify
afx_msg void OnParentNotify( UINT message, LPARAM lParam );
인수
message : 부모가 인식되어지고 있고 자식 윈도우의 식별자를 위한 이벤트를 설명한다.
이벤트는 메시지의 하위-명령 워드이다. 만약 이벤트가 WM_CREATE 또는 WM_DESTROY 라면, 메시지의 상위-명령 워드는 자식 윈도우의 식별자이다. 그렇지 않다면 상위 명령 워드는 정의되지 않는다. 이벤트(메시지의 하위 명령 워드)는 아래 변수들의 어떤것일 것이다.
WM_CREATE : 자식 윈도우는 생성되고 있다.
WM_DESTROY : 자식 윈도우는 소멸되고 있다.
WM_LBUTTONDOWN : 사용자는 자식 윈도우 위에 마우스 커서를 위치 시키고 왼쪽 마우스 버튼을 클릭한다.
WM_MBUTTONDOWN : 사용자는 자식 윈도우 위에 마우스 커서를 위치 시키고 가운데 버튼을 클릭한다.
WM_RBUTTONDOWN : 사용자는 자식 윈도우 위에 마우스 커서를 위치 시키고 왼쪽 마우스 오른쪽 버튼을 클릭한다.
lParam : 만약 메시지의 이벤트(하위 명령 워드)가 WM_CREATE 또는 WM_DESTROY이라면, lParam은 자식 윈도우의 윈도우 처리를 설명한다.; 그렇지않다면 lParam은 커서의 x 와 y 좌표를 포함한다. x 좌표는 하위 명령 워드에 있고 y 좌표는 상위 명령 워드에 있다.
설명
부모의 OnParentNotify 멤버 함수는 그것의 윈도우가 생성되거나 소멸될 때 또는 사용자가 커서가 자식 윈도우 상에 있을 때 마우스 버튼을 클릭할때 프레임워크에 의해 호출된다. 자식 윈도우가 생성될 때 시스템은 OnParentNotify를 윈도우를 생성하는 Create 멤버 함수가 리턴하기 전에 바로 OnParentNotify를 호출한다. 자식 윈도우가 소멸될때 시스템은 어떤 프로세싱이 일어나기 전에 윈도우를 소멸하기 위해 OnParentNotify를 호출한다.
OnParentNotify 는 최상의 레벨 윈도우를 포함하여 자식 윈도우의 모든 조상 윈도우를 위해 호출된다. WS_EX_NOPARENTNOTIFY 스타일을 가진 것들을 제외한 모든 자식 윈도우들은 그들의 부모 윈도우들에 메시지를 보낸다.
디폴트로, 다이얼로그안의 자식 윈도우들은 만약 자식윈도우가 CreateEx 멤버 함수를 호출함으로써 이 스타일없이 생성된다면 WS_EX_NOPARENTNOTIFY 스타일을 갖는다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnQueryDragIcon
afx_msg HCURSOR OnQueryDragIcon( );
리턴
커서나 아이콘을 포함하는 더블워드 값은 하위 명령 워드 안에서 처리한다.
커서나 아이콘은 장치들의 결과와 호환됨에 틀림없다. 만약 어플리케이션이 널값을 리턴한다면, 시스템은 디폴트 커서를 보여준다. 디폴트 리턴 값은 널값이다.
설명
프레임워크는 이 클래스를 위해 정의된 아이콘을 갖지않는 최소화된 윈도우를 통해 이 멤버 함수를 호출한다. 시스템은 이 호출이 사용자가 최소화된 윈도우를 끌동안 보여질 커서를 획득하게 한다. 만약 어플리케이션이 커서나 아이콘의 처리를 리턴한다면, 시스템은 그것을 black-and-white로 변환한다. 만약 어플리케이션이 처리를 리턴한다면, 그 처리는 반드시 모노크롬 커서나 드라이버의 결과의 표시와 호환되는 아이콘을 인식한다. 어플리케이션은 그것의 실행가능한 파일안의 리소스들로 부터의 아이콘이 커서를 로드하고 이 처리를 획득하기 위한 CWinApp::LoadCursor 또는 CWinApp::LoadIcon 멤버 함수를 호출할 수 있다.
CWnd::OnQueryEndSession
afx_msg BOOL OnQueryEndSession( );
리턴
만약 어플리케이션이 올바르게 셧다운 되었다면 0이 아닌 값을, 그렇지 않다면 0을 리턴한다.
설명
사용자가 윈도우 세션을 끝내기 위한 선택을 할 때 또는 어플리케이션이 ExitWindows Windows 함수를 호출할 때 프레임워크는 이 함수를 호출한다. 만약 어떤 어플리케이션이 0을 리턴한다면 윈도우들 세션은 끝나지 않는다. 하나의 어플리케이션이 0을 리턴하자마자 윈도우들은 OnQueryEndSession 호출하기를 멈추고 벌써 리턴된 0이 아닌값을 리턴한 어떤 어플리케이션을 위한 FALSE의 인수 값을 가진 WM_ENDSESSION 메시지를 보낸다.
CWnd::OnQueryNewPalette
afx_msg BOOL OnQueryNewPalette( );
리턴
만약 CWnd 가 그것의 논리적 팔레트를 인식한다면 0이아닌 값이다. 그렇지 않다면 0이다.
설명
프레임워크는 CWnd 객체가 포커스를 받을때 논리적 팔레트를 인식하는 기회를 CWnd 에게 주는 입력 포커스를 막 전달 받을때 이 멤버함수를 호출한다.
CWnd::OnQueryOpen
afx_msg BOOL OnQueryOpen( );
리턴
만약 아이콘이 열릴수 있다면 0이 아닌 값이다. 그렇지 않다면 0은 아이콘이 열리는 것을 방지한다.
설명
프레임워크는 CWnd 객체가 최소화 될때 이 함수을 호출하고 사용자는 CWnd 가 그것의 접근허가된 크기나 위치에 저장되도록 요구한다. OnQueryOpen 안에 있을 동안 CWnd는 포커스 변화 (예를 들면, 다이알로그 박스 생성)또는 활성화를 유발하는 행동을 수행하지 않는다.
CWnd::OnSetFocus
afx_msg void OnSetFocus( CWnd* pOldWnd );
인수
pOldWnd : 입력 포커스를 잃는 CWnd 객체를 포함한다.
그 포인터는 일시적이고 나중 사용을 위해서 저장되지 않는다.
설명
프레임워크는 입력 포커스를 얻은 후에 이 멤버함수를 호출한다.
캐럿(^)을 보여주기 위해, CWnd는 이 포인트에서 적당한 캐럿 함수들을 호출해야한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnShowWindow
afx_msg void OnShowWindow( BOOL bShow, UINT nStatus );
인수
bShow : 윈도우가 보여질지 아닐지를 설명한다.
윈도우가 보여지고 있다면 그것은 TRUE 이다.
윈도우가 감쳐지고 있다면 그것은 FALSE이다.
nStatus : 윈도우가 보여지고 있는 상태를 설명한다. ShowWindow 멤버함수 호출때문에 메시지가 보내진다면 그것은 0이다. 그렇지않다면 아래주의 하나일 것이다.
SW_PARENTCLOSING : 부모 윈도우가 닫히거나 팝업 윈도우가 감쳐지고 있다.
SW_PARENTOPENING : 부모 윈도우가 열리거나 팝업 윈도우가 보여지고 있다.
설명
프레임워크는 CWnd 객체가 막 감춰지거나 보여질때 이 멤버 함수를 호출한다.
ShowWindow 멤버함수가 호출될때 겹쳐진 윈도우가 최소화 되거나 저될때 또는 겹쳐지거나 팝업된 윈도우가 닫혀지거나 열릴때 윈도우는 사라지거나 보여진다. 겹쳐진 윈도우가 닫힐때 모든 팝업 윈도우들은 감춰진 윈도우와 관계한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnSize
afx_msg void OnSize( UINT nType, int cx, int cy );
CWnd::OnGetMinMaxInfo
afx_msg void OnGetMinMaxInfo( MINMAXINFO FAR* lpMMI );
인수
lpMMI : 윈도우의 최대 크기와 위치와 윈도우의 최소, 최대 트래킹 크기에 대한 정보를
포함하는 MINMAXINFO 구조체를 가리킨다.
이 구조체에 대한 더 자세한 정보는 MINMAXINFO 구조체를 참조
설명
이 프레임워크는 윈도우의 최대 크기나 넓이나 최소, 최대 트래킹 크기를 알아야 할 때마다
이 멤버 함수를 호출한다.
최대 크기는 윈도우의 경계가 완전히 확장되었을 때의 윈도우 크기이다.
윈도우의 최대 트래킹 크기는 윈도우 크기를 조정하기 위해 경계를 사용해서 만들 수 있는 가장
큰 윈도우 크기이다.
윈도우의 최소 트래킹 크기는 윈도우 크기를 조정하기 위해 경계를 사용해서 만들 수 있는 가장
작은 윈도우 크기이다.
윈도우는 다양한 위치와 넓이들에 대해 디폴트 값들을 기술해서 포인트들의 배열을 채운다.
어플리케이션은 OnGetMinMaxInfo에서 이 값들을 변경할 수 있다.
노트 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 다룰 수 있도록 허용해 주는
프레임워크에 의해 호출된다는 것을 주의해라.
당신의 함수에 전달된 인수는 메시지를 받은 프레임워크에 의해 받은 인수를 나타낸다.
만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가
아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnIconEraseBkgnd
afx_msg void OnIconEraseBkgnd( CDC* pDC );
인수
pDC 아이콘의 장치 문맥 객체를 기술한다. 임시로 사용되고 나중에 사용하기 위해
저장하지 않는다.
설명
이 프레임워크는 아이콘 배경이 그 아이콘을 그리기 전에 채워져야 할 때 최소화된(아이콘화된) CWnd 객체에 대한 멤버 함수를 호출한다. CWnd는 단지 클래스 아이콘이 윈도우 디폴트 구현을 정의한다면 이 호출을 받는다. 만약 그렇지 않으면 OnEraseBkgnd가 호출된다. DefWindowProc 멤버 함수는 부모 윈도우의 배경 브러쉬로 아이콘 배경을 채운다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는 프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnKillFocus
afx_msg void OnKillFocus( CWnd* pNewWnd );
인수
pNewWnd : (NULL이나 임시적으로 될 수 있는)입력 포커스를 받는 윈도우를 가리키는 포인터를 기술한다.
설명
이 프레임워크는 입력 포커스를 잃기 전에 즉시 이 멤버 함수를 호출한다. 만약 CWnd 객체가 캐럿(^)을 표시하고 있다면, 이 캐럿은 이 지점에서 소멸되어야 한다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는 프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMenuChar
afx_msg LRESULT OnMenuChar( UINT nChar, UINT nFlags, CMenu* pMenu );
리턴
리턴 값의 오름차순 word는 다음 코드들 중에 하나를 포함해야 한다.
값
설명
0
사용자가 누른 문자를 무시하고 시스템 스피커에 짧은 소리를 생성하도록 윈도우에게 알린다.
1
현재 메뉴를 닫도록 윈도우에게 알린다.
2
리턴 값의 내림차순 word는 특정한 아이템에 대한 아이템 번호를 포함한다는 것을 윈도우에게 알린다. 이 아이템은 윈도우에 의해 선택된다.
내림차순 word는 만약 오름차순 word가 0이나 1을 포함한다면 무시된다. 어플리케이션은 메뉴에
위치한 비트맵을 선택하기 위해 가속 장치(단축) 키가 사용될 때 이 메시지를 처리해야 한다.
인수
nChar : 구조 설정에 의존하면서, 사용자가 누른 ANSI 혹은 Unicode 문자를 기술한다.
nFlags : 만약 menu가 팝업 메뉴라면 MF_POPUP 플래크를 포함한다. 만약 메뉴가 콘트롤 메뉴라면 MF_SYSMENU 플래그를 포함한다.
pMenu : 선택된 CMenu에 대한 포인터를 포함한다. 이 포인터는 임시적익 저장될 수 없다.
설명
이 프레임워크는 현재 메뉴에서 미리 정의된 단축키와 일치하지 않는 메뉴 단축키를 사용자가
누를 때 이 멤버 함수를 호출한다. 그것은 그 메뉴를 소유하고 있는 CWnd에 보내진다.
OnMenuChar 사용자가 ALT 키나 다른 키를 누를 때 비록 그 키가 단축키와 일치하지 않더라도 또한 호출된다. 이 경우, pMenu는 CWnd에 소유된 메뉴를 가리키고, nFlag는 0이다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMenuSelect
afx_msg void OnMenuSelect( UINT nItemID, UINT nFlags HMENU hSysMenu );
인수
nItemID : 선택된 아이템을 인식한다. 만약 선택된 아이템이 메뉴 아이템이라면 nItemID는
메뉴 아이템 ID를 포함한다. 만약 선택된 아이템이 팝업 메뉴라면 nItemID는 팝업 메뉴 인덱스를, 그리고 hSysMenu는 메인(클릭된) 메뉴의 핸들을 포함한다.
nFlags : 다음 메뉴 플래그들의 조합을 포함한다.
MF_BITMAP : 아이템이 비트맵이다.
MF_CHECKED : 아이템이 체크된다
MF_DISABLED : 아이템은 사용가능하지 않다.
MF_GRAYED : 아이템이 흐리게 된다.
MF_MOUSESELECT : 아이템이 마우스로 선택되었다.
MF_OWNERDRAW : 아이템이 owner-draw이다.
MF_POPUP : 아이템이 팝업 메뉴를 포함한다.
MF_SEPARATOR : 아이템이 메뉴 아이템 분리자이다.
MF_SYSMENU : 아이템이 콘트롤 메뉴안에 포함된다.
hSysMenu : 만약 nFlags가 MF_SYSMENU를 포함한다면 메시지와 관련된 메뉴를 인식한다.
만약 nFlags가 MF_POPUP를 포함한다면, 메인 메뉴의 핸들을 인식한다. 만약 nFlags가
MF_SYSMENU와 MF_POPUP 모두 포함하지 않는다면 그것은 사용되지 않는다.
설명
만약 CWnd 객체가 메뉴와 관련있다면, OnMenuSelect는 사용자가 메뉴 아이템을 선택할 때 프레임워크에 의해 호출된다. 만약 nFlags가 0xFFFF를 포함하고 hSysMenu가 0을 포함한다면 사용자가 ESC 키나 메뉴의 바깥을 눌렀기 때문이어서 윈도우는 메뉴를 닫는다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
CWnd::OnMove
afx_msg void OnMove( int x, int y );
인수
x : 클라이언트 영역의 윈쪽 위 코너의 새로운 x 좌표 위치를 기술한다.
이 새로운 위치는 팝업 윈도우와 자식 윈도우에 대한 부모 클라이언트 좌표의 겹친 부분에 대해서 스크린 좌표에서 주어진다.
y : 클라이언트 영역의 윈쪽 위 코너의 새로운 y 좌표 위치를 기술한다.
이 새로운 위치는 팝업 윈도우와 자식 윈도우에 대한 부모 클라이언트 좌표의 겹친 부분에 대해서 스크린 좌표에서 주어진다.
설명
이 프레임워크는 CWnd 객체가 이동한 후에 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 당신의 어플리케이션이 윈도우 메시지를 조종하도록 하게 해주는
프레임워크에 의해 호출된다. 당신의 함수에 전달된 인수는 메시지를 받았을 때 프레임워크에 의해 받아들여진 인수를 나타낸다. 만약 당신이 이 함수의 기본 클래스 구현을 호출한다면, 이 구현은 당신이 함수에 공급하는 인수가 아니라 처음부터 메시지로 전달된 인수를 사용할 것이다.
인수
nType : 요구된 크기변경의 타입을 설명한다. 이 인수는 아래 변수들 중의 하나일
것이다.
SIZE_MAXIMIZED : 윈도우가 최대화된다.
SIZE_MINIMIZED : 윈두우가 최소화된다.
SIZE_RESTORED : 윈도우가 크기변경된다. 그러나 SIZE_MINIMIZED 되거나 SIZE_MAXIMIZED 되지 않는다.
SIZE_MAXHIDE :다른 윈도우가 최대화 될때 메시지는 모든 팝업 윈도우에 전달된다.
SIZE_MAXSHOW : 다른 윈도우가 그것의 이전 크기에 저장될때 메시지는 모든 팝업 윈도우에 전달된다.
cx 클라이언트 영역의 새로운 넓이를 설명한다.
cy 클라이언트 영역의 새로운 높이를 설명한다.
설명
윈도우의 크기가 변경된 후에 이멤버 함수를 호출한다. 만약 SetScrollPos 또는 MoveWindow 멤버함수가 OnSize로 부터 자식 윈도우를 위해 호출된다면 CWnd가 다시 그려지도록 하기 위해 SetScrollPos 또는 MoveWindow의 bRedraw 인수는 0이 아닌 값이어야 한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnSizing
afx_msg void OnSizing( UINT nSide, LPRECT lpRect );
인수
nSide : 이동되어지는 윈도우의 에지.
lpRect : 아이템의 좌표를 포함하는 CRect 또는 RECT 구조체의 주소
설명
프레임워크는 사용자가 사각형을 크기를 변경하는 것을 지시하기 위해 이 함수를 호출한다.
이 메시지를 처리함으로써 어플리케이션은 위치와 크기를 감시할 수 있다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnStyleChanged
afx_msg void OnStyleChanged( int nStyleType, LPSTYLESTRUCT lpStyleStruct );
인수
nStyleType : 윈도우의 확장 또는 비확장된 스타일이 변경될 것인가 아닌가를 설명한다.
이 인수는 아래의 변수들과 조합될 수 있다.
GWL_EXSTYLE : 변경된 윈도우의 확장된 스타일.
GWL_STYLE : 변경된 윈도우의 비 확장된 스타일.
lpStyleStruct :윈도우를 위한 새로운 스타일을 포함한 STYLESTRUCT 구조체에 대한 포인터.
어플리케이션은 이 스타일들을 검사할 수 있으나 그것들을 변경할 수 없다.
설명
프레임워크가 the::SetWindowLong 함수가 하나 또는 이상의 윈도우 스타일들을 변경한 후 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnStyleChanging
afx_msg void OnStyleChanging( int nStyleType, LPSTYLESTRUCT lpStyleStruct );
인수
nStyleType : 윈도우의 확장되었거나 비 확장된 스타일들이 변경될것인지 아닌지를 설명한다. 이 인수는 아래의 변수들과 조합될 수 있다.
GWL_EXSTYLE : 윈도우의 확장된 스타일이 변경되었다.
GWL_STYLE : 윈도우의 비 확장된 스타일이 변경되었다.
lpStyleStruct : 윈도우의 새로운 스타일을 포함하고 있는 STYLESTRUCT 구조체에 대한 포인터. 어플리케이션은 스타일들을 조사하고 그것들을 변경할 수 있다.
설명
프레임워크는 ::SetWindowLong 함수가 막 하나 또는 그 이상의 윈도우 스타일을 변경하려 할 때 이 멤버 함수를 호출한다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnCharToItem
afx_msg int OnCharToItem( UINT nChar, CListBox* pListBox, UINT nIndex );
리턴
프레임워크는 호출에 대한 대답으로서 어플리케이션이 수행하는 행동을 설명하기 위해 이 멤버 함수를 호출한다. ?2의 리턴 값은 아이템 선택의 모든 측면을 처리하는 어플리케이션을 가리키고 리스트 상자에 의한 더이상의 행동을 원하지 않는다. 1의 리턴 값은 리스트 상자가 keystroke에 대한 반응에서 정해진 행동을 수행하는 것을 가르킨다. 0 또는 그 이상의 리턴값은 리스트 박스안의 아이템의 0에 기초한 인덱스를 설명하고 리스트 박스가 주어진 아이템 상에서 keystroke를 위한 정해진 행동을 수행한다는 것을 가리킨다.
인수
nChar : 사용자에 의해 눌려진 값을 설명한다.
pListBox : 리스트 상자의 포인터를 설명한다. 그것은 임시적이다. .
nIndex : 현재의 캐럿(^) 위치를 설명한다.
설명
LBS_WANTKEYBOARDINPUT 스타일을 가진 리스트 상자가 그것의 소유자에게
WM_CHARTOITEM 메시지를 WM_CHAR 메시지에 대한 응답으로서 보낼때 호츨된다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnCompareItem
afx_msg int OnCompareItem( int nIDCtl, LPCOMPAREITEMSTRUCT
lpCompareItemStruct );
리턴
두개 아이템의 적절한 위치를 가리킨다. 그것은 아래의 값들의 하나가 될 것이다.
Value(값)
Meaning(의미)
?1
아이템 2 전에 아이템 1을 정렬한다.
0
아이템 1과 아이템 2를 동시에 정렬한다.
1
아이템 2후에 아이템 1를 정렬한다.
인수
nIDCtl :WM_COMPAREITEM 메시지를 보내는 제어의 식별자.
lpCompareItemStruct : 콤보나 리스트 박스에서 두개의 아이템을 위한 제공된 어플리케이션 데이터와 식별자를 포함하는 COMPAREITEMSTRUCT 데이터 구조에 대한 롱형 포인터를 포함한다.
설명
프레임워크는 자식 정렬된 소유자 드로우(draw) 콤보 또는 리스트 상자에서 새로운 아이템의 적절한 위치를 설명하기 위해서 이 멤버 함수를 호출한다. 만약 콤보나 리스트 상자가 CBS_SORT 또는 LBS_SORT 스타일을 가지고 생성되었다면 윈도우들은 어플리케이션이 새로운 아이템을 추가할때 마다 소유자 WM_COMPAREITEM 메시지를에 콤보 상자나 리스트 상자에게 보낸다. 콤보나 리스트 상자에 있는 두개의 아이템은 lpCompareItemStruct에 의해 지시되는 COMPAREITEMSTRUCT 구조체에서 재 형성된다. OnCompareItem은 아이템의 어떤것이 다른 것 이전에 나타나는지를 가르키는 값을 리턴한다. 전형적으로 윈도우는 그것이 새로운 아이템을 위한 정확한 위치를 결정할때 까지 여러번 이런 호출을 한다.
COMPAREITEMSTRUCT 구조체의 hwndItem 멤버가 CListBox 또는 CComboBox 객체에 속한다면, 적당한 클래스의 CompareItem 가상 함수는 호출된다. 아이템 비교를 위해서 파생된 CListBox 또는 CComboBox 클래스안의 CComboBox::CompareItem 또는 CListBox::CompareItem를 오버라이드 해라.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnDeleteItem
afx_msg void OnDeleteItem( int nIDCtl, LPDELETEITEMSTRUCT lpDeleteItemStruct );
인수
nIDCtl : WM_DELETEITEM 메시지를 전달하는 제어의 식별자.
lpDeleteItemStruct : 삭제된 리스트 상자 아이템에 대한 정보를 담고 있는
DELETEITEMSTRUCT 데이터 구조체에 대한 롱형의 포인터를 설명한다.
설명
프레임워크는 콤보 상자나 소유자 드로우 상자의 소유자가 리스트 상자나 콤보 상자가 소멸되는 것이나 또는 아이템들이 CComboBox::DeleteString, CListBox::DeleteString, CComboBox::ResetContent, 또는 CListBox::ResetContent에 의해 제거되었다는 것을 알리기 위해 이 멤버 함수를 호출한다. 만약 DELETEITEMSTRUCT 구조체의hwndItem 멤버가 콤보나 리스트 상자에 속한다면 적당한 클래스의 DeleteItem 가상 함수가 호출된다. 설명되 아이템 데이타를 지우기 위해 적절한 제어 클래스의 DeleteItem 멤버함수를 오버라이드 해라.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::OnDrawItem
afx_msg void OnDrawItem( int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct );
인수
nIDCtl : WM_DRAWITEM 메시지를 보내는 제어에 대한 식별자를 포함한다.
만약 메뉴가 메시지를 보낸다면, nIDCtl은 0을 포함한다.
lpDrawItemStruct : 그려질 아이템과 요구되는 타입의 드로잉에 대한 정보를 포함하는
DRAWITEMSTRUCT 데이타 구조체에 대한 롱형 포인터를 설명한다.
설명
프레임워크는 제어나 메뉴의 시각적 측명이 변경되었을때 소유자 드로우 버튼 제어, 콤보 박스, 리스 상자 제어 또는 메뉴의 소유자를 위한 이 멤버 함수를 호출한다. DRAWITEMSTRUCT 구조체의 itemAction은 수행되어질 드로잉 오퍼레이션을 정의한다.
이 멤버의 데이타는 제어의 소유자가 어떤 드로잉 액션이 요구되는지를 결정한다. 이 메시지의 처리로 부터의 리턴되기 전에 어플리케이션은 DRAWITEMSTRUCT 구조체의 hDC 멤버에 의해 인식된 장치 컨텍스트가 정해진 상태에 저장되었음을 보장한다. 만약 hwndItem 멤버가 CButton, CMenu, CListBox, 또는 CComboBox 객체에 속한다면, 적절한 클래스의 DrawItem 가상 함수는 호출된다. 아이템을 그리기 위해서 적절한 제어의 클래스의 DrawItem 멤버 함수를 오버라이드 하라.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다.
CWnd::OnDSCNotify
afx_msg BOOL OnDSCNotify( DSCSTATE nState, DSCREASON nReason, BOOL pBool
);
리턴
만약 nReason 와 nState에 의해 오퍼레이션의 처리된다면 TRUE를 반환한다.
그렇지 않으면 FALSE를 반환한다.
인수
nState : 설명 부분에 나열된 DSCSTATE 열거자에서 발견되는 명명된 상수들 중 하나.
nReason : 설명 부분에 나열된 DSCREASON 열거자에서 발견되는 명명된 상수들 중 하나.
pBool : nReason 에 의해 표현된 오퍼레이션이 계속될 것인지 아닌지를 가리키는 Boolean 답.
설명
데이터 소스 제어에 묶인 제어가 밑줄 커서를 정형화 하기 위한 시도와 정형화를 할 때 데이터 소스 제어가 보내는 이벤트에 대한 응답으로서 sink notification이 호출된다. 데이터 소스 제어에 의해 생성되는 trap 이유(nReason) 와 진술(nState)를 트랩하기 위해 그것을 사용하라. 모든 진술들과 이유들의 조합은 디폴트로서 허용된다. 어플리케이션에 중요한 진술들과 이유들을 테스트하고 적절한 TRUE와 FALSE를 리턴하기 위해 코드를 작성하라.
OnDSCNotify를 사용하는 것은 아래와 같은 sink notification 을 받기를 원하는 클래스의 헤더에서 sink notification를 위한 핸들러와 sink map를 선언한다.
class CMyDlg : public CDialog
{
...
DECLARE_EVENTSINK_MAP()
BOOL OnDSCNotify(DSCSTATE nState,
DSCREASON nReason, BOOL* pBool);
...
};
그때 클래스의 구현에서 sink map를 정의하고 아래와 같은 이벤트들을 받기 위해 함수를 설명한다.
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_DSCNOTIFY(CMyDlg, IDC_RDCCTRL1, OnDSCNotify)
END_EVENTSINK_MAP()
OnDSCNotify의 구현인 인식 콜백 함수는 데이터 소스 제어 안에서 다음의 이벤트들이 발생할 때 호출될 것이다.
enum DSCREASON
{
dscNoReason = 0,
dscClose, dscCommit, dscDelete,
dscEdit, dscInsert, dscModify, dscMove
};
아래와 같은 각각의 상태들을 위해 여러번 그것은 호출 될것이다.
enum DSCSTATE
{
dscNoState = 0,
dscOKToDo,
dscCancelled,
dscSyncBefore,
dscAboutToDo,
dscFailedToDo,
dscSyncAfter,
dscDidEvent
};
다중의 호출은 다른 시기에 이벤트를 트랩하는 것을 허용한다. 예를 들면 이벤트들은 일반적으로 제어에 의해 커서의 상태의 정형화에 대한 응답으로서 발생되기 때문에 데이터 소스제어가 하게 될 첫 번째 일은 그 행동을 정확하게 수행하기 위한 okey인지를 묻는 이벤트들을 방출하는 것이다. (dscOKToDo 상태를 위한 이유이기 때문에). 만약 모든 클라이언트들이 이벤트를 수용하여 데이터 제어, 어플리케이션 기타 등등의 이벤트를 감시한다면 데이터 소스 제어는 모든 부각된 데이터가 필요하다면 쏟아져 나올때 그때 dscSyncBefore 상태로 옮겨진다. 예를 들어 만약 에디트 필드의 내용이 변경된다면 변경은 커서로 넘겨진다. 이 이벤트를 따라서 데이터 소스 제어는 dscAboutToDo 와 dscSyncAfter 상태로 옮겨지며 마지막으로 dscDidEvent 상태로 옮겨진다. 이것은 데이터 소스 제어로 부터 통지를 잡기위한 더 많은 기회를 제공한다.
CWnd::OnGetDlgCode
afx_msg UINT OnGetDlgCode( );
리턴
어플리케이션 프로세스들과 입력 타입을 가리키는 하나 또는 그이상의 다음의 변수들 :
DLGC_BUTTON : Button (generic).
DLGC_DEFPUSHBUTTON : Default pushbutton.
DLGC_HASSETSEL : EM_SETSEL messages.
DLGC_UNDEFPUSHBUTTON : No default pushbutton processing. (어플리케이션은 그것이 정해진 푸쉬버튼 절차를 위한 시스템에 위존하지 않지만 입력 버튼을 처리하는 것을 가리키기 위해 DLGC_BUTTON 을 가진 플래그를 사용 할 수 있다.
DLGC_RADIOBUTTON : Radio button.
DLGC_STATIC : Static control.
DLGC_WANTALLKEYS : All keyboard input.
DLGC_WANTARROWS : Arrow keys.
DLGC_WANTCHARS : WM_CHAR messages.
DLGC_WANTMESSAGE : All keyboard input. 어플리케이션은 제어상에 이 메시지를 전달한다.
to the control.
DLGC_WANTTAB : TAB key.
설명
일반적으로 윈도우들은 CWnd 제어에 대한 화살표 키와 탭키 입력을 처리한다. OnGetDlgCode를 오버라이드 함으로써 CWnd 제어를 그 자체를 처리하기 위한 입력의 특별한 타입을 선택할 수 있다. 미리 정의된 제어 클래스들을 위한 정해진 OnGetDlgCode 함수들은 각각의 클래스를 위한 적당한 코드를 리턴한다.
CWnd::OnMeasureItem
afx_msg void OnMeasureItem( int nIDCtl, LPMEASUREITEMSTRUCT
lpMeasureItemStruct );
인수
nIDCtl : 제어의 ID.
lpMeasureItemStruct : 소유자 드로우 제어의 면적을 포함하는 MEASUREITEMSTRUCT 데이터 구조에 대한 포인트.
설명
프레임워크는 제어가 생성될 때 메뉴 아이템 또는 리스트 상자, 콤보 상자, 소유자 드로우 버튼의 소유자를 위한 프레임워크를 가지고 이 멤버함수를 호출한다. lpMeasureItemStruc에 의해 포인트된 MEASUREITEMSTRUCT 데이터 구조를 작성하고 리턴하며 이 멤버함수를 오버라이드 하라.;이것은 제어면적의 윈도우를 알리며 윈도우들이 제어를 가지고 정확하게 사용자 상호작용을 처리할 수 있게 허락한다. 만약 리스트 상자또는 콤보 상자가 LBS_OWNERDRAWVARIABLE 또는 CBS_OWNERDRAWVARIABLE 스타일을 가지고 생성된다면 , 프레임워크는 제어에서 각각의 아이템을 위한 소유자를 위한 이 함수를 호출한다. 그렇지않으면 이 함수는 한번에 호출된다. 윈도우들은 WM_INITDIALOG 메시지를 보내기 전에 OWNERDRAWFIXED 스타일을 가지고 생성되는 리스트 상자들이나 콤보상자의 소유자를 위한 OnMeasureItem에 대한 호출을 초기화한다. 결과적으로 소유자가 이 호출을 받았을 때, 윈도우들은 제어에서 사용된 폰트의 높이와 폭을 아직 결정하지 못한다.; 함수는 이러한 값들을 요구하는 계산들과 함수 호출은 어플리케이션 또는 라이브러리의 주요 함수에서 발생한다. 만약 측정되어지는 아이템이 CMenu, CListBox 또는 CComboBox 객체라면,그때 적절한 클래스의 MeasureItem 가상 함수는 호출된다. 각각의 아이템의 크기를 설정하고 계산하기 위해 적절한 제어 클래스의 MeasureItem 멤버함수를 오버라이드 하라.
OnMeasureItem은 제어클래스가 실행 시간에 생성될 때 또는 그것이 LBS_OWNERDRAWVARIABLE 나 CBS_OWNERDRAWVARIABLE 스타일을 가지고 생성될 때만 호출된다. 만약 제어가 다이얼로그 에디터에 의해 생성된다면, OnMeasureItem은 호출되지 않을 것이다. 이것은 WM_MEASUREITEM 메시지가 제어의 생성 과정에서 일찍 보내지는 이유이다. 만약 DDX_Control, SubclassDlgItem 또는 SubclassWindow사용함으로써 서브클래스 한다면, 서브클래싱은 일반적으로 생성 과정이후 발생한다. 따라서 ON_WM_MEASUREITEM_REFLECT를 구현하곤 하는 메카니즘 MFC 인 제어 OnChildNotify 함수에서 WM_MEASUREITEM 메시지를 처리할 방법이 없다.
(Note) 이 멤버 함수는 어플리케이션이 윈도우 메시지를 처리할수 있도록 프레임워크에 의해 호출된다. 함수에 전달되는 인수들은 메시지가 전달되었을 때 프레임워크에 의해 전달되는 인수들을 반영한다. 만약 이 함수의 기본 클래스 구현을 호출한다면 구현은 일반적으로 당신이 함수에게 제공하는 인수들이 아닌 메시지를 가지고 전달되는 인수들을 사용한다
CWnd::SendChildNotifyLastMsg
BOOL SendChildNotifyLastMsg( LRESULT* pResult = NULL );
리턴
만약 자식 윈도우가 그것의 부모에 전해질 메시지를 처리한다면 0이 아닌 값을 리턴한다.
그렇지않으면 0이다.
인수
pResult :부모 윈도우에 의해 반환되어지는 자식 윈도우에 생성된 결과.
설명
이 멤버함수는 notification 메시지를 부모 윈도우로 부터 자식 윈도우에 제공하는 프레임워크에 의해 호출된다. 그래서 자식 윈도우는 작업을 처리 할 수 있다. SendChildNotifyLastMsg는 만약 그것이 반영될 메시지라면 소스에 현재의 메시지를 전달한다. 메시지 반영에 대한 더 많은 정보를 위해 Visual C++ Programmer's Guide 의 Handling Reflected Messages를 보라.
CWnd::ReflectChildNotify
BOOL ReflectChildNotify( UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult );
리턴
메시지가 반영되면 TRUE, 그렇지 않으면 FALSE.
인수
message : 반영될 메시지들을 설명한다.
wParam : 정보에 의존하는 추가적 메시지를 설명한다.
lParam : 정보에 의존하는 추가적 메시지를 설명한다.
pResult : 부모 윈도우에 의해 리턴되는 자식 윈도우에 의해 생성되는 결과.
설명
이 메시지 함수는 OnChildNotify로 부터의 프레임워크에 의해 호출된다. 이것은 그것의 소스에 대한 메시지를 반영하는 도움자 함수이다. 반영된 메시지는 직접적으로 CWnd::OnWndMsg 또는 CCmdTarget::OnCmdMsg에 전달된다. 메시지 반영에 대한 더 많은 정보를 위해 Visual C++ Programmer's Guide 의 Handling Reflected Messages를 보라.
[출처] [Tip] CWnd Class - 함수, 메세지|작성자 가가고