2010-12-22 5 views
1

나는 동적으로 만들고, 제목 표시 줄 영역 및 작업 표시 줄에 대한 아이콘 임의 또는 무언가를 선택한 것으로 보인다. MFC 샘플에서와 같이무슨 일이 CWnd 아이콘

// Set the icon for this dialog. The framework does this automatically when the application's main window is not a dialog 
m_hIcon = AfxGetApp()->LoadIconW(IDI_ICON); 
SetIcon(m_hIcon, TRUE);   // Set big icon 
SetIcon(m_hIcon, FALSE);  // Set small icon 

을,하지만 32 × 32 아이콘이 항상 사용할 수있는 다른 가깝게 일치가있다하더라도, 선택 및 다운 스케일링 것 같다 :

아이콘을 설정하려면, 내가 전화. 제목 표시 줄의 아이콘은 실제로는 16x16이지만 32x32 버전에서 생성됩니다.

축소 아이콘이 흐리게 보이는 것처럼 32x32 아이콘이 16x16 크기보다 더 자세히 설명되면 혼란이 발생합니다.

CFrameWnd 창이 더 가깝게 일치하는 것으로 보이는 것처럼 어떻게 든 다르게 작동하는 것처럼 보입니다.

누구든지 W7 작업 트레이의 큰 아이콘을 유지할 수 있도록 제목 표시 줄에 작은 아이콘을 강제로 밀어 넣는 해결책을 알고 있습니까?

답변

2

LoadIcon이 아닌 LoadIcon입니다. 이는 실수로 컴파일됩니다. MFC 메서드는 LoadIcon() API 함수를 사용합니다. SDK 설명서에서 :

LoadIcon은 그 크기 SM_CXICON 및 SM_CYICON 시스템 메트릭 값에 맞는 아이콘을로드 할 수 있습니다. LoadImage 함수 을 사용하면 다른 크기의 아이콘 을로드 할 수 있습니다.

대신 적절한 크기를 전달할 수 있도록 LoadImage()를 사용하십시오. 두 개의 큰 번호와 작은 번호를 검색하려면 호출을 만듭니다. 또는 작은 아이콘 이미지를 다른 리소스 ID가있는 다른 아이콘에 저장하십시오.

+0

+1 "give me the codez"유형의 경우 [이 기사] (http://www.borngeek.com/code/system-menu-icon-bug/)를 확인하십시오. 그것이 "16"을 하드 코딩하는 대신에 GetSystemMetrics (SM_CXSMICON)을 호출하여 올바른 * 크기를 결정하는 것이 좋습니다. –

+0

하지만 256x256 PNG 압축 이미지 또는 64x64 아이콘은 C (XY) 아이콘보다 다른 경우에는 사용하지 않습니까? exe는 리소스에서 첫 번째 아이콘이 필요하지만 64x64 아이콘이 아무 곳이나 나타날 수있는 많은 곳에서 사용됩니다 (Alt 탭, 작고 큰 작업 트레이, 알림 영역). CXICONxCYICON 아이콘은 큰 아이콘으로 표시되고 CXSMICONxCSMYICON은 작은 아이콘으로 표시되어 다른 어떤 경우에는 손상되지 않습니까? – Coder

+0

또한 시스템이 C (XY) ICON을 말하자면 25x25로 반환하지만 16x16, 32x32, 64x64 및 256x256 아이콘이있는 경우 LoadImage가 64x64 아이콘을로드하는 것으로 보입니까? – Coder

관련 문제