2010-09-08 9 views
0

J'essaie de charger l'icône associée à l'application qui a appelé ma fonction.Comment puis-je trouver l'icône de mon application?

La façon dont je suis en train de résoudre le problème pour les applications de l'interface graphique est la suivante:

AfxGetApp()->LoadIcon(128); // 128 is the IDR_MAINFRAME icon 

Cependant, les fonctions afx, à la recherche la ressource, échouer pour certaines applications non graphiques, depuis afxCurrentResourceHandle est NULL.

Quelle serait une meilleure façon de trouver l'icône mainframe?

PS. Actuellement, je peux contourner ce problème en testant afxCurrentResourceHandle != NULL ... J'aimerais pouvoir faire mieux.

Répondre

-1

Il semble que vous supposiez que seules les applications MFC appellent votre fonction. Si oui, que diriez-vous:

HICON hIcon = AfxGetMainWnd()->GetIcon(TRUE); 
+0

J'ai spécifiquement rencontré des problèmes pour les applications console. Je ne sais pas ce qui fait d'eux une application "MFC" ou non. Merci pour la tentative, mais 'TRUE' est une macro indiquant une logique booléenne, et' GetIcon' demande spécifiquement un argument 'UINT'. En d'autres termes: ceci ne devrait pas compiler; il le fait seulement par la grâce de la macro 'TRUE' étant défini comme un entier. – xtofl

+0

Vous avez tort, monsieur. AfxGetMainWnd() renvoie un pointeur CWnd. La signature de CWnd :: GetIcon est: HICON CWnd :: GetIcon (BOOL bBigIcon). Vérifiez les docs. Merci pour le moins 1, mec. – Bukes