학습
모듈
Windows 개발 프로젝트에 가장 적합한 애플리케이션 프레임워크 선택 - Training
Windows 개발자는 Windows에서 실행되는 애플리케이션을 만들기 위한 다양한 옵션을 제공합니다. 이 모듈에서는 Windows 개발에 사용할 수 있는 Windows UI 프레임워크를 소개합니다. 또한 애플리케이션에 가장 적합한 프레임워크를 선택하는 방법에 대한 지침을 제공합니다.
이 문서에서는 Visual C++를 사용하여 MFC에서 창에 대한 마우스 포인터를 변경하는 방법을 소개합니다. 이 문서의 정보는 관리되지 않는 Visual C++ 코드에만 적용됩니다.
원래 제품 버전: Visual C++
원래 KB 번호: 131991
Windows 기반 애플리케이션에서 창은 항상 창 클래스를 기반으로 만들어집니다. 창 클래스는 기본 마우스 포인터(커서)를 비롯하여 창의 여러 특성을 식별합니다. 경우에 따라 애플리케이션이 만드는 특정 창과 연결된 포인터를 변경하려고 할 수 있습니다. 이 문서에서는 MFC 애플리케이션이 서로 다른 시간에 다른 포인터를 표시하는 데 사용할 수 있는 세 가지 방법을 설명합니다.
MFC 애플리케이션이 다른 시간에 다른 포인터를 표시하도록 할 수 있는 몇 가지 상황은 다음과 같습니다.
애플리케이션이 창에서 마우스 포인터를 변경할 수 있는 세 가지 방법은 다음과 같습니다.
CWnd::OnSetCursor()
. Windows API SetCursor()
함수를 호출하여 포인터를 변경합니다.CWnd::PreCreateWindow()
하고, 새로 등록된 창 클래스를 사용하여 창을 만듭니다.CCmdTarget::BeginWaitCursor()
하고 기본 포인터로 되돌리기 위해 호출 CmdTarget::EndWaitCursor()
할 수 있습니다. 이 체계는 단일 메시지 기간 동안만 작동합니다. 호출 EndWaitCursor
하기 전에 마우스를 이동하면 Windows에서 포인터 아래 창으로 메시지를 보냅니 WM_SETCURSOR
다. 이 메시지의 기본 처리는 포인터를 클래스에 등록된 기본 형식으로 다시 설정하므로 해당 창에 대해 재정 CWnd::OnSetCursor()
의하고 포인터를 모래 시계로 다시 설정해야 합니다.다음 코드 샘플에서는 세 가지 메서드를 사용하여 파생 클래스 창의 마우스 포인터를 CView
변경하는 방법을 예제별로 보여 줍니다.
m_ChangeCursor
는 클래스의 CMyView
멤버 변수이며 형식 BOOL
입니다. 다른 포인터 형식을 표시해야 하는지 여부를 나타냅니다.
함수를 재정의하여 개체의 CMyView
마우스 포인터를 변경합니다 CWnd::OnSetCursor()
. 클래스 마법사를 사용하여 Windows 메시지에 WM_SETCURSOR
대한 메시지 맵 함수 CMyView::OnSetCursor()
를 설정하고 다음과 같이 함수 본문을 제공합니다.
BOOL CMyView::OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message)
{
if (m_ChangeCursor)
{
::SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));
return TRUE;
}
return CView::OnSetCursor(pWnd, nHitTest, message);
}
또는 AfxRegisterWndClass()
함수를 사용하여 원하는 마우스 포인터가 포함된 고유한 창 클래스를 AfxRegisterClass()
등록합니다. 그런 다음 등록된 창 클래스에 따라 보기 창을 만듭니다. MFC에서 창 클래스를 등록하는 방법에 대한 자세한 내용은 MFC Tech Note 1의 창 클래스 등록을 참조하세요.
BOOL CMyView::PreCreateWindow(CREATESTRUCT &cs)
{
cs.lpszClass = AfxRegisterWndClass(
CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW, // use any window styles
AfxGetApp()->LoadStandardCursor(IDC_WAIT),
(HBRUSH)(COLOR_WINDOW + 1)); // background brush
return CView::PreCreateWindow(cs)
}
BeginWaitCursor()
및 EndWaitCursor()
함수를 호출하여 마우스 포인터를 변경합니다.
참고
CWinApp::DoWaitCursor(1)
각각 CWinApp::DoWaitCursor(-1)
과 비슷하게 BeginWaitCursor()
EndWaitCursor()
작동합니다.
void CMyView::PerformLengthyOperation()
{
BeginWaitCursor(); // or AfxGetApp()->DoWaitCursor(1)
//...
EndWaitCursor(); // or AfxGetApp()->DoWaitCursor(-1)
}
호출이 BeginWaitCursor()
EndWaitCursor()
동일한 처리기에 있지 않은 경우 다음과 같이 재정 OnSetCursor
의해야 합니다.
BOOL CMyView::OnSetCursor(CWnd *pWnd, UINT nHitTest, UINT message)
{
if (m_ChangeCursor)
{
RestoreWaitCursor();
return TRUE;
}
return CView::OnSetCursor(pWnd, nHitTest, message);
}
이 예제에서는 호출 바로 전에 TRUE로 BeginWaitCursor()
설정하고 m_ChangeCursor
호출 후 EndWaitCursor()
FALSE로 다시 설정합니다.
학습
모듈
Windows 개발 프로젝트에 가장 적합한 애플리케이션 프레임워크 선택 - Training
Windows 개발자는 Windows에서 실행되는 애플리케이션을 만들기 위한 다양한 옵션을 제공합니다. 이 모듈에서는 Windows 개발에 사용할 수 있는 Windows UI 프레임워크를 소개합니다. 또한 애플리케이션에 가장 적합한 프레임워크를 선택하는 방법에 대한 지침을 제공합니다.