Kategorien
Programmierung

Status von dialogbasierten Menüelementen in C++ ändern

Während sich der Status eines Menüelements bei fensterbasierten Menüs problemlos mittels „Enable“, „SetCheck“, „SetRadio“ oder „SetText“ auf ausgegraut, mit Häkchen versehen usw ändern lässt, zeigen die gleichen Befehle bei dialogbasierten Menüs keine Wirkung.

void CTestDlg::OnUpdateTestProc(CCmdUI* pCmdUI)
{
    pCmdUI->SetCheck(TRUE); // Bewirkt offensichtlich gar nichts.
}

Im KnowledgeBase-Artikel „Q242577“ erklärt Microsoft nicht nur, daß es sich hierbei um „This behavior is by design.“ handelt, sondern auch, wie man das gewünschte Verhalten doch erreichen kann.

Kategorien
Anwendungen Programmierung

Microsoft Visual Studio 6 unter Windows 7 installieren

Seit Jahren bietet Microsoft unter dem Banner Visual Studio Expess verschiedene Entwicklungsumgebungen (Visual Basic, Visual C##, Visual C++) zum kostenlosen Download an. Die Express-Versionen sollen vor allem Einsteigern die ersten Schritte erleichtern, wurden allerdings um einige Features beschnitten – so bleiben z.B. die MFC-Bibliotheken den Benutzern von Visual Studio Standard (und höher) vorbehalten.

Was liegt näher, als zum Kompilieren vorhandener MFC-Projekte ein vorhandenes Visual Studio 6 aus der Mottenkiste zu kramen und unter Windows 7 zu installieren – ein Schritt, vor dem Microsoft beim Aufruf des Setups allerdings eindringlich warnt.

Kategorien
Programmierung

Windows-Theming mit Visual Studio 6

Um einem Visual Studio 6-Projekt den aktuellen Window-Stil (XP / Vista / 7) hinzuzufügen, muß zuerst eine XML-Datei unter dem Namen „manifest.xml“ erstellt werden:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
 xmlns="urn:schemas-microsoft-com:asm.v1"
 manifestVersion="1.0">
 <assemblyIdentity
 processorArchitecture="x86"
 version="5.1.0.0"
 type="win32"
 name="__Name der .EXE-Datei__"/>
 <description>__Beschreibung der .EXE-Datei__</description>
 <dependency>
 <dependentAssembly>
 <assemblyIdentity
 type="win32"
 name="Microsoft.Windows.Common-Controls"
 version="6.0.0.0"
 publicKeyToken="6595b64144ccf1df"
 language="*"
 processorArchitecture="x86"/>
 </dependentAssembly>
 </dependency>
</assembly>

Anschließend den Dialog zum Hinzufügen einer neuen Resource mittels „Einfügen“ / „Resource“ (oder wahlweise Strg+R) öffnen und auf „Importieren“ klicken.

Den Dateityp auf „Alle Dateien (*.*)“ ändern, die bereits erzeugte „manifest.xml“ anwählen und auf „Importieren“ klicken.

Im sich nun öffnenden Dialog „Benutzerdefinierte Ressourcentyp“ als Typ „24“ eingeben und mit „OK“ bestätigen.

Anschließend mittels Rechtsklick die Eigenschaften der soeben erzeugten Ressource öffnen und die ID auf „1“ ändern.

Das Projekt neu erstellen.