Das Problem ist, dass wenn Sie es auf diese Weise tun, Sie eine zwischengespeicherte Version des Symbols erhalten, die erste, die das System geladen. Das wird das große Symbol, typischerweise 32x32. Es spielt keine Rolle, welche Größe Sie angeben.
Was können Sie tun, ist die ID der gewünschten Ressource in user32.dll zu finden und so etwas wie folgt verwenden:
LoadImage(GetModuleHandle('user32'), MAKEINTRESOURCE(103), IMAGE_ICON,
16, 16, LR_DEFAULTCOLOR);
Sie wäre besser GetSystemMetrics(SM_CXSMICON)
zu nennen halten, die Symbolgröße zu erhalten, anstatt zu hard code 16, aber das weißt du wahrscheinlich schon.
Ich bin nicht sicher, woher Sie die Ressourcen-IDs für die Ressourcen in user32 erhalten, oder sogar, wenn sie eine Garantie dafür sind, dass sie in verschiedenen Windows-Versionen konstant bleiben. Meine Vermutung ist, dass sie es tun werden, weil zu viele Programme kaputt gehen würden, aber das ist nur pures Raten.
Ist das Symbol, das Sie laden möchten, als 16x16 verfügbar? Wenn das Symbol nur 32x32 ist, erhalten Sie immer 32x32. –
diese Symbole sind in 16/32/48px –