1.\\\ WRITER 6 \\\ 2S:\APP\SW5\STARLAB.LAY 3R:\SW55N\TREIBER\PS.GPM 412 500000 600010 701394 800001 900001 1000001 1100002 1200002 1300000 1400000 1500000 1600000 17Markus Meyer 18Spezifikation 19Rsc-Compiler 20Schnittstelle 21 22 23 24 25 26 270 2816836 2911338 300 310 32JA 333 3475 350 3620 370 380 390 400 410 420 430 44JA 45 46 47 489 4920 504 51Helvetica 14 Pt 52H1 5397 5420 550 56 57Helvetica 12 Pt 58H2 5965 6023 610 62 63Helvetia 10 Pt 64H3 6565 6620 670 68 69Courier 10 Pt 70C1 711 7223 730 74 75Helvetica 14 Pt Fett 76F1 7765 7827 792 80 81Helvetica 12 Pt Fett 82F2 8365 8423 852 86 87Helvetia 10 Pt Fett 88F3 8965 9020 910 92 93Tasten 94T1 95129 9627 970 98 99Grundschrift 100GA 10197 10220 1030 104 105Grund - Absatzlayout V1.5-LSLP8 106GA 1070 1080 1090 1100 1119 11297 11320 1140 1151 1160 1171 118NEIN 119NEIN 120NEIN 121240 1220 1230 12416 1250 1260 1270 1280 1290 1300 1310 132NEIN 133 13413 135576 1360 1370 1381152 1390 1400 1411728 1420 1430 1442304 1450 1460 1472880 1480 1490 1503456 1510 1520 1534032 1540 1550 1564608 1570 1580 1595184 1600 1610 1625760 1630 1640 1656336 1660 1670 1686912 1690 1700 1717488 1720 1730 174Grundabsatzlayout-rechtsb�ndig 175GR 1760 1770 1780 1790 1809 18135 18220 1830 1842 1850 1861 187NEIN 188NEIN 189NEIN 190240 1910 1920 19316 1940 1950 1960 1970 1980 1990 2000 201NEIN 202 20313 204576 2050 2060 2071152 2080 2090 2101728 2110 2120 2132304 2140 2150 2162880 2170 2180 2193456 2200 2210 2224032 2230 2240 2254608 2260 2270 2285184 2290 2300 2315760 2320 2330 2346336 2350 2360 2376912 2380 2390 2407488 2410 2420 243Listing 244LI 2450 2460 2470 2480 2490 2501 25123 2520 2531 2540 2551 256NEIN 257NEIN 258NEIN 259240 2600 2610 26216 2630 2640 2650 2660 2670 2680 2690 270NEIN 271 27213 273576 2740 2750 2761152 2770 2780 2791728 2800 2810 2822304 2830 2840 2852880 2860 2870 2883456 2890 2900 2914032 2920 2930 2944608 2950 2960 2975184 2980 2990 3005760 3010 3020 3036336 3040 3050 3066912 3070 3080 3097488 3100 3110 312�berschrift 313U0 3140 3150 3160 3170 3185 31935 32028 3212 3221 3230 3241 325NEIN 326NEIN 327JA 328240 3290 3300 33116 3320 3330 3340 3350 3360 3370 3380 339NEIN 340 34113 342576 3430 3440 3451152 3460 3470 3481728 3490 3500 3512304 3520 3530 3542880 3550 3560 3573456 3580 3590 3604032 3610 3620 3634608 3640 3650 3665184 3670 3680 3695760 3700 3710 3726336 3730 3740 3756912 3760 3770 3787488 3790 3800 381�berschrift X. 382U1 3830 3840 3850 3860 3875 38835 38928 3902 3911 3920 3931 394NEIN 395NEIN 396JA 397240 3981 3990 40016 4010 4020 4030 4040 4050 4060 4070 408NEIN 409 41013 411576 4120 4130 4141152 4150 4160 4171728 4180 4190 4202304 4210 4220 4232880 4240 4250 4263456 4270 4280 4294032 4300 4310 4324608 4330 4340 4355184 4360 4370 4385760 4390 4400 4416336 4420 4430 4446912 4450 4460 4477488 4480 4490 450�berschrift X.X. 451U2 4520 4530 4540 4550 4566 45735 45824 4592 4601 4610 4621 463NEIN 464NEIN 465JA 466240 4672 4680 46916 4700 4710 4720 4730 4740 4750 4760 477NEIN 478 47913 480576 4810 4820 4831152 4840 4850 4861728 4870 4880 4892304 4900 4910 4922880 4930 4940 4953456 4960 4970 4984032 4990 5000 5014608 5020 5030 5045184 5050 5060 5075760 5080 5090 5106336 5110 5120 5136912 5140 5150 5167488 5170 5180 519�berschrift X.X.X. 520U3 5210 5220 5230 5240 5256 52635 52720 5282 5291 5300 5311 532NEIN 533NEIN 534JA 535240 5363 5370 53816 5390 5400 5410 5420 5430 5440 5450 546NEIN 547 54813 549576 5500 5510 5521152 5530 5540 5551728 5560 5570 5582304 5590 5600 5612880 5620 5630 5643456 5650 5660 5674032 5680 5690 5704608 5710 5720 5735184 5740 5750 5765760 5770 5780 5796336 5800 5810 5826912 5830 5840 5857488 5860 5870 588�berschrift X.X.X.X. 589U4 5900 5910 5920 5930 5947 59535 59620 5970 5981 5990 6001 601NEIN 602NEIN 603NEIN 604240 6054 6060 60716 6080 6090 6100 6110 6120 6130 6140 615NEIN 616 61713 618576 6190 6200 6211152 6220 6230 6241728 6250 6260 6272304 6280 6290 6302880 6310 6320 6333456 6340 6350 6364032 6370 6380 6394608 6400 6410 6425184 6430 6440 6455760 6460 6470 6486336 6490 6500 6516912 6520 6530 6547488 6550 6560 657�berschrift X.X.X.X.X. 658U5 6590 6600 6610 6620 6637 66435 66520 6660 6671 6680 6691 670NEIN 671NEIN 672NEIN 673240 6745 6750 67616 6770 6780 6790 6800 6810 6820 6830 684NEIN 685 68613 687576 6880 6890 6901152 6910 6920 6931728 6940 6950 6962304 6970 6980 6992880 7000 7010 7023456 7030 7040 7054032 7060 7070 7084608 7090 7100 7115184 7120 7130 7145760 7150 7160 7176336 7180 7190 7206912 7210 7220 7237488 7240 7250 726Einr�ckung 4 Sp / 4 Sp 727E1 728576 729576 7300 7310 7329 73335 73420 7350 7361 7370 7381 739NEIN 740NEIN 741NEIN 742240 7430 7440 74516 7460 7470 7480 7490 7500 7510 7520 753NEIN 754 75513 756576 7570 7580 7591152 7600 7610 7621728 7630 7640 7652304 7660 7670 7682880 7690 7700 7713456 7720 7730 7744032 7750 7760 7774608 7780 7790 7805184 7810 7820 7835760 7840 7850 7866336 7870 7880 7896912 7900 7910 7927488 7930 7940 795Einr�ckung 8 Sp / 8 Sp 796E2 7971150 7981150 7990 8000 8019 80235 80320 8040 8051 8060 8071 808NEIN 809NEIN 810NEIN 811240 8120 8130 81416 8150 8160 8170 8180 8190 8200 8210 822NEIN 823 82413 825576 8260 8270 8281152 8290 8300 8311728 8320 8330 8342304 8350 8360 8372880 8380 8390 8403456 8410 8420 8434032 8440 8450 8464608 8470 8480 8495184 8500 8510 8525760 8530 8540 8556336 8560 8570 8586912 8590 8600 8617488 8620 8630 864Einr�ckung 0 Sp / 4 Sp 865E3 8660 867564 8680 8690 8709 87135 87220 8730 8741 8750 8761 877NEIN 878NEIN 879NEIN 880240 8810 8820 88316 8840 8850 8860 8870 8880 8890 8900 891NEIN 892 89313 894576 8950 8960 8971152 8980 8990 9001728 9010 9020 9032304 9040 9050 9062880 9070 9080 9093456 9100 9110 9124032 9130 9140 9154608 9160 9170 9185184 9190 9200 9215760 9220 9230 9246336 9250 9260 9276912 9280 9290 9307488 9310 9320 933Einr�ckung 4 Sp / 8 Sp 934E4 935564 9361150 9370 9380 9399 94035 94120 9420 9431 9440 9451 946NEIN 947NEIN 948NEIN 949240 9500 9510 95216 9530 9540 9550 9560 9570 9580 9590 960NEIN 961 96213 963576 9640 9650 9661152 9670 9680 9691728 9700 9710 9722304 9730 9740 9752880 9760 9770 9783456 9790 9800 9814032 9820 9830 9844608 9850 9860 9875184 9880 9890 9905760 9910 9920 9936336 9940 9950 9966912 9970 9980 9997488 10000 10010 1002Funktionsparameter 1003FP 10040 10052891 10060 10070 10089 100935 101020 10110 10121 10130 10141 1015NEIN 1016NEIN 1017NEIN 1018240 10190 10200 102116 10220 10230 10240 10250 10260 10270 10280 1029NEIN 1030 103113 1032576 10330 10340 10351152 10360 10370 10381728 10390 10400 10412304 10420 10430 10442880 10450 10460 10473456 10480 10490 10504032 10510 10520 10534608 10540 10550 10565184 10570 10580 10595760 10600 10610 10626336 10630 10640 10656912 10660 10670 10687488 10690 10700 1071Inhaltsverzeichnis 1072IV 10730 10740 10750 10760 10779 107835 107920 10800 10811 10820 10831 1084NEIN 1085NEIN 1086NEIN 1087240 10880 10890 109016 10910 10920 10930 10940 10950 10960 10970 1098NEIN 1099 11001 11017653 11020 11030 1104Stichwortverzeichnis 1105SV 11060 11070 11080 11090 11109 111135 111220 11130 11141 1115141 11161 1117JA 1118NEIN 1119NEIN 1120240 11210 11220 112316 11240 11250 11260 11270 11280 11290 11300 1131NEIN 1132 11331 11343744 11351 11360 1137Fettschrift einzeilig 1138F1 11390 11400 11410 11420 11437 114465 114520 11462 11471 11480 11491 1150NEIN 1151NEIN 1152NEIN 1153240 11540 11550 115616 11570 11580 11590 11600 11610 11620 11630 1164NEIN 1165 116613 1167576 11680 11690 11701152 11710 11720 11731728 11740 11750 11762304 11770 11780 11792880 11800 11810 11823456 11830 11840 11854032 11860 11870 11884608 11890 11900 11915184 11920 11930 11945760 11950 11960 11976336 11980 11990 12006912 12010 12020 12037488 12040 12050 1206Punktliste 1207PL 12080 1209564 12100 12110 12129 121335 121420 12150 12161 12170 12181 1219NEIN 1220NEIN 1221NEIN 1222240 12230 12240 122516 12260 12270 12280 12290 12300 12310 12320 1233NEIN 1234 123513 1236566 12370 12380 12391133 12400 12410 12421728 12430 12440 12452304 12460 12470 12482880 12490 12500 12513456 12520 12530 12544032 12550 12560 12574608 12580 12590 12605184 12610 12620 12635760 12640 12650 12666336 12670 12680 12696912 12700 12710 12727488 12730 12740 1275Fu�zeile 1276FZ 12770 12780 12790 12800 12813 128297 128320 12842 12851 12860 12871 1288NEIN 1289NEIN 1290NEIN 1291240 12920 12930 129416 12950 12960 12970 12980 12990 13000 13010 1302NEIN 1303 13041 13057200 13061 13070 1308Kopfzeile 1309KZ 13100 13110 13120 13130 13143 131597 131620 13172 13181 13190 13201 1321NEIN 1322NEIN 1323NEIN 1324240 13250 13260 132716 13280 13290 13300 13310 13320 13330 13340 1335NEIN 1336 13371 13387920 13391 13400 1341Grund-Seitenlayout 1342GS 1343566 1344609 13452436 1346679 13471416 13481416 13490 13500 13511 1352NEIN 13530 13540 1355 1356AkzBf3#_PFAD##_TEXTNAME# 6-#_S#- 1357Bf3������������������������������������������������������������� 1358 1359AfzBf3$Date: 05 Feb 1992 08:23:58 $ $Revision: 1.7 $ 1360 1361Stichwortverzeichnis 1362SV 1363566 1364609 13652437 1366680 13671416 13681416 1369566 13700 13712 1372NEIN 13730 13740 1375 1376AliBf3Stichwortverzeichnis 1377AliBf3������������������������������������������������������������� 1378������� 1379 1380Ali6Bf3- #_S# -B00 1381 1382GS - ohne Fu�zeile 1383KF 1384566 1385609 13862437 1387680 13881416 13891416 13900 13910 13921 1393NEIN 13940 13950 1396 1397AliBf3#_KATEGORIE# / #_THEMA2# 1398AliBf3��������������������������������������������������������� 1399 1400Ali 1401 1402Inhaltsverzeichnis 1403IV 1404566 1405609 14062437 1407680 14081416 14091416 14100 14110 14121 1413NEIN 14140 14150 1416 1417AliBf3Inhaltsverzeichnis 1418AliBf3������������������������������������������������������������� 1419������� 1420 1421Ali 1422 1423 1424 1425 14260 1427 14280 1429 1430SkfAga 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440Au0 #_KATEGORIE# 1441Aga 1442 1443Au0 #_THEMA2# 1444Aga 1445 1446Au0 1447Aga 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460Au0 #_AUTOR# 1461Aga 1462 1463Au0 STAR DIVISION / STAR LAB Hamburg 1464Aga 1465 1466Au0 Stand: $Date: 05 Feb 1992 08:23:58 $ 1467Aga 1468 1469Sgs 1470SkfAgaPA 1471 1472 1473Au0#_KATEGORIE# 1474Aga 1475 1476 1477AfpDokumentenname #_THEMA2# 1478Aga 1479AfpProjektname #_THEMA1# 1480Aga 1481AfpVersionsnummer $Revision: 1.7 $ 1482Aga 1483 1484Afperstellt 02. April 1990 1485Aga 1486Afpge�ndert $Date: 05 Feb 1992 08:23:58 $ 1487Aga 1488 1489AfpDateiname #_PFAD##_TEXTNAME# 1490Aga 1491 1492AfpAutor #_AUTOR# 1493Aga 1494AfpBearbeiter $Author: MM $ 1495Aga 1496AfpQualit�tskontrolle 1497Aga 1498 1499AfpStatus XX in Arbeit 1500Afp !__ fertiggestellt 1501Afp !__ abgenommen 1502Afp !__ freigegeben 1503Aga 1504 1505AfpVertraulich __ Ja XX Nein 1506Aga 1507 1508AfpCopyright (C) Star Division 1990 1509Aga 1510Sivpa 1511 1512Au0Inhaltsverzeichnis 1513Aga 1514Aiv 15151 Einleitung N4 15162 Klassenbaum M5 15173 Klassenbeschreibung E5 1518RscDataBase O6 1519RscHrc T14 1520RscSrc T24 1521RscInst S31 1522RscInstCopy O50 1523Stichwortverzeichnis F53 1524 1525Sgs 1526Au1pa#1 Einleitung 1527Aga 1528In diesem Dokument werden die Klassen beschrieben, mit denen die vom Rsc-Compiler erstellte 1529Datenbasis ver�ndert werden k�nnen. Als Beispiel sei hier der Design-Editor genannt. 1530Um das Verst�ndnis zu erleichtern, ist es hilfreich die Benutzerbeschreibung des Rsc-Compilers zu 1531lesen. 1532 1533Hinweise zur Implementation 1534 1535Die in diesem Dokument beschriebenen Klassen weisen einen hohen Grad an gegenseitigen 1536Abh�ngigkeiten auf. Daher mu� bei der Anwendung einiger Methoden auf diese Zusammenh�nge 1537besonders geachtet werden. Ein genaues lesen der Dokumentation ist unumg�nglich. Zum Beispiel ist 1538das L�schen einer Instanz nicht immer m�glich, da noch Referenzen auf sie bestehen. Diese 1539Schnittstelle ist darauf ausgelegt, da� auf die Daten im Dialogbetrieb zugegriffen wird. Das hei�t, sie 1540ist auf �bersichtlichkeit und Fehlererkennung nicht aber auf Speicher- und Geschwindigkeitseffizienz 1541ausgelegt. 1542Bevor eine dieser Klassen benutzt wird, mu� die InitRscCompiler() Funktion aufgerufen werden. 1543Agapa 1544Au1#2 Klassenbaum 1545Aga 1546RscDataBase 1547RscHrc -> RscSrc 1548RscInst -> RscInstCopy 1549 1550 1551Au1#3 Klassenbeschreibung 1552Aga 1553AgaRscDataBase: 1554 1555Diese Klasse stellt Methoden zur Verf�gung mit denen ein Resourceprojekt verwaltet werden kann, 1556wie zum Beispiel das Anlegen einer neuen Datei oder zu einem Klassennamen den Klassentyp 1557erzeugen. 1558 1559AgaRscHrc: 1560 1561Diese Klasse stellt Methoden zur Verf�gung mit denen dateiabh�ngige Informationen und Daten aus 1562der Datenbasis gewonnen werden k�nnen. Es handelt sich hierbei haupts�chlich um Makros. Diese 1563Klasse ist als Sicht auf eine hrc-Datei zu verstehen. Die Daten stehen in der Datenbasis. 1564 1565AgaRscSrc: 1566 1567Diese Klasse stellt Methoden zur Verf�gung mit denen dateiabh�ngige Informationen und Daten aus 1568der Datenbasis gewonnen werden k�nnen. Diese Klasse ist als Sicht auf eine src-Datei zu verstehen. 1569Die Daten stehen in der Datenbasis. 1570 1571RscInst: 1572 1573Eine RscInst repr�sentiert eine Referenz auf eine Resourceinstanz, wie zum Beispiel Farbe oder Breite. 1574Eine Resourceinstanz kann weitere Resourceinstanzen enthalten. 1575 1576RscInstCopy: 1577 1578Diese Instanz repr�sentiert eine Kopie einer Resourceinstanz. 1579 1580Au0PARscDataBase 1581Aga 1582Aliclass RscDataBase { 1583protected: 1584 RscCmdLine * pCmdLine; 1585 RscTypCont * pTC; 1586public: 1587 RscDataBase( RscError * ); 1588 ~RscDataBase(); 1589 RscTop* GetClassType( HASHID nClassName ); 1590 BOOL MakeConsistent( RscInconsList * pList ); 1591 RscFileTab * GetFileTab(); 1592 RscFile * GetFileStruct( ULONG lFileKey ); 1593 RscStrList * GetPathList(); 1594 ULONG AddSrcFile( const String & rFileName ); 1595 ULONG AddHrcFile( const String & rFileName ); 1596 void ScanForIncFiles( ULONG lFileKey ); 1597 void RemoveFile( ULONG lKey ); 1598 RscDefine * FindDef( const String & rName ); 1599 ULONG GetFileKey( const String & rFileName ); 1600}; 1601Aga 1602Af1Beschreibung 1603Aga 1604Diese Klasse enth�lt die Klassen RscCmdLine und RscTypCont. 1605Die Klasse RscCmdLine enth�lt die Steuerinformation f�r den Compiler. Die Klasse RscTypCont 1606enth�lt die vom Compiler erstellte DatenBasis. 1607Diese Klasse l�st folgende Aufgaben: 1608 1. Das �berpr�fen der Konsistenz der Datenbasis. 1609 2. Das Bearbeiten der Projektstruktur. 1610 1611Af1Anmerkungen 1612Aga 1613F�r einige Methoden der Klasse RscDataBase gilt, da� sie eventuell auf alle existierenden 1614Resourceinstanzen zugreifen m�ssen. Wenn zum Beispiel die Konsistenz der Datenbasis �berpr�ft 1615wird, kann dies nur �ber die Objekte in der Datenbasis geschehen. 1616 1617Af1Querverweise 1618Aga 1619Klassen: RscCmdLine, RscTypCont, RscFile, RscDefList, RscError, RscId, RscHrc, RscSrc. 1620Methoden: HashId, GetHashString. 1621 1622Af1Beispiel 1623Aga 1624Im Beispiel wird der einer Resource erfragt. 1625Ali..... 1626Ali// statische Datenstrukturen initialisieren 1627InitRscCompiler(); 1628..... 1629RscError aErrorHandle; // Fehlerbehandlung 1630RscDataBase aCmpInst( &aErrorHandle ); // Datenbasis 1631RscTop* pClassTyp; // ein Klassentyp 1632 1633// Typ einer Resource aus dem Namen der Klasse erzeugen 1634pClassTyp = aCmpInst.GetClassType( HashId( "Color" ) ); 1635Ali..... 1636 1637Au0PARscDataBase::RscDataBase() 1638Aga 1639AliRscDataBase::RscDataBase( RscError * pErrorHandler ); 1640Aga 1641Af1Beschreibung 1642Aga 1643Diese Methode erzeugt eine Instanz der Klasse RscDataBase. Der Scope von dieser Instanz mu� 1644innerhalb des Scopes von pErrorHandler liegen. 1645 1646Af1Parameter 1647Aga 1648AfppErrorHandler Ein Zeiger auf einen Fehlerhandler. Durch ableiten von der Klasse 1649"RscError kann ein eigener Fehlermechanismus entwickelt werden. 1650Aga 1651Af1Querverweise 1652Aga 1653Klasse: RscError 1654 1655Af1Beispiel 1656Aga 1657Ali..... 1658RscError aErrorHandler; 1659RscDataBase aCmpInst( &aErrorHandle ); 1660..... 1661Aga 1662Aga��������������������������������������������������������� 1663Aga 1664Au0RscDataBase::RscDataBase() 1665Aga 1666AliRscDataBase::~RscDataBase(); 1667Aga 1668Af1Beschreibung 1669Aga 1670L�scht die Membervariablen pCmdLine und pTC. 1671 1672Af1Anmerkungen 1673Aga 1674Es d�rfen keine Resourceinstanzen, die mit Hilfe dieser Instanz erzeugt worden sind, mehr existieren. 1675 1676Af1Querverweise 1677Aga 1678Klassen: RscInst, RscCmdLine, RscTypCont, RscIncList, RscHrc, RscSrc. 1679 1680Aga��������������������������������������������������������� 1681Aga 1682Au0RscDataBase::GetClassType() 1683Aga 1684AliRscTop * RscDataBase::GetClassType( HASHID aClassName ); 1685Aga 1686Af1Beschreibung 1687Aga 1688Aus dem Namen einer Klasse wird der Typ einer Klasse generiert. Der Typ bezieht sich nur auf die 1689RscDataBase-Instanz von der er erzeugt wurde. 1690 1691Af1Parameter 1692Aga 1693AfpaClassName ist der Name der Klasse. 1694Aga 1695Af1Return-Werte 1696Aga 1697Der Typ der Klasse wird zur�ckgeliefert. Wird unter dem Namen keine Klasse gefunden, dann wird 1698NULL zur�ckgeliefert. 1699 1700Af1Anmerkungen 1701Aga 1702Wenn aus gleichen Namen zweier unterschiedlicher Instanzen Typen erzeugt werden, dann sind diese 1703unterschiedlich. 1704 1705Af1Beispiel 1706Aga 1707Ali..... 1708HASHID aClassName = HashId( "Color" ); 1709RscTop * aType1 = aCmpInst1.GetClassType( aClassName ); 1710RscTop * aType2 = aCmpInst2.GetClassType( aClassName ); 1711RscTop * aType3 = aCmpInst2.GetClassType( aClassName ); 1712..... 1713Aga 1714aType1 ist ungleich zu aType2. 1715aType2 ist gleich zu aType3. 1716 1717Aga��������������������������������������������������������� 1718Aga 1719Au0RscDataBase::MakeConsistent() 1720Aga 1721AliBOOL RscDataBase::MakeConsistent( RscInconsList * pList ); 1722Aga 1723Af1Beschreibung 1724Aga 1725Es ist m�glich, da� durch Ver�nderungen von Makros die Datenbasis inkonsistent wird. Mit dieser 1726Methode wird versucht, die Datenbasis wieder in einen konsistenten Zustand zu versetzen. Dies kann 1727aber auch scheitern, wenn zum Beispiel der Wertebereich einer Variablen verlassen wird oder die 1728 Identifier von Resourceinstanzen den gleichen Wert haben. pList enth�lt die Makros bei denen es 1729Inkonsistenzen gibt. 1730 1731Af1Parameter 1732Aga 1733AfppList ist ein Zeiger auf eine Liste von Makro-Paaren. pList darf auch 1734"NULL sein. 1735Aga 1736Af1Return-Werte 1737Aga 1738AfpTRUE die Datenbasis ist wieder konsistent. 1739FALSE es konnte kein konsistenter Zustand hergestellt werden. 1740Aga 1741Af1Anmerkungen 1742Aga 1743Wenn die Datenbasis inkonsistent ist, d�rfen auf ihr keine Operationen ausgef�hrt werden. 1744 1745Af1Querverweise 1746Aga 1747Klassen: RscInconsList. 1748Methoden: RscInst::IsConsistent. 1749 1750Af1Beispiel 1751Aga 1752Ali... 1753RscDataBase *pDataBase = new ...; // DatenBasis 1754RscSrc aSrc( ... ); //entspricht einer .src Datei 1755RscDefine * pDef1, *pDef2; //Makros 1756 1757aSrc.NewDef( "DEF1", 1000, LIST_APPEND ); //Makro erzeugen 1758aSrc.NewDef( "DEF2", 1001, LIST_APPEND ); //Makro erzeugen 1759pDef1 = aSrc.FindDef( "DEF1" ); //Makro holen 1760pDef2 = aSrc.FindDef( "DEF2" ); //Makro holen 1761 1762/* aStrInst enth�lt eine g�ltige String-Instanz */ 1763//String-Instanz unter Id mit Wert 1000 einsetzen 1764AliaSrc.SetRscInst( RscId( pDef1 ), aStrInst ); 1765//String-Instanz unter Id mit Wert 1001 einsetzen 1766AliaSrc.SetRscInst( RscId( pDef2 ), aStrInst ); 1767//aendern des Makro-Wertes 1768aSrc.ChangeDef( "DEF2", 1000 ); 1769//Datenbasis ueberpruefen 1770if( pDataBase->MakeConsistent( NULL ) ) 1771 printf( "Konsistent" ); 1772else 1773 printf( "Inkonsistent" ); 1774Aga 1775Die Ausgabe ist 'Inkonsistent', weil in der Datenbasis zwei String-Instanzen mit dem Identifier 1000 1776existieren. 1777Aga��������������������������������������������������������� 1778Aga 1779Au0RscDataBase::GetFileTab() 1780Aga 1781AliRscFileTab * RscDataBase::GetFileTab(); 1782Aga 1783Af1Beschreibung 1784Aga 1785Die interne Struktur der Makro- und Dateiverwaltung wird zur�ckgeliefert. 1786 1787Af1Return-Werte 1788Aga 1789Es wird ein Zeiger auf die Struktur der Projektverwaltung zur�ckgeliefert. 1790Aga 1791Af1Querverweise 1792Aga 1793Klassen: RscFileTab. 1794Aga 1795Aga��������������������������������������������������������� 1796Aga 1797Au0RscDataBase::GetFileStruct() 1798Aga 1799AliRscFile * RscDataBase::GetFileStruct( ULONG lFileKey ); 1800Aga 1801Af1Beschreibung 1802Aga 1803Auf die interne Darstellung der Daten einer Datei wird �ber einen Schl�ssel zugegriffen. Mit Hilfe 1804dieses Schl�ssels kann man einen Zeiger auf die interne Datenstruktur bekommen. 1805 1806Af1Parameter 1807Aga 1808AfplFileKey Schl�ssel der Datei. 1809Aga 1810Af1Return-Werte 1811Aga 1812Zeiger auf interne Struktur. 1813Aga 1814Af1Querverweise 1815Aga 1816Klassen: RscFile, RscFileTab. 1817Methoden: GetKey(). 1818Aga 1819Aga��������������������������������������������������������� 1820Aga 1821Au0RscDataBase::GetPathList() 1822Aga 1823AliRscStrList * RscDataBase::GetPathList(); 1824Aga 1825Af1Beschreibung 1826Aga 1827Diese Methode gibt einen Zeiger auf eine Liste mit Pfadnamen zur�ck. Diese Liste kann ver�ndert 1828werden. Die �nderungen wirken sich sofort auf den Suchpfad aus. 1829 1830Af1Return-Werte 1831Aga 1832Es wird die PfadListe zur�ckgeliefert. 1833 1834Af1Beispiel 1835Aga//veraendern der Pfadliste 1836 1837AliRscDataBase aBase( ... ); //Datenbasis 1838 1839// Pfadliste holen 1840RscStrList * pPathLst = aBase.GetPathList(); 1841//Pfad hinzufuegen 1842pPathList->Insert( String( "c:\demo\resource" ) ); 1843Aga 1844Aga��������������������������������������������������������� 1845Au0 1846Au0RscDataBase::AddSrcFile() 1847Aga 1848AliULONG RscDataBase::AddSrcFile( const String & rName ); 1849Aga 1850Af1Beschreibung 1851Aga 1852Diese Methode stellt eine Src-Datei in die Projektverwaltung. 1853 1854Af1Parameter 1855Aga 1856AfprName Dies ist der Name der Datei. 1857Aga 1858Af1Return-Werte 1859Aga 1860Es wird der Schl�ssel der Datei zur�ckgeliefert. 1861Aga 1862Af1Anmerkungen 1863Aga 1864Wenn es eine Datei unter diesem Namen gibt, dann wird der Schl�ssel dieser Datei zur�ckgegeben. 1865 1866Af1Querverweise 1867Aga 1868Klassen: RscFileTab. 1869 1870Aga�������������������������������������������������������� 1871Aga 1872Au0RscDataBase::AddHrcFile() 1873Aga 1874AliULONG RscDataBase::AddHrcFile( const String & rName ); 1875Aga 1876Af1Beschreibung 1877Aga 1878Diese Methode stellt eine Hrc-Datei in die Projektverwaltung. 1879 1880Af1Parameter 1881Aga 1882AfprName Dies ist der Name der Datei. 1883Aga 1884Af1Return-Werte 1885Aga 1886Es wird der Schl�ssel der Datei zur�ckgeliefert. 1887Aga 1888Af1Anmerkungen 1889Aga 1890Wenn es eine Datei unter diesem Namen gibt, dann wird der Schl�ssel dieser Datei zur�ckgegeben. 1891 1892Af1Querverweise 1893Aga 1894Klassen: RscFileTab. 1895 1896Aga��������������������������������������������������������� 1897 1898Au0RscDataBase::ScanForIncFiles() 1899Aga 1900Alivoid RscDataBase::ScanForIncFiles( ULONG lFileKey ); 1901Aga 1902Af1Beschreibung 1903Aga 1904Diese Methode durchsucht die Datei nach Include-Anweisungen. Die Dateien werden in die 1905Abh�ngigkeitsliste von der Datei mit dem Schl�ssel lFileKey eingetragen. Die Dateien werden in die 1906Projektverwaltung gestellt. 1907 1908Af1Anmerkungen 1909Aga 1910Kann die Datei nicht ge�ffnet werden dann wird die Abh�ngigkeitsliste nicht ge�ndert. 1911Preprozessoranweisungen wie #ifdef... werden nicht beachtet. C- und C++-Kommentare werden 1912beachtet. 1913 1914Af1Querverweise 1915Aga 1916Klassen: RscCompiler. 1917Methoden: RscCompiler::IncludeParser(). 1918Aga 1919Aga��������������������������������������������������������� 1920 1921Au0RscDataBase::RemoveFile() 1922Aga 1923Alivoid RscDataBase::RemoveFile( ULONG lFileKey ); 1924Aga 1925Af1Beschreibung 1926Aga 1927Die Datei wird aus der Projektverwaltung gel�scht. Alle dieser Datei zugeordneten Makros und 1928Resource-Instanzen werden gel�scht. Alle Verweise auf diese Datei werden gel�scht. 1929 1930Af1Parameter 1931Aga 1932AfplFileKey Schl�ssel der Datei. 1933Aga 1934Af1Anmerkungen 1935Aga 1936Diese Datei wird auch aus den Abh�ngigkeitslisten der anderen Dateien gel�scht. Wenn 1937Abh�ngigkeiten auf Makros bestehen, dann werden sie durch Zahlen ersetzt. 1938 1939Af1Querverweise 1940Aga 1941Klassen: RscFile, RscFileTab. 1942Methoden: RscTypCont::WriteSrc(). 1943 1944Aga��������������������������������������������������������� 1945Aga 1946Au0RscDataBase::FindDef() 1947Aga 1948AliRscDefine * RscDataBase::FindDef( const String & rName ); 1949Aga 1950Af1Beschreibung 1951Aga 1952Mit dieser Methode kann ein Makro �ber seinen Namen gefunden werden. 1953 1954Af1Parameter 1955Aga 1956AfprName ist der Name des Makros. 1957Aga 1958Af1Return-Werte 1959Aga 1960Es wird ein Zeiger auf das Makro mit Namen rName zur�ckgegeben. 1961AfpNULL Es wurde kein Makro gefunden. 1962Aga 1963Af1Querverweise 1964Aga 1965Klassen: RscFileTab. 1966 1967Aga��������������������������������������������������������� 1968Aga 1969Au0RscDataBase::GetFileKey() 1970Aga 1971AliULONG RscDataBase::GetFileKey( const String & rFileName ); 1972Aga 1973Af1Beschreibung 1974Aga 1975Diese Methode sucht in der Projektverwaltung nach einem Datei mit Namen "rFileName". 1976Wenn eine Datei unter diesem Namen in der Projektverwaltung steht wird der Schl�ssel dieser Datei 1977zur�ckgegeben. 1978 1979Af1Parameter 1980Aga 1981AfprFileKey Der Dateiname nach dem gesucht wird. 1982Aga 1983Af1Return-Werte 1984Aga 1985Es wird die Schl�ssel der Datei zur�ckgeliefert. 1986AfpNOFILE_INDEX dieser Wert zeigt an, da� der Dateiname nicht gefunden wurde. 1987Aga 1988Af1Anmerkungen 1989Aga 1990Gro�-und Kleinschreibung wird bei der Suche beachtet. 1991 1992Af1Querverweise 1993Aga 1994Klassen: RscFileTab. 1995 1996Aga��������������������������������������������������������� 1997Aga 1998Au0PARscHrc 1999Aga 2000Aliclass RscHrc { 2001protected: 2002 ULONG lFileKey;//Schluessel der Datei 2003public: 2004 RscHrc( RscDataBase *, ULONG lKey ); 2005 ~RscHrc(); 2006 ERRTYPE ReadFile(); 2007 ULONG GetFileKey(); 2008 void SetDirty(); 2009 BOOL IsDirty(); 2010 void SetPathName( const String & ); 2011 String GetPathName(); 2012 void SetFileName( const String & ); 2013 String GetPathName(); 2014 void InsertDepend( ULONG lKey, ULONG lPos ); 2015 RscDefineList * GetDefineList(); 2016 RscDefine * FindDef( const String & ); 2017 ERRTYPE NewDef( const String & rName, 2018 long lValue, ULONG lPos ); 2019 ERRTYPE NewDef( const String & rName, 2020 const String & rMacro, 2021 ULONG lPos ); 2022 ERRTYPE ChangeDef( const String & rName, 2023 long lValue ); 2024 ERRTYPE ChangeDef( const String & rName, 2025 const String & rMacro ); 2026 BOOL IsDefUsed( const String & rName ); 2027 void DeleteDef( const String & rName ); 2028 ERRTYPE ChangeDefName( const String & rName, 2029 const String & rNewName ); 2030 2031 RscFile * GetFileStruct(); 2032 RscDependList * GetDependList(); 2033 ERRTYPE WriteFile(); 2034}; 2035Aga 2036Af1Beschreibung 2037AgaDiese Klasse enth�lt nur eine Referenz auf eine andere Klasse. Alle Operation werden also auf der 2038referenzierten Klasse durchgef�hrt. Diese Klasse ist nur eine Schnittstelle. Diese Klasse stellt eine 2039Sicht auf eine hrc-Datei dar. 2040 2041Diese Klasse l�st folgende Aufgaben: 2042 1. Das Verwalten der Abh�ngigkeitsliste einer Datei. 2043 2. Das Verwalten der Makros in dieser Datei. 2044 3. Das Schreiben von ".hrc"-Dateien. 2045 2046Af1Querverweise 2047Aga 2048Klassen: RscTypCont, RscDependList, RscDefList, RscError, RscId. 2049 2050Au0PARscHrc::RscHrc() 2051Aga 2052AliRscHrc::RscHrc( RscDataBase * pDataBase, ULONG lKey ); 2053Aga 2054Af1Beschreibung 2055Aga 2056Diese Methode erzeugt eine Instanz der Klasse RscHrc. Der Scope von dieser Instanz mu� innerhalb 2057des Scopes von pDataBase liegen. 2058 2059Af1Parameter 2060Aga 2061AfppDataBase Ein Zeiger auf eine Datenbasis. 2062lKey Ist der Schl�ssel einer Datei. 2063Aga 2064Af1Querverweise 2065Aga 2066Klassen RscError, RscSrc, RscFileTab. 2067 2068Af1Beispiel 2069Aga 2070Ali..... 2071/* aSrc ist ein bestehende Instanz der Klasse RscSrc */ 2072//Abhaengigkeitsliste holen 2073RscDependList * pDepLst = aSrc.GetDependList(); 2074//Erstes Element holen 2075RscDepend * pDep = pDepList->First(); 2076//Hrc-Instanz erzeugen, aHrc ist die Repraesentation der 2077//ersten Datei in der Abhaengigkeitsliste 2078RscHrc aHrc( pDataBase, pDep->GetFilekey() ); 2079..... 2080Aga 2081Aga��������������������������������������������������������� 2082Au0RscHrc::~RscHrc() 2083Aga 2084AliRscHrc::~RscHrc(); 2085Aga 2086Af1Beschreibung 2087Aga 2088Der Destruktor hat keine Funktion. 2089 2090Aga��������������������������������������������������������� 2091Aga 2092Au0RscHrc::ReadFile() 2093Aga 2094AliERRTYPE RscHrc::ReadFile(); 2095Aga 2096Af1Beschreibung 2097Aga 2098Es wird eine Datei eingelesen. Es wird in der Abh�ngigkeitsliste �berpr�ft ob alle Dateien geladen 2099sind, sind sie nicht geladen, werden sie zuerst eingelesen. Tritt ein fehler auf, wurde die Fehlerhafte 2100Datei nicht eingelesen. Der Fehler innerhalb der Datei mu� mit einem Editor verbessert werden (siehe 2101Rsc-Compiler Benutzerhandbuch). 2102 2103Af1Return-Werte 2104Aga 2105AfpERRTYPE.IsOk() Es ist kein Fehler aufgetreten. 2106AfpERR_OPENFILE Die Datei konnte nicht g�ffnet werden. 2107anderer Wert Siehe Klasse RscError. 2108Aga 2109Af1Anmerkungen 2110Aga 2111Es sollte sichergestellt sein, da� die Datei mit dem Rsc-Compiler ohne Preprozessor �bersetzt werden 2112kann. Es k�nnen aber trotzdem Fehler auftreten wie zum Beispiel Identifierkonflikte mit vorher 2113eingelesener Datei, oder die Include-Dateien wurden vorher nicht eingelesen (#define kann nicht 2114aufgel�st werden). 2115 2116Af1Querverweise 2117Aga 2118Klassen: RscError, RscCompiler. 2119 2120Aga��������������������������������������������������������� 2121 2122Au0RscHrc::GetFileKey() 2123Aga 2124AliULONG RscHrc::GetFileKey(); 2125Aga 2126Af1Return-Werte 2127Aga 2128Liefert den Schl�ssel der Datei zur�ck. 2129Aga 2130Aga��������������������������������������������������������� 2131Aga 2132Au0RscHrc::SetDirty() 2133Aga 2134Alivoid RscHrc::SetDirty( BOOL bSet ); 2135Aga 2136Af1Beschreibung 2137Aga 2138Es wird das Attribut Dirty gesetzt. Das Attribut Dirty bewirkt nichts. 2139 2140Af1Parameter 2141Aga 2142AfpbSet Ist der Wert auf den das Attribut gesetzt werden soll. 2143Aga 2144Af1Querverweise 2145Aga 2146Methoden: IsDirty(). 2147 2148Aga��������������������������������������������������������� 2149Aga 2150Au0RscHrc::IsDirty() 2151Aga 2152AliBOOL RscHrc::IsDirty(); 2153Aga 2154Af1Beschreibung 2155Aga 2156Gibt an ob das Attribut Dirty gesetzt ist. 2157 2158Af1Return-Werte 2159Aga 2160AfpTRUE Dirty ist gesetzt. 2161FALSE Dirty ist nicht gesetzt. 2162Aga 2163Aga��������������������������������������������������������� 2164Au0RscHrc::SetPathName() 2165Aga 2166Alivoid RscHrc::SetPathName( const String & rPath ); 2167Aga 2168Af1Beschreibung 2169Aga 2170Der Pfadname der Datei, die durch diese Instanz repr�sentiert wird, wird ge�ndert. Der Pfadname ist 2171der Name, unter dem die Datei gespeichert wird. 2172 2173Af1Parameter 2174Aga 2175AfprPath Der Pfadname der Datei. 2176Aga 2177Af1Querverweise 2178Aga 2179Klassen: RscFile. 2180Methoden: GetPathname(), SetFileName(), GetFileName() 2181 2182Aga��������������������������������������������������������� 2183Aga 2184Au0RscHrc::GetPathName() 2185Aga 2186AliString RscHrc::GetPathName(); 2187Aga 2188Af1Return-Werte 2189Aga 2190Der Pfadname der Datei wird zur�ckgeliefert. 2191Aga 2192Af1Querverweise 2193Aga 2194Klassen: RscFile. 2195Methoden: SetPathName(), SetFileName(), GetFileName(). 2196 2197Aga��������������������������������������������������������� 2198Aga 2199Au0RscHrc::SetFileName() 2200Aga 2201Alivoid RscHrc::SetFileName( const String & rPath ); 2202Aga 2203Af1Beschreibung 2204Aga 2205Der Name der Datei, die durch diese Instanz repr�sentiert wird, wird ge�ndert. Unter diesem Namen 2206wird die Datei zum Beispiel in den "#include <Name>" Anweisungen verwendet. 2207 2208Af1Parameter 2209Aga 2210AfprPath Der Name der Datei. 2211Aga 2212Af1Querverweise 2213Aga 2214Klassen: RscFile. 2215Methoden: SetPathName(), GetPathname(), GetFileName() 2216 2217Aga��������������������������������������������������������� 2218Aga 2219Au0RscHrc::GetFileName() 2220Aga 2221AliString RscHrc::GetFileName(); 2222Aga 2223Af1Return-Werte 2224Aga 2225Der Name der Datei wird zur�ckgeliefert. 2226Aga 2227Af1Querverweise 2228Aga 2229Klassen: RscFile. 2230Methoden: SetPathName(), GetPathName(), SetFileName(). 2231 2232Aga��������������������������������������������������������� 2233Aga 2234Aga 2235Au0RscHrc::InsertDepend() 2236Aga 2237Alivoid RscHrc::InsertDepend( ULONG lFileKey, ULONG lPos ); 2238Aga 2239Af1Beschreibung 2240Aga 2241Eine neue Include-Datei wird in die Abh�ngigkeitsliste eingef�gt. 2242 2243Af1Parameter 2244Aga 2245AfplFileKey Dies ist der Schl�ssel der Include-Datei. 2246lPos An dieser Position wird der Schl�ssel in die Abh�ngigkeitsliste 2247"eingef�gt. 2248Aga 2249Af1Return-Werte 2250Aga 2251Es wird der Schl�ssel der Datei zur�ckgeliefert. 2252 2253Af1Anmerkungen 2254Aga 2255Wenn eine Include-Datei unter diesem Schl�ssel schon in der Abh�ngigkeitsliste steht, wird er nicht 2256noch einmal eingetragen. 2257 2258Af1Querverweise 2259Aga 2260Klassen: RscFile. 2261Methoden: FillIncList(). 2262 2263Aga��������������������������������������������������������� 2264Aga 2265Au0RscHrc::GetDefineList() 2266Aga 2267AliRscDefineList * RscHrc::GetDefineList(); 2268Aga 2269Af1Beschreibung 2270Aga 2271In jeder Hrc-Datei gibt es Makros. Diese Makros werden in eine RscDefineList gestellt. 2272 2273Af1Return-Werte 2274Aga 2275Es wird ein Zeiger auf die Makro-Liste zur�ckgeliefert. 2276 2277Af1Querverweise 2278Aga 2279Klassen: RscDefineList. 2280 2281Aga��������������������������������������������������������� 2282Aga 2283Au0RscHrc::FindDef() 2284Aga 2285AliRscDefine * RscHrc::FindDef( const String & rName ); 2286Aga 2287Beschreibung 2288Aga 2289Mit dieser Methode kann ein Makro �ber seinen Namen gefunden werden. Es wird nur in dieser Datei 2290oder in den Dateien gesucht, von denen diese Datei abh�ngt. 2291 2292Af1Parameter 2293Aga 2294AfprName ist der Name des Makros. 2295Aga 2296Af1Return-Werte 2297Aga 2298Es wird ein Zeiger auf das Makro mit Namen rName zur�ckgegeben. 2299AfpNULL Es wurde kein Makro gefunden. 2300Aga 2301Af1Querverweise 2302Aga 2303Klassen: RscFileTab. 2304 2305Af1Beispiel 2306Aga 2307Ali//Dateiname = t.src 2308... 2309#include <t1.hrc> 2310#include <t2.hrc> 2311 2312#define TEST 1 2313Aga 2314Wenn aHrc2 die Datei t2.hrc repr�sentiert, dann werden die Makros in t2.hrc und t1.hrc gesucht. Sie 2315werden nicht in t.src gesucht. 2316 2317Aga��������������������������������������������������������� 2318Aga 2319Au0RscHrc::NewDef() 2320Aga 2321AliERRTYPE RscHrc::NewDef( const String & rName, 2322 long lValue, ULONG lPos ); 2323ERRTYPE RscHrc::NewDef( const String & rName, 2324 const String & rMacro, 2325 ULONG lPos ); 2326Aga 2327Af1Beschreibung 2328Aga 2329Mit dieser Methode k�nnen neue Makros angelegt werden. Die Makros werden der Datei zugeordnet, 2330die durch diese Instanz repr�sentiert wird. 2331 2332Af1Parameter 2333Aga 2334AfprName Ist der Name des neuen Makros. 2335lValue Ist der Wert des neuen Makros. 2336rMacro Ist ein String der ausgewertet wird. 2337lPos gibt die Position an, an welcher das Makro eingef�gt werden soll. 2338Aga 2339Af1Return-Werte 2340Aga 2341In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt. 2342 2343Af1Anmerkungen 2344Aga 2345Durch rMacro k�nnen Makros auch wieder durch Makros erkl�rt werden. Es wird sichergestellt, da� 2346nur Makros verwendet werden, die vorher deklariert wurden. Ob sie vorher deklariert wurden, wird 2347anhand der Abh�ngigkeitslisten entschieden. 2348 2349Af1Querverweise 2350Aga 2351Klassen: RscFileTab. 2352Methoden: ::MacroParser(). 2353 2354Af1Beispiel 2355Aga 2356Ali//Datei demo.hrc in Projektverwaltung 2357lFileKey = pBase->AddHrcFile( "demo.hrc" ); 2358//Sicht auf demo.hrc 2359RscHrc aHrc( pBase, lFileKey ); 2360//Makro erzeugen 2361aHrc.NewDef( String( "BASE" ), 1000 ); 2362//Makro erzeugen 2363aHrc.NewDef( String( "DEF_TEST" ), String( "1000 + 2" ) ); 2364//Makro erzeugen 2365aHrc.NewDef( String( "MENU_FILE" ),String( "BASE + 100" )); 2366Aga 2367Aga��������������������������������������������������������� 2368Aga 2369Au0RscHrc::ChangeDef() 2370Aga 2371AliERRTYPE RscHrc::ChangeDef( const String & rName, 2372 const String & rMacro ); 2373ERRTYPE RscHrc::ChangeDef( const String & rName, 2374 long lValue ); 2375Aga 2376Af1Beschreibung 2377Aga 2378Mit dieser Methode k�nnen Makros ge�ndert werden. 2379 2380Af1Parameter 2381Aga 2382AfprName Ist der Name des neuen Makros. 2383rMacro Ist ein String der ausgewertet wird. 2384lValue Ist der Wert des ge�nderten Makros. 2385Aga 2386Af1Return-Werte 2387Aga 2388In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt. 2389 2390Af1Anmerkungen 2391Aga 2392Durch rMacro k�nnen Makros auch wieder durch Makros erkl�rt werden. Es wird sichergestellt, da� 2393nur Makros verwendet werden, die vorher deklariert wurden. Ob sie vorher deklariert wurden, wird 2394anhand der Abh�ngigkeitslisten entschieden. 2395 2396Af1Querverweise 2397Aga 2398Klassen: RscFileTab. 2399Methoden: ::MacroParser(), NewDef(). 2400 2401Af1Beispiel 2402Aga 2403Ali//Datei demo.hrc in Projektverwaltung 2404lFileKey = pBase->AddHrcFile( "demo.hrc" ); 2405//Sicht auf demo.hrc 2406RscHrc aHrc( pBase, lFileKey ); 2407//Makro erzeugen 2408aHrc.NewDef( String( "BASE" ), 1000 ); 2409//Makro erzeugen 2410aHrc.NewDef( String( "DEF_TEST" ), String( "1000 + 2" ) ); 2411//Makro aendern 2412aHrc.ChangeDef( String( "DEF_TEST" ), 2413 String( "BASE + 100" ) ); 2414Aga 2415Aga��������������������������������������������������������� 2416Aga 2417Au0RscHrc::IsDefUsed() 2418Aga 2419AliBOOL RscHrc::IsDefUsed( const String & rName ); 2420Aga 2421Af1Beschreibung 2422Aga 2423Mit dieser Methode kann festgestellt werden ob ein Makro noch ben�tigt wird. Es wird ben�tigt, wenn 2424Referenzen bestehen, z.B. das Makro wird zur Definition von anderen Makros verwendet. 2425 2426Af1Parameter 2427Aga 2428AfprName Ist der Name des Makros. 2429Aga 2430Af1Return-Werte 2431Aga 2432AfpTRUE Das Makro wird noch ben�tigt. 2433FALSE Das Makro wird nicht mehr ben�tigt. 2434Aga 2435Af1Querverweise 2436Aga 2437Klassen: RscFileTab. 2438 2439Aga��������������������������������������������������������� 2440 2441Au0RscHrc::DeleteDef() 2442Aga 2443Alivoid RscHrc::DeleteDef( const String & rName ); 2444Aga 2445Af1Beschreibung 2446Aga 2447Das Makro mit dem Namen rName wird gel�scht. 2448 2449Af1Parameter 2450Aga 2451AfprName Ist der Name des Makros. 2452Aga 2453Af1Querverweise 2454Aga 2455Klassen: RscFileTab. 2456 2457Aga�������������������������������������������������������� 2458Aga 2459Au0RscHrc::ChangeDefName() 2460Aga 2461AliERRTYPE RscHrc::ChangeDefName( const String & rName, 2462 const String & rNewName ); 2463Aga 2464Af1Beschreibung 2465Aga 2466Der Name des Makros wird umbenannt. Existiert der neue Name schon, oder ist der neue Name ein 2467reserviertes Wort, wird ein Fehler zur�ckgeliefert. 2468 2469Af1Parameter 2470Aga 2471AfprName Der Name des Makros. 2472rNewName Der neue Name des Makros. 2473Aga 2474Af1Return-Werte 2475Aga 2476In ERRTYPE steht, ob ein Fehler aufgetreten ist und um welchen es sich handelt. 2477 2478Af1Anmerkungen 2479Aga 2480Alle Objekte oder Makros, die das umbenannte Makro benutzen, enthalten den neuen Namen. 2481 2482Af1Querverweise 2483Aga 2484Klassen: RscFileTab. 2485 2486Aga��������������������������������������������������������� 2487 2488Au0RscHrc::GetFileStruct() 2489Aga 2490AliRscFile * RscHrc::GetFileStruct(); 2491Aga 2492Af1Return-Werte 2493Aga 2494Liefert einen Zeiger auf die interne Datenstruktur.. 2495 2496Af1Querverweise 2497Aga 2498Klassen: RscFile, RscFileTab. 2499Aga 2500Aga��������������������������������������������������������� 2501 2502Au0RscHrc::GetDependList() 2503Aga 2504AliRscDependList * RscHrc::GetDependList(); 2505Aga 2506Af1Beschreibung 2507Aga 2508Mit dieser Methode bekommt man die Abh�ngigkeitsliste der Datei. 2509 2510Af1Return-Werte 2511Aga 2512Die Methode liefert einen Zeiger auf die Abh�ngigkeitsliste zur�ck. 2513Aga 2514Af1Anmerkungen 2515Aga 2516Die Datei ist selbst als letztes Element in der Liste vermerkt. 2517 2518Af1Querverweise 2519Aga 2520Klassen: RscFile, RscFileTab. 2521 2522Aga��������������������������������������������������������� 2523Aga 2524Au0RscHrc::WriteFile() 2525Aga 2526AliERRTYPE RscHrc::WriteFile(); 2527Aga 2528Af1Beschreibung 2529Aga 2530Diese Methode schreibt eine Datei im src-Format. Alle Resourceinstanzen die zu dieser Datei geh�ren 2531werden geschrieben. Es werden auch alle zugeh�rigen Makros geschrieben. Ein Datei ohne 2532Resourceinstanzen ist eine hrc-Datei. Der Name unter dem die Datei geschrieben wird ist der 2533Pfadname. 2534 2535Aga 2536Af1Return-Werte 2537Aga 2538AfpERRTYPE.IsOk() Die Daten wurden in die entsprechende Datei geschrieben. 2539Afpanderer Wert Es ist ein Fehler aufgetreten. Die angegebene Datei wurde 2540"eventuell unvollst�ndig geschrieben. 2541Aga 2542Af1Querverweise 2543Aga 2544Klassen: RscTypCont. 2545Methoden: RscTypCont::WriteSrc(), RscDefineList::WriteAll(), SetPathName(). 2546 2547Aga��������������������������������������������������������� 2548Au0PARscSrc 2549Aga 2550Aliclass RscSrc { 2551public: 2552 RscSrc( RscDataBase * pDataBase, ULONG lKey ); 2553 ~RscSrc(); 2554 RscInstCopy CreateRscInst( RscTop * pClass ); 2555 ERRTYPE DeleteRscInst( RscTop * pTypeClass, 2556 RscId & rName ); 2557 ERRTYPE SetRscInst( RscId & rInstName, RscInstCopy & ); 2558 RscInst GetRscInst( RscTop * pClass, RscId & rInst ); 2559 void FillNameIdList( REResourceList * pList ); 2560 ERRTYPE WriteCxxFile( const String &, 2561 const String & rHxxFile ); 2562 ERRTYPE WriteHxxFile( const String & ); 2563}; 2564Aga 2565Af1Beschreibung 2566Aga 2567Diese Klasse l�st folgende Aufgaben: 2568 1. Das Einlesen der Include-Dateien und der ".src"-Datei mit Erstellung der Datenbasis. 2569 2. Das Erzeugen von Resourceinstanzen. 2570 3. Das Finden und Herausgeben von Resourceinstanzen. 2571 4. Das Einsetzen von Resourceinstanzen. 2572 5. Das Schreiben von ".cxx"- und ".hxx"-Dateien. 2573 2574Af1Anmerkungen 2575Aga 2576Die von einer Instanz dieser Klasse herausgegebenen Resourceinstanzen sind von der Verwendeten 2577Datenbasis abh�ngig, das hei�t bevor die Datenbasis gel�scht wird, m�ssen alle Resourceinstanzen 2578gel�scht oder wieder eingesetzt worden sein. 2579 2580Af1Querverweise 2581Aga 2582Klassen: RscTypCont, RscError, RscId, RscDataBase. 2583Methoden: HashId, GetHashString. 2584 2585Af1Beispiel 2586Aga 2587Auszug aus der test.src Datei. 2588Ali..... 2589Color 1000 { 2590 Red = 0; //kein Rotanteil 2591 Green = 65535; 2592 Blue = 65535; 2593}; 2594..... 2595 2596AgaAuszug aus der ".cxx" Datei. 2597Ali..... 2598// Compilers initialisieren 2599InitRscCompiler(); 2600..... 2601RscError aErrorHandle; // Fehlerbehandlung 2602RscdataBase aBase( aErrorHandle ); // Datenbasis erzeugen 2603//src-Datei 2604RscSrc aSrc( &aBase, 2605 aBase->AddSrcFile( "test.src" ) ); 2606RscInst aInst; // eine ResourceInstanz 2607RscTop* pClassTyp; // ein Klassentyp 2608 2609// Einlesen der Resourcedatei test.src 2610aSrc.ReadFile(); 2611// Typ einer Resource aus dem Namen erzeugen 2612pClassTyp = aBase.GetClassType( HashId( "Color" ) ); 2613// Instanz holen 2614aInst = aSrc.GetRscInst( pClassTyp, RscId( 1000 ) ); 2615// Instanz ver�ndern 2616aInst.SetNumber( HashId( "Red" ), 65535 ); 2617// Da es sich bei aInst nur um eine Referenz in die 2618// Datenbasis handelt, werden die Aenderungen sofort 2619// uebernommen. 2620 2621// Ver�nderte test.src Datei schreiben 2622aSrc.WriteFile(); 2623..... 2624 2625AgaAuszug aus der ver�nderten test.src Datei. 2626Alle Kommentare werden gel�scht. Bei Preprozessoranweisungen wie #include oder #define kommt 2627es zu Reihenfolge�nderungen. 2628 2629Ali..... 2630Color 1000 { 2631 Red = 65535; 2632 Green = 65535; 2633 Blue = 65535; 2634}; 2635..... 2636Aga 2637 2638Au0PARscSrc::RscSrc() 2639Aga 2640AliRscSrc::RscSrc( RscDataBase * pDataBase, 2641 ULONG lFileKey ); 2642Aga 2643Af1Beschreibung 2644Aga 2645Diese Methode erzeugt eine Instanz der Klasse RscSrc. Der Scope von dieser Instanz mu� innerhalb 2646des Scopes von pDataBase liegen. 2647 2648Af1Parameter 2649Aga 2650AfppDataBase Ein Zeiger auf eine Datenbasis. 2651lFileKey Der Schl�ssel einer Datei. 2652Aga 2653Af1Querverweise 2654Aga 2655Klasse: RscError 2656 2657Af1Beispiel 2658Aga 2659Ali..... 2660RscDataBase aDataBase(...); 2661RscSrc aCmpInst( &aDataBase, 2662 aDataBase.AddSrcFile( "t.src" ) ); 2663..... 2664Aga 2665Aga��������������������������������������������������������� 2666Aga 2667Au0RscSrc::RscSrc() 2668Aga 2669AliRscSrc::~RscSrc(); 2670Aga 2671Af1Beschreibung 2672Aga 2673Diese Methode hat keine Funktion. 2674 2675Aga��������������������������������������������������������� 2676Aga 2677Au0RscSrc::CreateRscInst() 2678Aga 2679AliRscInstCopy RscSrc::CreateRscInst( RscTop * pClass ); 2680Aga 2681Af1Beschreibung 2682Aga 2683Diese Methode erzeugt eine Instanz vom Typ pClass. 2684 2685Af1Parameter 2686Aga 2687AfppClass ist der Typ der Resource, die erzeugt werden soll. 2688Aga 2689Af1Return-Werte 2690Aga 2691Es wird eine RscInstCopy Instanz zur�ckgeliefert. 2692 2693Af1Anmerkungen 2694Aga 2695Ist der Typ der Klasse nicht bekannt, dann wird eine ung�ltige RscInstCopy zur�ckgeliefert. 2696 2697Af1Querverweise 2698Aga 2699Klasse: RscInst, RscInstCopy. 2700Methoden: RscInst::IsInst(), RscDataBase::GetClassType(). 2701 2702Af1Beispiel 2703Aga 2704Ali..... 2705RscInstCopy aColInst; 2706RscTop * pColorType = 2707 aBase.GetClassType( HashId( "Color" ) ); 2708 2709// Resourceinstanz einer Farbe erzeugen 2710aColInst = aCmpInst.CreateRscInst( pColorType ); 2711if( !aColInst.IsInst() ) 2712 printf( "Farbinstanz konnte nicht erzeugt werden!" ); 2713..... 2714Aga 2715Aga��������������������������������������������������������� 2716 2717Au0RscSrc::DeleteRscInst() 2718Aga 2719AliERRTYPE RscSrc::DeleteRscInst( RscTop * pClass, 2720 RscId & rInstName ); 2721Aga 2722Af1Beschreibung 2723Aga 2724Diese Methode l�scht Resourceinstanz mit dem Namen rInstName aus der Datenbasis. 2725 2726Af1Parameter 2727Aga 2728AfppClass ist der Typ der Resourceinstanz. 2729rInstName ist der Identifier der Resourceinstanz, die gel�scht werden soll. 2730Aga 2731Af1Return-Werte 2732Aga 2733Zeigt an ob ein Fehler und welcher Fehler aufgetreten ist. 2734Aga 2735Af1Querverweise 2736Aga 2737Klasse: RscId, RscError. 2738 2739Aga 2740Aga��������������������������������������������������������� 2741Aga 2742Au0RscSrc::SetRscInst() 2743Aga 2744AliERRTYPE RscSrc::SetRscInst( RscId & rInstName, 2745 RscInstCopy & rInst ); 2746Aga 2747Af1Beschreibung 2748Aga 2749Diese Methode setzt die Daten einer Instanz unter dem Namen rInstName in die Datenbasis ein. Ist 2750eine andere Instanz unter diesem Namen gespeichert, wird sie gel�scht. 2751 2752Af1Parameter 2753Aga 2754AfprInstName Identifier der Instanz. 2755AfprInst Die Daten aus dieser Instanz werden in die Datenbasis eingesetzt. 2756Aga 2757Af1Return-Werte 2758Aga 2759AfpERRTYPE.IsOk() die Instanz wurde eingesetzt. 2760anderer Wert Es ist ein Fehler aufgetreten. 2761Aga 2762Af1Anmerkungen 2763Aga 2764Die Identifikation einer Instanz erfolgt �ber den Typ und den Namen. Wird ein Fehler zur�ckgegeben, 2765dann wurde die Instanz nicht eingesetzt. 2766 2767Af1Querverweise 2768Aga 2769Klassen: RscInstCopy, RscId. 2770Methode: RscDataBase::DeleteRscInst(), GetRscInst(). 2771 2772Af1Beispiel 2773Aga 2774Ali..... 2775RscId aWindowName;// Identifier eines Fensters 2776RscInst aWindow; // Instanz eines Fensters 2777..... 2778//Instanz einsetzen und die Alte l�schen, falls vorhanden 2779aCmpInst.SetRscInst( aWindowName, aWindow ); 2780Aga 2781Aga��������������������������������������������������������� 2782Aga 2783Au0RscSrc::GetRscInst() 2784Aga 2785AliRscInst RscSrc::GetRscInst( RscTop * pClass, 2786 RscId & rInstName ); 2787Aga 2788Af1Beschreibung 2789Aga 2790Diese Methode holt eine RscInst Instanz aus der Datenbasis. 2791 2792Af1Parameter 2793Aga 2794AfppClass der Typ der Instanz. 2795AfprInstName der Identifier der Instanz. 2796Aga 2797Af1Return-Werte 2798Aga 2799Es wird eine RscInst Intanz zur�ckgeliefert. 2800 2801Af1Anmerkungen 2802Aga 2803Wenn unter dem Typ und Namen keine Instanz zu finden ist, dann ist die zur�ckgelieferte Instanz 2804ung�ltig. 2805 2806Af1Querverweise 2807Aga 2808Klassen: RscInst, RscId. 2809 2810Af1Beispiel 2811Aga 2812AliRscId aWindowName;// Identifier eines Fensters 2813RscInst aWindow; // Instanz eines Fensters 2814RscTop * pClassType; 2815..... 2816// Klassentyp holen 2817pClassType = aBase.GetClassType( HashId( "Window" ) ); 2818// Instanz holen 2819aWindow = aCmpInst.GetRscInst( aWindowName, pClassType ) ); 2820// Instanz gefunden 2821if( aWindow.IsInst() ) 2822 printf( "Instanz gefunden!" ); 2823.... 2824Aga 2825Aga��������������������������������������������������������� 2826Aga 2827Au0RscSrc::FillNameIdList() 2828Aga 2829Alivoid RscSrc::FillNameIdList( REResourceList * pList ); 2830Aga 2831Af1Beschreibung 2832Aga 2833F�llt eine Liste mit den Namen und Typen von Resourceinstanzen, die in der Datenbasis stehen. 2834 2835Af1Parameter 2836Aga 2837AfppList Dies ist die Liste, die gef�llt wird. 2838Aga 2839Af1Anmerkungen 2840Aga 2841pList ist eine Liste von Listen. Resourceinstanzen k�nnen beliebige weitere Resourceinstanzen 2842beinhalten. Die Liste spiegelt diese Verschachtelung wieder. 2843 2844Af1Querverweise 2845Aga 2846Klasse: REResourceList. 2847 2848Af1Beispiel 2849Aga 2850Ali// Resourcedatei 2851Window 1000 { 2852 ..... 2853 PushButton 1 { ..... }; 2854 String 1 { ..... }; 2855 String 2 { ..... }; 2856}; 2857AliWindow 1001 { ..... }; 2858WorkWindow 1000 { 2859 ..... 2860 String 1 { ..... }; 2861}; 2862AgaEine von diesen Resourcen erzeugte Liste h�tte folgende Struktur: 2863Window 1000 2864 PushButton 1 2865 String 1 2866 String 2 2867Window 1001 2868WorkWindow 1000 2869 String 1 2870Aga��������������������������������������������������������� 2871 2872Au0RscSrc::Write...File() 2873Aga 2874AliERRTYPE RscSrc::WriteCxxFile( const String & rFileName 2875 const String & rHxxName ); 2876ERRTYPE RscSrc::WriteHxxFile( const String & rFileName ); 2877Aga 2878Af1Beschreibung 2879Aga 2880Diese Methoden schreiben ein entsprechendes Format, der in der Datenbasis stehenden 2881Resourceinstanzen, in die Dateien. WriteHxxFile schreibt die Include-Datei f�r die ".cxx"-Dateien. 2882 2883Af1Parameter 2884Aga 2885AfprFileName Dies ist der Name der Datei in die das entsprechende Format 2886"geschrieben werden soll. 2887rHxxName Dies ist der Name "hxx"-Datei, die von der "cxx"-Datei eingef�gt 2888"wird. 2889Aga 2890Af1Return-Werte 2891Aga 2892AfpERRTYPE.IsOk() Das Format wurde in die entsprechende Datei geschrieben. 2893Afpanderer Wert Es ist ein Fehler aufgetreten. Die angegebene Datei wurde 2894"eventuell unvollst�ndig geschrieben. 2895Aga 2896Aga��������������������������������������������������������� 2897Au0PARscInst 2898Aga 2899Aliclass RscInst { 2900public: 2901 RSCINST aInst; 2902 RscInst(); 2903 RscInst( const RscInst & rInst ); 2904 RscInst( RSCINST aTmpI ); 2905 RscInst& operator = ( const RscInst& rRscInst ); 2906 ~RscInst(); 2907 void OverWrite( RscInstCopy & rInst ); 2908 BOOL IsInst(); 2909 // Listen Methoden 2910 ERRTYPE SetElement( const RscId & rName, 2911 RscInstCopy & rInst ); 2912 ERRTYPE SetPosEle( USHORT nPos, 2913 RscInstCopy & rInst ); 2914 ERRTYPE SetPosRscId( USHORT nPos, const RscId & rId); 2915 SUBINFO_STRUCT GetInfoEle( USHORT nPos ); 2916 USHORT GetCount(); 2917 RscInst GetElement( RscTop * pClass, 2918 const RscId & rName ); 2919 RscInst GetPosEle( USHORT nPos ); 2920 ERRTYPE MovePosEle( USHORT nDestPos, 2921 USHORT nSourcePos ); 2922 ERRTYPE DeleteElement( RscTop * pClass, 2923 RscId & rName ); 2924 ERRTYPE DeletePosEle( USHORT nPos ); 2925 ERRTYPE SetVar( HASHID nVarName, 2926 RscInstCopy & rInst ); 2927 ERRTYPE SetConst( HASHID nConstId ); 2928 ERRTYPE SetBool( BOOL bSet ); 2929 ERRTYPE SetNumber( long lValue ); 2930 ERRTYPE SetString( const char * pStr ); 2931 ERRTYPE SetRef( const RscId & rRscId ); 2932 ERRTYPE SetDefault( HASHID nVarName ); 2933 2934 RscInst& GetVar( HASHID nVarName ); 2935 HASHID GetConst(); 2936 USHORT GetConstPos(); 2937 BOOL GetBool(); 2938 long GetNumber(); 2939 const char * GetString(); 2940 RscId GetRef(); 2941 BOOL IsDefault( HASHID nVarName ); 2942 BOOL IsConsistent( RscInconsList * pList ); 2943 2944 HASHID GetClassEnum( USHORT nPos ); 2945 RscTop * GetClassType(); 2946 HASHID GetClassName(); 2947 ERRTYPE WriteRc( RscWriteRc & aMem ); 2948}; 2949Aga 2950Af1Beschreibung 2951Aga 2952Diese Klasse stellt Methoden zur Verf�gung, mit denen Resourceinstanzen erzeugt, ver�ndern und 2953gel�scht werden k�nnen. Das Erzeugen von Instanzen erfolgt immer impliziet. Das hei�t beim 2954Anfordern einer Instanz wird sie erzeugt, wenn sie nicht vorhanden war. 2955 2956Af1Ausnahmen 2957Aga 2958Eine Ausname bildet die Methode GetPosEle, wenn an der angegebenen Stelle keine Instanz steht, so 2959wird eine ung�ltige Instanz zur�ckgeliefert. 2960 2961Af1Anmerkungen 2962Aga 2963Die Implementation ist nicht auf Geschwindigkeit und Speicherbedarf optimiert. 2964 2965Af1Querverweise 2966Aga 2967Klassen: RscDataBase, RscHrc, RscSrc, RSCINST, RscTop, RscId. 2968 2969Af1Beispiel 2970AgaDas Beispiel zeigt, wie der Wert einer Variablen ge�ndert wird 2971Ali..... 2972RscInst aWindow; 2973RscInst aBorder; 2974RscTop* pWindowType; 2975 2976// Typ des Klasse Window 2977pWindowType = aDataBase.GetClassType( HashId( "Window" ) ); 2978// Exemplar der Klasse Window erzeugen 2979aWindow = aCompilerInst.CreateRscInst( pWindowType ); 2980// Exemplar mit Namen "Border" holen 2981aBorder = aWindow.GetVar( HashId( "Border" ) ); 2982// Wert auf TRUE setzen 2983aBorder.SetBool( TRUE ); 2984..... 2985Aga 2986Au0PARscInst::RscInst() 2987Aga 2988AliRscInst::RscInst(); 2989RscInst::RscInst( const RscInst & rInst ); 2990RscInst::RscInst( RSCINST aTmpI ); 2991 2992Af1Beschreibung 2993Aga 2994Diese Instanz beinhaltet nur eine Referenz auf die Resourcedaten. 2995 2996Af1Parameter 2997Aga 2998AfprInst ist die Instanz, aus der die Referenz �bernommen wird. 2999aTmpI Aus dieser Instanz wird eine RscInst erzeugt. 3000 3001Af1Anmerkungen 3002Aga 3003RscInst hat zwei verschiedene Zust�nde die mit der Methode IsInst() abgefragt werden k�nnen. Liefert 3004IsInst() TRUE zur�ck, dann ist es eine g�ltige Instanz. Anderenfalls ist die Instanz ung�ltig und alle 3005Methoden liefern Fehler oder weitere ung�ltige Instanzen. 3006 3007Af1Querverweise 3008Aga 3009Klassen: RSCINST, ERRTYPE. 3010Methoden: IsInst(), GetClassType(). 3011 3012Aga��������������������������������������������������������� 3013Aga 3014Au0RscInst::operator = () 3015Aga 3016AliRscInst & RscInst::operator = ( const RscInst & rInst ); 3017Aga 3018Af1Beschreibung 3019Aga 3020Es werden die Referenzen von rInst �bernommen. 3021 3022Af1Parameter 3023Aga 3024AfprInst Intanz von dem die Referenzen �bernommen werden. 3025Aga 3026Af1Return-Werte 3027Aga 3028Es wird die eigene Instanz zur�ckgeliefert. 3029Aga 3030Aga��������������������������������������������������������� 3031Aga 3032 3033Au0RscInst::~RscInst() 3034Aga 3035AliRscInst::~RscInst(); 3036Aga 3037Af1Beschreibung 3038Aga 3039Im Destruktor passiert nichts. 3040 3041Aga��������������������������������������������������������� 3042Aga 3043Au0RscInst::OverWrite() 3044Aga 3045Alivoid RscInst::OverWrite( RscInstCopy & rInst ); 3046Aga 3047Af1Beschreibung 3048Aga 3049Die Daten in der Instanz werden mit den Daten in rInst �berschrieben. 3050 3051Af1Parameter 3052Aga 3053AfprInst ist die Instanz, deren Daten eingesetzt werden. 3054Aga 3055Af1Anmerkungen 3056Aga 3057Stimmen die Typen nicht �berein, werden die Daten der gemeinsamen Oberklassen �bernommen. Die 3058anderen Daten werden auf Default gesetzt. 3059 3060Af1Querverweise 3061Aga 3062Klasse: RscTop. 3063Methode: RscInstCopy::RscInstCopy(), RscTop::Create(). 3064 3065Aga��������������������������������������������������������� 3066Aga 3067Au0RscInst::IsInst() 3068Aga 3069AliBOOL RscInst::IsInst(); 3070Aga 3071Af1Beschreibung 3072Aga 3073Zeigt an ob eine g�ltige Instanz vorligt. 3074 3075Af1Return-Werte 3076Aga 3077AfpTRUE hei�t, es liegt eine g�ltige Instanz vor. 3078FALSE hei�t, es liegt keine g�ltige Instanz vor. 3079Aga 3080Af1Querverweise 3081Aga 3082Klasse: RSCINST 3083Methode: RSCINST::IsInst(); 3084 3085Aga��������������������������������������������������������� 3086Aga 3087Au0RscInst::SetElement() 3088Aga 3089AliERRTYPE RscInst::SetElement( const RscId & rName, 3090 RscInstCopy & rInst); 3091Aga 3092Af1Beschreibung 3093Aga 3094Die Methode f�gt eine Resourceinstanz unter dem Namen rName ein. 3095 3096Af1Parameter 3097Aga 3098AfprInst ist die Instanz die eingef�gt werden soll. 3099AfprName ist der Identifier unter dem die Instanz eingef�gt wird. 3100Aga 3101Af1Return-Werte 3102Aga 3103AfpERRTYPE.IsOk() bedeutet, die Instanz wurde Eingef�gt. 3104anderer Wert bedeutet, da� ein Fehler aufgetreten ist. 3105Aga 3106Af1Anmerkungen 3107Aga 3108Wenn in der Liste unter diesem Namen und Typ schon eine Instanz steht, wird die Instanz gel�scht 3109und die neue Instanz wird an der gleichen Stelle eingef�gt. Wenn rName keine g�ltige Id enth�lt, wird 3110die Instanz am Ende angef�gt. 3111 3112Af1Querverweise 3113Aga 3114Klassen: ERRTYPE, RscId, RSCINST. 3115Methoden: SetPosEle(), RscId::IsId(). 3116 3117Aga��������������������������������������������������������� 3118Aga 3119Au0RscInst::SetPosEle() 3120Aga 3121AliERRTYPE RscInst::SetPosEle( USHORT nPos, 3122 RscInstCopy & rInst ); 3123Aga 3124Af1Beschreibung 3125Aga 3126An der Position nPos wird eine Resourceinstanz durch rInst ersetzt. 3127 3128Af1Parameter 3129Aga 3130AfprInst ist die Instanz die an die Position nPos gesetzt wird. 3131nPos ist die Position an die die Instanz gesetzt wird. 3132Aga 3133Af1Return-Werte 3134Aga 3135AfpERRTYPE.IsOk() bedeutet, die Instanz auf nPos wurde ersetzt. 3136andere Wert bedeutet, die Instanz wurde nicht ersetzt. 3137Aga 3138Af1Anmerkungen 3139Aga 3140Wenn ein Fehler zur�ckgeliefert wird, so hei�t das meistens, da� an der Position nPos keine 3141Reourceinstanz steht. 3142 3143Af1Querverweise 3144Aga 3145Klassen: ERRTYPE, RSCINST. 3146 3147Aga��������������������������������������������������������� 3148Aga 3149Au0RscInst::SetPosRscId() 3150Aga 3151AliERRTYPE RscInst::SetPosRscId( USHORT nPos, 3152 const RscId & rId ); 3153Aga 3154Af1Beschreibung 3155Aga 3156An der Position nPos wird der Identifier durch rId ersetzt. 3157 3158Af1Parameter 3159Aga 3160AfprId ist die Id die an die Position nPos gesetzt wird. 3161nPos ist die Position, an die die Id gesetzt wird. 3162Aga 3163Af1Return-Werte 3164Aga 3165AfpERRTYPE.IsOk() bedeutet, die Id auf nPos wurde ersetzt. 3166andere Wert bedeutet, die Id wurde nicht ersetzt. 3167Aga 3168Af1Anmerkungen 3169Aga 3170Wenn ein Fehler zur�ckgeliefert wird, so hei�t das meistens, da� an der Position nPos keine 3171Reourceinstanz steht. 3172 3173Af1Querverweise 3174Aga 3175Klassen: ERRTYPE, RSCINST. 3176 3177Aga��������������������������������������������������������� 3178Aga 3179 3180Aga 3181Au0RscInst::GetInfoEle() 3182Aga 3183AliSUBINFO_STRUCT RscInst::GetInfoEle( USHORT nPos ); 3184Aga 3185Af1Beschreibung 3186Aga 3187Es wird Information �ber die Resourceinstanz, die auf nPos steht, zur�ckgeliefert. 3188 3189Af1Parameter 3190Aga 3191AfpnPos ist die Position der Resourceinstanz. 3192Aga 3193Af1Return-Werte 3194Aga 3195Die Information �ber die Resourceinstanz wird zur�ckgeliefert. 3196 3197Af1Anmerkungen 3198Aga 3199Steht an der Stelle nPos keine Resourceinstanz, dann ist der Inhalt undefiniert. 3200 3201Af1Querverweise 3202Aga 3203Klassen: SUBINFO_STRUCT, RSCINST. 3204 3205Aga��������������������������������������������������������� 3206 3207Au0RscInst::GetCount() 3208Aga 3209AliUSHORT RscInst::GetCount(); 3210Aga 3211Af1Beschreibung 3212Aga 3213Gibt die Anzahl der Resourceinstanzen zur�ck, die in der Liste gespeichert sind. 3214 3215Af1Return-Werte 3216Aga 3217Es wird die Anzahl der Resourceinstanzen zur�ckgeliefert. 3218 3219Af1Querverweise 3220Aga 3221Klasse: RSCINST. 3222 3223Aga��������������������������������������������������������� 3224Aga 3225Au0RscInst::GetElement() 3226Aga 3227AliRscInst RscInst::GetElement( RscTop * pClass, 3228 const RscId & rName ); 3229Aga 3230Af1Beschreibung 3231Aga 3232Diese Methode liefert eine Referenz auf die Daten der Instanz zur�ck, die unter diesem Namen in der 3233Liste steht. Wenn unter diesem Namen keine Instanz steht, dann wir sie erzeugt. 3234 3235Af1Parameter 3236Aga 3237AfppClass ist der Typ der Instanz. 3238rName ist der Identifier der Instanz. 3239Aga 3240Af1Return-Werte 3241Aga 3242Es wird eine Instanz zur�ckgeliefert. 3243 3244Af1Anmerkungen 3245Aga 3246Besteht in der Liste eine Einschr�nkung auf bestimmte Resourceinstanzen, zum Beispiel nur Instanzen 3247vom Typ Window oder abgeleitete Typen, dann kann es vorkommen, da� eine ung�ltige Instanz 3248zur�ckgeliefert wird. 3249 3250Af1Querverweise 3251Aga 3252Klassen: RscTop, RscId. 3253Methode: IsInst(). 3254 3255Aga��������������������������������������������������������� 3256Aga 3257Au0RscInst::GetPosEle() 3258Aga 3259AliRscInst RscInst::GetPosEle( USHORT nPos ); 3260Aga 3261Af1Beschreibung 3262Aga 3263Es wird eine Referenz auf die Daten der Instanz an der angegebenen Stelle zur�ckgeliefert. 3264 3265Af1Parameter 3266Aga 3267AfpnPos ist die Position der Resourceinstanz. 3268Aga 3269Af1Return-Werte 3270Aga 3271Es wird eine Resourceinstanz zur�ckgeliefert. 3272 3273Af1Anmerkungen 3274Aga 3275Wenn an der Position keine Instanz steht, dann wird eine ung�ltige Instanz zur�ckgeliefert. 3276 3277Af1Querverweise 3278Aga 3279Klasse: RscInst. 3280Methode: IsInst(). 3281Aga 3282Aga��������������������������������������������������������� 3283Aga 3284Au0RscInst::MovePosEle() 3285Aga 3286AliERRTYPE RscInst::MovePosEle( USHORT nDestPos 3287 USHORT nSourcePos ); 3288Aga 3289Af1Beschreibung 3290Aga 3291In einem Feld wird die Resourceinstanz an der Position nSourcePos an die Stelle nDestPos 3292verschoben. 3293 3294Af1Parameter 3295Aga 3296AfpnDestPos An dieser Position wird die Instanz eingef�gt. 3297nSourcePos Von dieser Position wird die Instanz genommen. 3298Aga 3299Af1Return-Werte 3300Aga 3301Es wird ein Fehler zur�ckgegeben, wenn nSourcePos oder nDestPos ung�ltige Positionen sind. 3302Aga 3303Aga��������������������������������������������������������� 33040� 3305Aga 3306Au0RscInst::DeleteElement() 3307Aga 3308AliERRTYPE RscInst::DeleteElement( RscTop * pClass, 3309 RscId& rName ); 3310Aga 3311Af1Beschreibung 3312Aga 3313In der Liste wird die erste Resourceinstanz mit dem entsprechenden Namen und dem Typ gel�scht. 3314 3315Af1Parameter 3316Aga 3317AfppClass ist der Typ der Resourceinstanz. 3318rName ist der Identifier der Resourceinstanz. 3319Aga 3320Af1Return-Werte 3321Aga 3322Gibt es keinen Fehler, dann wurde die Resourceinstanz gel�scht. 3323Aga 3324Af1Querverweise 3325Aga 3326Klassen: RscTop, RscId. 3327 3328Aga��������������������������������������������������������� 3329Aga 3330Au0RscInst::DeletePosEle() 3331Aga 3332AliERRTYPE RscInst::DeletePosEle( USHORT nPos ); 3333Aga 3334Af1Beschreibung 3335Aga 3336Die Resourceinstanz an der Stelle nPos wird gel�scht. 3337 3338Af1Parameter 3339Aga 3340AfpnPos ist die Position der Resourceinstanz. 3341Aga 3342Af1Return-Werte 3343Aga 3344Gibt es keinen Fehler, dann wurde die Resourseinstanz gel�scht. 3345Aga 3346Aga��������������������������������������������������������� 3347Aga 3348Au0RscInst::SetVar() 3349Aga 3350AliERRTYPE RscInst::SetVar( HASHID nVarName, 3351 RscInstCopy & rInst ); 3352Aga 3353Af1Beschreibung 3354Aga 3355In die Variable mit Namen nVarName wird die Resourceinstanz rInst eingesetzt. 3356 3357Af1Parameter 3358Aga 3359AfpnVarName ist der Name der Variablen. 3360rInst ist die Instanz, die eingesetzt wird. 3361Aga 3362Af1Return-Werte 3363Aga 3364AgaGibt es keinen Fehler, wurde die Instanz eingesetzt. 3365Aga 3366Af1Anmerkungen 3367Aga 3368Ein Fehler tritt auf, wenn der Variablentyp und der Instanztyp nicht �bereinstimmen. 3369 3370Af1Querverweise 3371Aga 3372Klasse: RscTop. 3373Methode: GetVar(). 3374 3375Aga��������������������������������������������������������� 3376Aga 3377Au0RscInst::SetConst() 3378Aga 3379AliERRTYPE RscInst::SetConst( HASHID nConst ); 3380Aga 3381Af1Beschreibung 3382Aga 3383In die Instanz wird die Konstante nConst eingesetzt. 3384 3385Af1Parameter 3386Aga 3387AfpnConst ist die Konstante, die eingesetzt wird. 3388Aga 3389Af1Return-Werte 3390Aga 3391Gibt es keinen Fehler, wurde die Konstante eingesetzt. 3392Aga 3393Af1Querverweise 3394Aga 3395Klassen: RscTop. 3396Methoden: GetConst(). 3397 3398Af1Beispiel 3399Aga�nderung einer Konstanten. 3400 3401AliRscInstCopy aColorInst; 3402RscInst aConst; 3403RscTop* pColorType; 3404..... 3405// Erzeuge Farbinstanz 3406aColorInst = aCmpInst.CreateRscInst( pColorType ); 3407//Const-Instanz holen 3408aConst = aColorInst.GetVar( HashId( "Predefined" ) ); 3409// Farbe auf blau setzten 3410aConst.SetConst( HashId( "COL_BLUE" ) ); 3411// Die gleiche Wirkung haette 3412// aConst.SetNumber( COL_BLUE ); 3413// wobei COL_BLUE in sv.hxx definiert ist 3414 3415Aga��������������������������������������������������������� 3416Aga 3417Au0RscInst::SetBool() 3418Aga 3419AliERRTYPE RscInst::SetBool( BOOL bVal ); 3420Aga 3421Af1Beschreibung 3422Aga 3423In die Instanz wird der Wert bVal eingesetzt. 3424 3425Af1Parameter 3426Aga 3427AfpbVal ist der Wert, der eingesetzt wird. 3428Aga 3429Af1Return-Werte 3430Aga 3431AgaGibt es keinen Fehler, wurde der Wert eingesetzt. 3432Aga 3433Af1Querverweise 3434Aga 3435Klassen: RscTop. 3436Methoden: GetBool(). 3437 3438Af1Beispiel 3439Aga�ndern eines Wahrheitswertes. 3440 3441AliRscInstCopy aWindowInst; 3442RscInst aBool; 3443RscTop* pWindowType; 3444..... 3445// Erzeuge Windowinstanz 3446aWindowInst = aCmpInst.CreateRscInst( pWindowType ); 3447aBool = aWindowInst.GetVar( HashId( "Border" ) ); 3448// Fensterattribut Rand setzen 3449aBool.SetBool( TRUE ); 3450 3451Aga��������������������������������������������������������� 3452Aga 3453Au0RscInst::SetNumber() 3454Aga 3455AliERRTYPE RscInst::SetNumber( long lVal ); 3456Aga 3457Af1Beschreibung 3458Aga 3459In die Instanz wird der Wert lVal eingesetzt. 3460 3461Af1Parameter 3462Aga 3463AfplVal ist der Wert, der eingesetzt wird. 3464Aga 3465Af1Return-Werte 3466Aga 3467AgaGibt es keinen Fehler, wurde die Zahl eingesetzt. 3468Aga 3469Af1Querverweise 3470Aga 3471Klassen: RscTop. 3472Methoden: GetNumber(). 3473 3474Af1Beispiel 3475Aga�ndern eines Zahlenwertes. 3476 3477AliRscInstCopy aColorInst; 3478RscInst aNumber; 3479RscTop* pColorType; 3480..... 3481// Erzeuge Farbinstanz 3482aColorInst = aCmpInst.CreateRscInst( pColorType ); 3483aNumber = aColorInst.GetVar( HashId( "RED" ) ); 3484// volle Rotintensit�t 3485aNumber.SetNumber( 0xFFFF ); 3486 3487Aga��������������������������������������������������������� 3488 3489Au0RscInst::SetString() 3490Aga 3491AliERRTYPE RscInst::SetString( const char * pStr ); 3492Aga 3493Af1Beschreibung 3494Aga 3495In die Instanz wird der String pStr eingesetzt. 3496 3497Af1Parameter 3498Aga 3499AfppStr ist der String, der eingesetzt wird. 3500Aga 3501Af1Return-Werte 3502Aga 3503AgaGibt es keinen Fehler, wurde der String eingesetzt. 3504Aga 3505Af1Querverweise 3506Aga 3507Klassen: RscTop. 3508Methoden: GetString(); 3509 3510Af1Beispiel 3511Aga�ndern einer Zeichenkette. 3512 3513AliRscInstCopy aFontInst; 3514RscInst aStr; 3515RscTop* pFontType; 3516..... 3517// Erzeuge Fontinstanz 3518aFontInst = aCmpInst.CreateRscInst( pFontType ); 3519aStr = aFontInst.GetVar( HashId( "Text" ) ); 3520// Fontnamen setzen 3521aStr.SetString( "Helvetica" ); 3522 3523Aga��������������������������������������������������������� 3524 3525Au0RscInst::SetRef() 3526Aga 3527AliERRTYPE RscInst::SetRef( const RscId & rRefName ); 3528Aga 3529Af1Beschreibung 3530Aga 3531Beim Schreiben der verschiedenen Dateien wird nicht die Resourceinstanz verwendet, sondern eine 3532Resourceinstanz vom selben Typ mit dem Namen rRefName. Diese Instanz wird in der Datenbasis 3533gesucht. 3534 3535Af1Parameter 3536Aga 3537AfprRefName ist der Identifier der referenzierten Instanz. 3538Aga 3539Af1Return-Werte 3540Aga 3541AgaGibt es keinen Fehler, wurde die Referenz eingesetzt. 3542 3543Af1Anmerkungen 3544Aga 3545Die referenzierte Instanz wird nur in der ersten Ebene der Datenbasis gesucht. 3546Mit SetRef( RscId() ), werden die Referenzen wieder aufgehoben. 3547 3548Af1Querverweise 3549Aga 3550Klassen: RscTop, RscId. 3551Methoden: GetRef(). 3552 3553Af1Beispiel 3554Aga 3555Aga��������������������������������������������������������� 3556Aga 3557Au0RscInst::SetDefault() 3558Aga 3559AliERRTYPE RscInst::SetDefault( HASHID nVarName ); 3560Aga 3561Af1Beschreibung 3562Aga 3563Die Instanz hinter der Variable nVarName wird auf ihre Defaultwerte gesetzt. 3564 3565Af1Parameter 3566Aga 3567AfpnVarName ist der Name der Variablen. 3568Aga 3569Af1Return-Werte 3570Aga 3571AgaGibt es keinen Fehler, wurde die Instanz nicht auf Default gesetzt. 3572 3573Af1Querverweise 3574Aga 3575Klassen: RscTop. 3576Methoden: IsDefault(). 3577 3578Af1Beispiel 3579Aga 3580AliRscInst aColorInst; 3581RscTop* pColorType; 3582..... 3583// Hole Farbinstanz 3584aColorInst = aCmpInst.GetRscInst( pColorType, 3585 RscId( 1000 ) ); 3586// Rot auf Default setzten 3587aColorInst.SetDefault( HashId( "Red" ) ); 3588 3589Aga��������������������������������������������������������� 3590 3591 3592Au0RscInst::GetVar() 3593Aga 3594AliRscInst RscInst::GetVar( HASHID nVarName ); 3595Aga 3596Af1Beschreibung 3597Aga 3598Die Methode liefert eine Kopie des Inhaltes der Variablen nVarName. 3599 3600Af1Parameter 3601Aga 3602AfpnVarName ist der Name der Variablen. 3603Aga 3604Af1Return-Werte 3605Aga 3606Es wird eine Resourceinstanz zur�ckgeliefert. 3607 3608Af1Anmerkungen 3609Aga 3610Existiert keine Variable unter diesem Namen, dann wird eine ung�ltige Instanz zur�ckgeliefert. 3611 3612Af1Querverweise 3613Aga 3614Klassen: RscTop. 3615Methoden: SetVar(). 3616 3617Aga��������������������������������������������������������� 3618 3619Au0RscInst::GetConst() 3620Aga 3621AliHASHID RscInst::GetConst(); 3622Aga 3623Af1Beschreibung 3624Aga 3625Die Methode liefert die Instanz als Konstante. 3626 3627Af1Return-Werte 3628Aga 3629Der Wert der Konstanten. 3630Kann die Instanz nicht in eine Konstante umgewandelt werden, wird HASH_NONAME 3631zur�ckgeliefert. 3632 3633Af1Querverweise 3634Aga 3635Klassen: RscTop. 3636Methoden: SetConst(). 3637 3638Aga��������������������������������������������������������� 3639 3640Au0RscInst::GetBool() 3641Aga 3642AliBOOL RscInst::GetBool(); 3643Aga 3644Af1Beschreibung 3645Aga 3646Die Methode liefert die Instanz als Wahrheitswert. 3647 3648Af1Return-Werte 3649Aga 3650Es wird ein boolscher Wert zur�ckgeliefert. 3651Kann die Instanz nicht in einen Wahrheitswert umgewandelt werden, wird FALSE zur�ckgeliefert. 3652 3653Af1Querverweise 3654Aga 3655Klassen: RscTop. 3656Methoden: SetBool(). 3657 3658Aga��������������������������������������������������������� 3659 3660Au0RscInst::GetNumber() 3661Aga 3662Alilong RscInst::GetNumber(); 3663Aga 3664Af1Beschreibung 3665Aga 3666Die Methode liefert die Instanz als Zahl. 3667 3668Af1Return-Werte 3669Aga 3670Es wird ein Wert zur�ckgeliefert. 3671Kann die Instanz nicht in ein Zahl umgewandelt werden, wird 0 zur�ckgeliefert. 3672 3673Af1Querverweise 3674Aga 3675Klassen: RscTop. 3676Methoden: SetNumber(). 3677 3678Aga��������������������������������������������������������� 3679 3680Au0RscInst::GetString() 3681Aga 3682Aliconst char * RscInst::GetVar(); 3683Aga 3684Af1Beschreibung 3685Aga 3686Die Methode liefert die Instanz als String. 3687 3688Af1Return-Werte 3689Aga 3690Es wird ein Zeiger auf eine Zeichenkette zur�ckgeliefert. 3691Kann die Instanz nicht in einen String umgewandelt werden, wird NULL zur�ckgeliefert. 3692 3693Af1Querverweise 3694Aga 3695Klassen: RscTop. 3696Methoden: SetString(). 3697 3698Aga��������������������������������������������������������� 3699 3700Au0RscInst::GetRef() 3701Aga 3702AliRscId RscInst::GetRef(); 3703Aga 3704Af1Beschreibung 3705Aga 3706Ist in der Instanz eine Referenz eingetragen, wird diese zur�ckgegeben. 3707 3708Af1Return-Werte 3709Aga 3710Es wird der Identifier der Referenz zur�ckgeliefert. 3711 3712Af1Anmerkungen 3713Aga 3714Der zur�ckgelieferte Identifier kann ung�ltig sein. Das ist der Fall, wenn keine Referenz besteht. 3715 3716Af1Querverweise 3717Aga 3718Klassen: RscTop, RscId. 3719Methode: IsId(), SetDefault(). 3720 3721Aga��������������������������������������������������������� 3722 3723Au0RscInst::IsDefault() 3724Aga 3725AliBOOL RscInst::IsDefault( HASHID nVarName ); 3726Aga 3727Af1Beschreibung 3728Aga 3729Stellt fest ob die genannte Variable noch die Defaulteinstellung besitzt. 3730 3731Af1Parameter 3732Aga 3733AfpnVarName ist der Name der Variablen. 3734Aga 3735Af1Return-Werte 3736Aga 3737AfpTRUE bedeutet, die Variable hat die Defaulteinstellung. 3738FALSE bedeutet, sie wurde ver�ndert. 3739Aga 3740Af1Querverweise 3741Aga 3742Methoden: SetDefault(). 3743 3744Aga��������������������������������������������������������� 3745 3746Au0RscInst::IsConsistent() 3747Aga 3748AliBOOL RscInst::IsConsistent( RscInconsList * pList ); 3749Aga 3750Af1Beschreibung 3751Aga 3752Die Methode �berpr�ft ob diese Instanz noch konsistent ist. 3753 3754Af1Parameter 3755Aga 3756AfppList Eine Liste die mit den RscId-Objekten gef�llt wird, die 3757"Inkonsistenzen hervorrufen. pList darf Null sein. 3758Aga 3759Af1Return-Werte 3760Aga 3761AfpTRUE bedeutet die Instanz ist konsistent. 3762FALSE bedeutet die Instanz ist inkonsistent. 3763Aga 3764Af1Anmerkungen 3765Aga 3766Ein RscId-Objekt kann aus Objekten zusammengesetzt sein, die global ver�ndert werden k�nnen. 3767Nach einer solchen Ver�nderung mu� die Konsistenz �berpr�ft werden. 3768 3769Af1Querverweise 3770Aga 3771Klassen: RscId, RscHrc, RscFileTab. 3772Mehtoden: RscDataBase::MakeConsistent(), RscTop::IsConsistent(). 3773 3774Aga��������������������������������������������������������� 3775Au0 3776Au0RscInst::GetClassEnum() 3777Aga 3778AliHASHID RscInst::GetClassEnum( USHORT nPos ); 3779Aga 3780Af1Beschreibung 3781Aga 3782Diese Methode liefert den Namen der Konstanten zur�ck, die in einem Aufz�hlungstyp an der Position 3783nPos definiert ist. 3784 3785Af1Parameter 3786Aga 3787AfpnPos Position der Konstante. 3788Aga 3789Af1Return-Werte 3790Aga 3791AfpHASH_NONAME Dieser Wert wird zur�ckgeliefert, wenn der Variablentyp kein 3792"Aufz�hlungstyp war oder wenn nPos >= der Anzahl der 3793"Konstanten. 3794AgaSonst wird der Name der Konstanten zur�ckgeliefert. 3795Aga 3796Af1Beispiel 3797Aga 3798Das Beispiel zeigt wie die Namen eine Aufz�hlungstypen ermittelt werden k�nnen. 3799AgaVariable ist ein Aufz�hlungstyp mit den Werten COL_WHITE, COL_RED und COL_BLACK. Die 3800Konstanten haben die Name "White", "Red", "Black". 3801Der Variablenname ist "Predefined". 3802Die Klasse, in der diese Variable definiert ist, hei�t "Color". 3803Ali 3804HASHID nConstName; 3805HASHID nVarName; 3806RscInst aColorInst; 3807RscInst aConst; 3808USHORT i; 3809 3810nVarName = HashId( "Predefined" ); //Variablennamen setzen 3811// pCmpEd ist eine Compiler-Instanz 3812aColorInst = pCmpEd->CreateRscInst( 3813 pCmpEd->GetClassType( HashId( "Color" ) ) ); 3814 if( aColorInst.IsInst() ){ //Instanz wurde erzeugt 3815 aConst = aColorInst.GetVar( nVarName ); 3816 i = 0; 3817 nConstName = aConst.GetClassEnum( i ); 3818 while( HASH_NONAME != nConstName ){ 3819 printf( "%s\n", GetHashString( nConstName ) ); 3820 i++; 3821 nConstName = aConst.GetClassEnum( i ); 3822 } 3823} 3824Aga 3825Die Ausgabe ist: 3826White 3827Red 3828Black 3829Aga��������������������������������������������������������� 3830 3831Au0RscInst::GetTypeClass() 3832Aga 3833AliRscTop * RscInst::GetTypeClass(); 3834Aga 3835Af1Beschreibung 3836Aga 3837Diese Methode liefert den Typ der Instanz zur�ck. 3838 3839Af1Return-Werte 3840Aga 3841Der Typ der Instanz wird zur�ckgeliefert. 3842 3843Aga��������������������������������������������������������� 3844 3845Au0RscInst::GetClassName() 3846Aga 3847AliHASHID RscInst::GetClassName(); 3848Aga 3849Af1Beschreibung 3850Aga 3851Diese Methode liefert den Namen einer Klasse. 3852 3853Af1Return-Werte 3854Aga 3855AfpHASH_NONAME Dieser Wert wird zur�ckgeliefert, wenn die Klasse keinen Namen 3856"hat. 3857AgaAnsonsten wird der Name der Klasse zur�ckgeliefert. 3858 3859Af1Beispiel 3860AgaDiese Funktion gibt zu einer Instanz den Klassennamen aus. 3861 3862Alivoid PrintClassName( RscInst & rInst ){ 3863// rInst, Instanz deren Klassenname ausgegeben werden soll 3864HASHID nClassName; 3865 3866nClassName = rInst.GetClassName(); // Klassenname holen 3867if( HASH_NONAME == nClassName ) 3868 printf( "Kein Klassenname\n" ); 3869else 3870 printf( "%s\n", GetHashString( nClassName ) ); 3871} 3872Aga 3873Aga��������������������������������������������������������� 3874Au0 3875Au0RscInst::WriteRc() 3876Aga 3877AliERRTYPE RscInst::WriteRc( RscWriteRc & aMem ); 3878Aga 3879Af1Beschreibung 3880Aga 3881Diese Methode erzeugt eine Resource im StarView Resourceformat. Mit dieser Resource kann der 3882Resourcekonstruktor der entsprechenden Klasse gerufen werden. 3883 3884Af1Parameter 3885Aga 3886AfpaMem ist die Instanz, die die Resourcedaten enth�lt. 3887Aga 3888Af1Return-Werte 3889Aga 3890AfpERRTYPE.IsOk() bedeutet, da� in aMem eine korrekte Resource steht. 3891anderer Wert bedeutet, das Format ist nicht korrekt. 3892Aga 3893Af1Ausnahmen 3894Aga 3895Die System abh�ngigen Resourcen Icon, Bitmap und Pointer werden nicht vollst�ndig geschrieben. 3896Um einen Programmfehler zu vermeiden, m�ssen die StarView-Klassen entsprechend abgesichert sein. 3897 3898Af1Anmerkungen 3899Aga 3900Die Referenzen m�ssen zum Zeitpunkt von WriteRc aufgel�st werden k�nnen. K�nnen sie nicht 3901aufgel�st werden, werden die Daten der Instanz benutzt, in der die Referenz angegeben ist. 3902 3903Af1Querverweise 3904Aga 3905Klassen: RscWriteRc, ERRTYPE. 3906 3907Af1Beispiel 3908Aga 3909AliRscInst aColor; 3910RscTop* pColorType; 3911Color aSvColor; 3912 3913// Farbinstanz erzeugen 3914aColor = aCmpInst.CreateColor( pColorType ); 3915// Farbe auf Gelb setzten 3916AliaColor.SetConst( HashId( "Predefined" ), 3917 HashId( "COL_YELLOW" ) ); 3918 3919RscWriteRc aMem; 3920if( aColor.WriteRc( aMem ).IsOk() ){ 3921 aSvColor = Color( RscId( aMem.GetRes() ) ); 3922 ..... 3923}; 3924Aga 3925 3926Aga��������������������������������������������������������� 3927Au0PARscInstCopy 3928Aga 3929Aliclass RscInstCopy { 3930public: 3931 RscInstCopy(); 3932 RscInstCopy( const RscInstCopy & rInst ); 3933 RscInstCopy( const RscInst & rInst ); 3934 RscInstCopy( RSCINST aTmpI ); 3935 RscInstCopy( RscTop * pNewType, 3936 const RscInst & rInst ); 3937 RscInstCopy& operator = (const RscInstCopy & rRscInst); 3938 RscInstCopy& operator = ( const RscInst & rRscInst ); 3939 ~RscInstCopy(); 3940}; 3941Aga 3942Af1Beschreibung 3943Aga 3944Mit Hilfe dieser Klasse wird eine Kopie einer Resourceinstanz angefertigt. Die Kopie enth�lt keine 3945Referenz in die Datenbasis. Es kann somit auch nicht zu einem Fehler kommen, wenn eine 3946Resourceinstanz in der Datenbasis gel�scht wird. Solch ein Fehler kann bei einer Instanz der Klasse 3947RscInst auftreten. 3948 3949Af1Anmerkung 3950Aga 3951Alle Makros die in der Datenbasis ge�ndert werden, �ndern sich auch in dieser Instanz. Mit der 3952Methode IsConsistent() kann diese Instanz auf Konsistenz �berpr�ft werden. 3953 3954Af1Querverweise 3955Aga 3956Klassen: RscDataBase, RscHrc, RscSrc, RSCINST, RscTop, RscId. 3957 3958Af1Beispiel 3959AgaDas Beispiel zeigt, wie der Wert einer Variablen ge�ndert wird 3960Ali..... 3961RscInstCopy aWindow; 3962RscInstCopy aBorder; 3963RscTop* pWindowType; 3964 3965// Typ des Klasse Window 3966pWindowType = aDataBase.GetClassType( HashId( "Window" ) ); 3967// Exemplar der Klasse Window erzeugen 3968aWindow = aCompilerInst.CreateRscInst( pWindowType ); 3969// Exemplar mit Namen "Border" holen 3970aBorder = aWindow.GetVar( HashId( "Border" ) ); 3971// Wert auf TRUE setzen 3972aBorder.SetBool( TRUE ); 3973// wieder in aWindow einsetzen 3974aWindow.SetVar( HashId( "Border" ), aBorder ); 3975..... 3976Aga 3977Au0PARscInstCopy::RscInstCopy() 3978Aga 3979AliRscInstCopy::RscInstCopy(); 3980RscInstCopy::RscInstCopy( const RscInst & rInst ); 3981RscInstCopy::RscInstCopy( const RscInstCopy & rInst ); 3982RscInstCopy::RscInstCopy( RSCINST aTmpI ); 3983RscInstCopy::RscInstCopy( RscTop * pNewType, 3984 const RscInst & rInst ); 3985Aga 3986Af1Beschreibung 3987Aga 3988Im Konstruktor wird eine Instanz erzeugt oder kopiert. 3989 3990Af1Parameter 3991Aga 3992AfprInst ist die Instanz, die kopiert wird. 3993aTmpI Aus dieser Instanz wird eine RscInstCopy erzeugt. 3994pNewType Wenn dieser Konstruktor verwendet wird, wird eine Instanz mit 3995"Typ pNewType erzeugt. Alle Daten ab der ersten gemeinsamen 3996"Oberklasse von rInst und pNewType werden �bernommen. 3997Aga 3998Af1Querverweise 3999Aga 4000Klassen: RSCINST, ERRTYPE. 4001Methoden: IsInst(), GetClassType(). 4002 4003Af1Beispiel 4004AgaEs wird gezeigt wie aus einer Button-Instanz eine Edit-Instanz erzeugt wird. 4005 4006AliRscInstCopy aButton; 4007RscInstCopy aEdit; 4008RscTop * pEditType = 4009 aDataBase.GetClassType( HashId( "Edit" ) ); 4010//Voraussetzung: In aButton ist g�ltige Button-Instanz 4011//Erzeuge Edit-Instanz 4012aEdit = RscInstCopy( pEditType, aButton ); 4013Aga 4014Alle Daten oberhalb von der Klasse Control wurden nach aEdit kopiert. 4015Aga 4016Aga��������������������������������������������������������� 4017 4018Au0RscInstCopy::operator = () 4019Aga 4020AliRscInstCopy & RscInstCopy::operator = 4021 ( const RscInst & rInst ); 4022RscInstCopy & RscInstCopy::operator = 4023 ( const RscInstCopy & rInst ); 4024Aga 4025Af1Beschreibung 4026Aga 4027Es werden die Daten von rInst in die Instanzdaten kopiert. 4028 4029Af1Parameter 4030Aga 4031AfprInst Intanz von dem die Daten �bernommen werden. 4032Aga 4033Af1Return-Werte 4034Aga 4035Es wird die eigene Instanz zur�ckgeliefert. 4036Aga 4037Aga��������������������������������������������������������� 4038Aga 4039 4040Au0RscInstCopy::~RscInstCopy() 4041Aga 4042AliRscInstCopy::~RscInstCopy(); 4043Aga 4044Af1Beschreibung 4045Aga 4046Die Daten in der Instanz werden gel�scht. 4047 4048Aga��������������������������������������������������������� 4049Aga 4050SsvPA 4051Au0Stichwortverzeichnis 4052Aga 4053Asv 4054RscDataBase 6 4055RscDataBase::AddHrcFile() 11 4056RscDataBase::AddSrcFile() 10 4057RscDataBase::FindDef() 12 4058RscDataBase::GetClassType() 7 4059RscDataBase::GetFileKey() 12 4060RscDataBase::GetFileStruct() 9 4061RscDataBase::GetFileTab() 9 4062RscDataBase::GetPathList() 10 4063RscDataBase::MakeConsistent() 40638 4064RscDataBase::RemoveFile() 12 4065RscDataBase::RscDataBase() 7 4066RscDataBase::ScanForIncFiles() 11 4067RscHrc #14 4068RscHrc::ChangeDef() 20 4069RscHrc::ChangeDefName() 22 4070RscHrc::DeleteDef() 21 4071RscHrc::FindDef() 19 4072RscHrc::GetDefineList() 18 4073RscHrc::GetDependList() 23 4074RscHrc::GetFileKey() 16 4075RscHrc::GetFileName() 18 4076RscHrc::GetFileStruct() 22 4077RscHrc::GetPathName() 17 4078RscHrc::InsertDepend() 18 4079RscHrc::IsDefUsed() 21 4080RscHrc::IsDirty() 16 4081RscHrc::NewDef() 19 4082RscHrc::ReadFile() 15 4083RscHrc::RscHrc() 15 4084RscHrc::SetDirty() 16 4085RscHrc::SetFileName() 17 4086RscHrc::SetPathName() 17 4087RscHrc::WriteFile() 23 4088RscHrc::~RscHrc() 15 4089RscInst "31 4090RscInst::DeleteElement() 38 4091RscInst::DeletePosEle() 39 4092RscInst::GetBool() 44 4093RscInst::GetClassEnum() 46 4094RscInst::GetClassName() 48 4095RscInst::GetConst() 44 4096RscInst::GetCount() 36 4097RscInst::GetElement() 37 4098RscInst::GetInfoEle() 36 4099RscInst::GetNumber() 44 4100RscInst::GetPosEle() 37 4101RscInst::GetRef() 45 4102RscInst::GetString() 45 4103RscInst::GetTypeClass() 47 4104RscInst::GetVar() 43 4105RscInst::IsConsistent() 46 4106RscInst::IsDefault() 46 4107RscInst::IsInst() 34 4108RscInst::MovePosEle() 38 4109RscInst::operator = () 33 4110RscInst::OverWrite() 34 4111RscInst::RscInst() 33 4112RscInst::SetBool() 40 4113RscInst::SetConst() 39 4114RscInst::SetDefault() 43 4115RscInst::SetElement() 34 4116RscInst::SetNumber() 41 4117RscInst::SetPosEle() 35 4118RscInst::SetPosRscId() 35 4119RscInst::SetRef() 42 4120RscInst::SetString() 41 4121RscInst::SetVar() 39 4122RscInst::WriteRc() 48 4123RscInst::~RscInst() 33 4124RscInstCopy 50 4125RscInstCopy::operator = () 51 4126RscInstCopy::RscInstCopy() 51 4127RscInstCopy::~RscInstCopy() 52 4128RscSrc #24 4129RscSrc::CreateRscInst() 26 4130RscSrc::DeleteRscInst() 27 4131RscSrc::FillNameIdList() 29 4132RscSrc::GetRscInst() 28 4133RscSrc::RscSrc() 26 4134RscSrc::SetRscInst() 27 4135RscSrc::Write...File() 30 4136 4137Aga 4138