IDC_BUTTONxxx wie groß darf eine ID werden?
-
Ich hab hier ein Problem mit ein paar "Create" Buttons. Ich berechne die ID's der Buttons folgendermaßen:
(UINT)( (i_Zeile + 1) + (i_Spalte + 1) * _def_MaxAnzahlListeneintraege )
wobei _def_MaxAnzahlListeneintraege 5000 ist. i_Zeile und i_Spalte können ebenfalls maximal 5000 sein. So kann ich in einer Tabelle immer alle bereiche Abdecken und komme auf eine max ID von "5000 * 5000".
Allerdings reagieren die Buttons ab Spalte 7 nicht mehr (also ab 40000) und ich hab keine Ahnung woran das liegen könnte. Ich denke mal das die Button ID zu groß ist.
Hab ich recht oder könnte es an was anderem liegen?
Hier nochmal die MessageMap deklaration:
ON_CONTROL_RANGE(BN_CLICKED, 0, (_def_MaxAnzahlListeneintraege * _def_MaxAnzahlListeneintraege), ButtonKlick)
-
Schau bitte in deine Resource.h, ob es da Konflikte gibt.
Ansonsten sind die IDs IMHO UINTs, den Zahlenbereich kannst du ja nachgucken.
-
bis 65xxx. Datentyp WORD.
-
........ schrieb:
bis 65xxx. Datentyp WORD.
ne UINT ist das gleiche wie ein signed int, hat also 2147483647. naja und in der resource.h gibts keine so großen ID's. Es reagieren ja auch alle Buttons ab 40000 aufwärts nicht mehr.
hmpf woran kann das nur wieder liegen...
-
Sorry, aber 5000 Buttons
ne, da must Du dein Design überarbeiten (z.B. virtuelle Listen).Zu den ID's schau mal in den Artikel TN020 in der MSDN!
Hier ein Auszug:
Overview of ID-Numbering Convention
The following lists the valid ranges for the IDs of the specific types. Some of the limits are technical implementation limits while others are just conventions to prevent your IDs from colliding with Windows predefined IDs or MFC default implementations.
We strongly recommend you do not defined IDs outside the recommended ranges. Even though the lower limit of many of these ranges is 1 (0 is not used), common convention starts practical use of IDs at 100 or 101.
Prefix Resource type Valid range
IDR_ multiple 1 -> 0x6FFF
IDD_ dialog templates 1 -> 0x6FFF
IDC_,IDI_,IDB_ cursors, icons, bitmaps 1 -> 0x6FFF
IDS_, IDP_ general strings 1 -> 0x7FFF
ID_ commands 0x8000 -> 0xDFFF
IDC_ controls 8 -> 0xDFFF[b]Unter Windows 98 gibt es nur 16BIT Resourcen!
Gruss
EB
-
Danke, deine Antwort ist echt eine große Hilfe. Jetzt bleibt mir wohl nichts anderes übrig als nach Alternativen zu suchen. Denn mit den Buttons könnte ich "nur" eine Matrix von 239 x 239 erzeugen.
Das heist aber nicht das das jemals jemand machen würde (ausser aus spaß und um zu sehen wie weit es geht).