8
A
답변
12
찰리가 답변에 WM_NCPAINT
으로 나타났습니다. MFC를 사용하는 경우 코드는 다음과 같습니다.
// in the message map
ON_WM_NCPAINT()
// ...
void CMainFrame::OnNcPaint()
{
// still want the menu to be drawn, so trigger default handler first
Default();
// get menu bar bounds
MENUBARINFO menuInfo = {sizeof(MENUBARINFO)};
if (GetMenuBarInfo(OBJID_MENU, 0, &menuInfo))
{
CRect windowBounds;
GetWindowRect(&windowBounds);
CRect menuBounds(menuInfo.rcBar);
menuBounds.OffsetRect(-windowBounds.TopLeft());
// horrible, horrible icon-drawing code. Don't use this. Seriously.
CWindowDC dc(this);
HICON appIcon = (HICON)::LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDR_MAINFRAME), IMAGE_ICON, 16, 16, LR_DEFAULTCOLOR);
::DrawIconEx(dc, menuBounds.right-18, menuBounds.top+2, appIcon, 0,0, 0, NULL, DI_NORMAL);
::DestroyIcon(appIcon);
}
}
3
비 클라이언트 영역을 그리려면 "클라이언트"DC가 아닌 "창"DC를 가져와 "창"DC를 그려야합니다.
3
메뉴 막대에 무언가를 원한다면, 오른쪽 정렬 메뉴 항목으로 추가하는 것이 더 쉽고/더 쉬울 수도 있습니다. 이 방법은 다른 Windows 테마 등에서도 작동합니다.
4
WM_NCPAINT를 사용해보십시오. 이는 일반적인 WM_PAINT 메시지와 비슷하지만 클라이언트 영역이 아닌 전체 창을 처리합니다. 이 코드는 canonically 큰 '스위치'문을 사용하여 구성되어 당신의 applicaton의 메시지 루프에 사용하기위한 것입니다
case WM_NCPAINT:
{
HDC hdc;
hdc = GetDCEx(hwnd, (HRGN)wParam, DCX_WINDOW|DCX_INTERSECTRGN);
// Paint into this DC
ReleaseDC(hwnd, hdc);
}
: WM_NCPAINT의 MSDN 문서는 다음과 같은 샘플 코드를 제공합니다.
Shog의 MFC 예제에서 언급했듯이이 예제에서는 DefWindowProc를 호출하는 기본 버전을 호출해야합니다.
관련 문제
- 1. AllowTransparency를 사용하지 않고 WPF 창의 비 클라이언트 영역을 제거하는 방법
- 2. 투명 비 클라이언트 영역
- 3. 비 클라이언트 영역을 포함하여 Windows 폼의 전체 높이를 가져 옵니까?
- 4. 비 클라이언트 영역을 확장하지 않고 Aero 테마 캡션 표시 줄에 사용자 지정 단추를 그리려면 어떻게해야합니까?
- 5. XMPP 클라이언트 비 호환성
- 6. 자바 비 차단 클라이언트
- 7. GetDCEx는 양식 표시 전에 null을 반환합니다. 비 클라이언트 영역에서 그리기
- 8. 사용자 지정 WinForms 컨트롤에서 클라이언트 컨트롤 영역을 제한하는 방법
- 9. 탭 표시 줄 컨트롤러의 클라이언트 영역을 결정하십시오.
- 10. 전체 클라이언트 영역을 사용하는 하위 양식?
- 11. 컨트롤 테두리를 효율적으로 그리는 방법
- 12. 비 독점적 가상 이미지 클라이언트?
- 13. 비 GPL XMPP 클라이언트 라이브러리
- 14. 비 Windows OLAP 데스크톱 클라이언트?
- 15. 토네이도 비 차단 SMTP 클라이언트
- 16. SendMessage가 비 클라이언트 항목을 클릭합니다.
- 17. 투명 영역이있는 ImageView에서 목록을 그리는 방법
- 18. - System.Drawing.Region의 영역을 얻는 방법?
- 19. 영역을 정의하는 방법 만들기
- 20. WPF 창 투명도 (비 클라이언트 영역 포함)
- 21. winforms에서 전체 클라이언트 영역을 차지할 컨트롤을 최대화 구현?
- 22. 안드로이드에서보기로 경로를 그리는 방법
- 23. iPhone에서 piechart을 그리는 방법
- 24. -drawRect에서 UILabel을 그리는 방법 :
- 25. Qt에서 커브를 그리는 방법?
- 26. Google지도에 선을 그리는 방법
- 27. 이미지에 텍스트를 그리는 방법
- 28. BitmapData에 문자열을 그리는 방법
- 29. 하이퍼 그래프를 그리는 방법?
- 30. JUNG2 : 서클을 그리는 방법?