TabControl mit Winapi verwenden
-
Und zwar hier:
HWND hTab = Tabs[iIdx];
Überarbeite das nochmal.
-
@Shlo
das liegt daran, dass ich
1. ein MSVC++ 6 Projekt verwende, dass nur mit C++ umgeht (CPP - Datei)
2. ich keinen reinen C code schreiben kann
3. ich C++ Syntax verwende : z.b. iIdx++;außerdem ist das "gehopft" wie "gesprungen" - also relativ egal.
@Matthias:
Womöglich liegt es an fehlenden oder altenDLL Dateien.
(diese werden verwendet : shell32.dll comctl32.dll)
Ich denke aber dass es an dem Service pack liegt- weiß aber auch nicht mehr.
sorry!
-
Ne, das liegt höchstwahrscheinlich an deinem Code.
Beim Aufruf der Funktion ShowTab ist der Wert von iIdx "-1". Wenn du dann mit diesem Index auf den Vector zugreifst, kanns nur schief gehen. :p :p
-
ja einverstanden
füge das schnell ein dann sollte es funktionieren:if (Tabs.size() <= 0 || iIdx < 0 || iIdx > Tabs.size()) return false;
HWND hTab = Tabs[iIdx];
if (hTab == 0) return false;komisch ist nur dass auf einem win98 system keine karteireiter angezeigt werden.
womöglich liegt das an einer alten comctl32 version.
-
na ja, ob das so eine schöne Lösung ist? Du solltest verhindern das die Funktion erst garnicht so aufgerufen wird.
-
das komisch ist nur,
das auf keinem meiner rechner (winxp)
diese funktion mit -1 aufgerufen wird.
iIdx ist immer größer gleich 0.
-
Zum Thema allgemein möchte ich noch ein Tutorial empfehlen
http://www.winapi.net/index.php?inhalt=t4
MfG Unwissender
-
Dezipaitor schrieb:
@Shlo
das liegt daran, dass ich
1. ein MSVC++ 6 Projekt verwende, dass nur mit C++ umgeht (CPP - Datei)
2. ich keinen reinen C code schreiben kann
3. ich C++ Syntax verwende : z.b. iIdx++;zu 1.) MSVC++ kann auch mit .c-Dateien umgehen, mußt sie nur umbenennen!
zu 2.) Dein Code ist reiner C-Code!
zu 3.) iIdx++; gehört seit längerem zum ANSI-C Standard!
-
1. warum soll ichs umbenennen? wenn es cpp ist, ist es c++.
2. es ist, wenn überhaupt Ansi-C, aber kein reines classic c, weil classic c einfach diese ++ Erweiterung nicht kennt.
3. ->2.gibts hier auch noch kommentare zum programm?
@Unwissender: Kenne ich, fand es aber leider nicht so lehrreich.
-
Dezipaitor schrieb:
1. warum soll ichs umbenennen? wenn es cpp ist, ist es c++.
Sorry du kannst C und C++ mixen. Es ist egal, welche Dateierweiterung das File hat.
-
weil classic c einfach diese ++ Erweiterung nicht kennt.
aber sicher doch
-
Dezipaitor schrieb:
1. warum soll ichs umbenennen? wenn es cpp ist, ist es c++.
2. es ist, wenn überhaupt Ansi-C, aber kein reines classic c, weil classic c einfach diese ++ Erweiterung nicht kennt.
3. ->2.Ui, ich habe das Gefühl als wenn uns hier ganz großes Tennis geboten wird...
-
wenn ihr nicht beim thema bleiben könnt, dann ist das arm,
und mir tut es wirklich leid für euch.
-
sorg erstmal dafür das das programm auf allen rechnern läuft. bei mir tuts das nämlich auch nicht.
-
es sind einfach keine tabs zu sehen