2010-04-21 4 views
2

Windows 7에서 다른 응용 프로그램에 대해 표시하는 작업 표시 줄 아이콘과 관련된 몇 가지 문제가 발생했습니다. 나는 누군가가 이것에 대해 밝힐 수 있는지 궁금합니다.Windows 7 응용 프로그램 작업 표시 줄 아이콘, 글꼴 크기 및 바로 가기

  • Windows 7은 font-size = 110 %로 설정됩니다.
  • 두 개의 MFC 대화 상자 응용 프로그램 A.exe와 B.exe는 정확히 동일한 .ico 리소스가 포함되어 있습니다.
  • A.exe에는 연결된 바로 가기가 있습니다. B.exe는 그렇지 않습니다.
  • A.exe를 실행하면 작업 표시 줄에 멋진 보간 아이콘이 표시됩니다.
  • B.exe를 실행하면 작업 표시 줄에 다른 아이콘이 표시됩니다 (보간되지 않음).

동일한 아이콘이 A.exe 및 B.exe의 작업 표시 줄에 나타나는 것이 좋을 것입니다. B.exe에 대한 바로 가기를 만들어 동일한 동작을 수행하면 쉽게 얻을 수 있습니다. 그러나, 나는 정말로 무슨 일이 일어나고 있는지 더 많이 이해하려고 노력하고 있습니다.

무슨 일이 벌어지고 있는지 이해하기 위해 B.exe에서 WM_GETICON 메시지를 처리하고 GetSystemMetrics SM_CXICON/SM_CYICON 또는 SM_CXSMALLICON/SM_CYSMALLICON 크기로 지정된 크기에 따라 아이콘을 반환했습니다. 그러나 이것은 작업 표시 줄에 표시된 아이콘에 영향을 미치지 않는 것 같습니다.

다른 크기의 아이콘이 많은 B.exe에 내장 될 .ico 파일을 만들 수 있음을 알고 있습니다. 아마도 이것은 개선 될 수 있지만 지루한 해결책입니다!

아이디어가 있으십니까?

+0

"A.exe에 바로 가기가 연결되어 있는데 B.exe는 그렇지 않습니다."라는 것은 무엇을 의미합니까? 바로 가기가 의미하는 바는 무엇입니까? ... ... – TheCodeArtist

+0

실행 파일 A.exe를 만든 후에는 Windows 탐색기를 사용하여 A.exe가 포함 된 폴더를 탐색하고 A.exe를 클릭하여 선택하고 마우스 오른쪽 단추를 클릭했습니다. '바로 가기 만들기'옵션을 선택했습니다. –

+0

A.exe와 B.exe가 동일합니까? 특히 A.exe에 dpiAware = true를 지정하는 매니페스트가 있습니까? –

답변

0

그냥 (모든 WIN7)에 간단한 시나리오를 다음과 같이이 문제를 충족 :

  1. 아이콘 B와 a.exe를을 만들
  2. 만들 B.lnk C (WINAPI로 다른 아이콘과 a.exe를 위해 관련 CreateLink) B.lnk를 클릭하여 실행하십시오.
  3. : 일부 WIN7 기계에서 작업 표시 줄의 아이콘이 다른 기계 (또한 WIN7)에이 아이콘이 C 인 경우에도 다음의 코드에 의해 변경 될 수 없습니다 B.

있어, C.이다 그러나

const HANDLE bigicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON), IMAGE_ICON, 256, 256, 0); 
if (bigicon) { 
    ::SendMessage(theMainWnd, WM_SETICON, ICON_BIG, (LPARAM)bigicon); 
    ::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_BIG, (LPARAM)bigicon); 
} 
const HANDLE smallicon = ::LoadImage(::GetModuleHandle(0), MAKEINTRESOURCE(IDI_TO_ICON_SMALL), IMAGE_ICON, ::GetSystemMetrics(SM_CXSMICON), ::GetSystemMetrics(SM_CYSMICON), 0); 
if (smallicon) { 
    ::SendMessage(theMainWnd, WM_SETICON, ICON_SMALL, (LPARAM)smallicon); 
    ::SendMessage(GetWindow(theMainWnd, GW_OWNER), WM_SETICON, ICON_SMALL, (LPARAM)smallicon); 
} 
관련 문제