Questions et Réponses



Dovnload 105.85 Kb.
Datum21.08.2016
Grootte105.85 Kb.
Questions et Réponses
Alex Wykmans s'intéresse aux errorlevels générés par la commande ChkDsk, aux gestionnaires mémoire pour 80286, aux souris à technologie opto-mécanique, aux cartes graphiques ATI, aux cartes sonores SoundBlaster Pro et à OS/2. Il est toujours aussi incollable que l'Oncle Bens.
MS-DOS 6.0
Eric Lapaille procède à une étude, par le petit bout de la lorgnette, de DoubleSpace, le module de compression de données intégré au MS-DOS 6.0.
Windows
Eric Lapaille se penche sur les erreurs de parité sous Windows et quelques bidouilleries associées au gestionnaire de programmes.
Coin des matheux
Filip Leys poursuit son exploration des fonctions API utilisables à partir du langage macro d'Excel.
Oeufs de Pâques
Nos lecteurs poussent leurs logiciels dans leurs derniers retranchements pour y découvrir des perles cachées. Aujourd'hui, c'est Lotus Organizer qui est sous la sellette.
Obsédé Textuel
André Rombauts a trouvé un truc infaillible pour nous pondre des articles en tapant deux fois moins sur son clavier. Le programme en question s'appelle TypeSmart. André va-t-il être payé deux fois moins ? Eric Lapaille, lui, fouine dans WinWord et y déniche une fonction non documentée.
Lutte des classes
Avec Windows, plus question d'utiliser la fonction printf pour afficher du texte à l'écran. Gérard Leblanc nous dévoile comment prcéder au moyen d'un "device context" et de la fonction TextOut.
BBS
Suite à la disparition du CM-BBS de Louvain, nous avons fait appel au BBS InfoBoard pour reprendre le flambeau.
Livre du mois
AutoFormation MS-DOS 6, un livre pour débutants à la découverte du monde MS-DOS.
-----------------
Geachte Heer,
Ik ben reeds 10 maanden geabonneerd op jullie blad en ik moet eerlijk zijn, ik ben abonnee geworden omdat er gewoon geen beter magazine is. Jullie hebben echt een prachtig blad. Vooral de uitlegkadertjes vind ik reuze. Alleen vind ik de roze kleur die jullie ervoor gebruiken wat te fel. Een lichtere achtergrond maakt het geheel beter leesbaar. Nu heb ik wel een paar vragen, enerzijds voor de Help! sectie, anderzijds voor de redactie die zich bezighoudt met de hardware-testen.
1° Ik zit met een DOS-probleempje, namelijk CHKDSK. Mijn vraag is of elk DOS programma na beëindiging van het programma een returncode genereert die men met een errorlevel kan controleren, en zo ja, had ik graag de errorlevels geweten van CHKDSK. Ik ben in het bezit van een officieel aangekochte MsDos 5.0 in de Engelse taal, en heb de registratiekaart teruggestuurd. Na 1 jaar wachten heb ik er een reactie op gekregen, namelijk het bericht dat er seminaries gehouden werden. In de handleiding die bij MsDos 5.0 geleverd worden vind ik niets van errorlevels van CHKDSK terug.
2° Ik werk nog steeds, wegens acuut geldgebrek, met een 80286 computer met 1Mb Ram. Ik heb nogal veel device drivers nodig om de snelheid van die machine enigszins aan een aanvaardbaar tempo te laten werken. Doordat ik een screensaver, een cache, een keyboard driver, een mousedriver en het programma GUARD van Dr. Solomon's Anti Virus Toolkit moet laden beschik ik momenteel maar over ±550K conventioneel geheugen. Dit is veel te weinig om sommige programma's goed te laten werken. Op dit moment kan ik alleen maar DOS hoog laden. Zijn er programma's, zoals Qemm en Emm386 voor 80386 computers, beschikbaar voor 80286 machines? Ik weet van uw vorige testen dat QRAM bestaat.
3° Ik zou graag een tapestreamer aankopen, liefst een externe die ik via de parallelle poort kan aansluiten op elke computer die ik onder handen krijg, waarbij de voeding ofwel van een kleine transformator komt die ik gemakkelijk in een jaszak kan steken, ofwel een ingebouwde voeding zodat ik het apparaat direct in de "muur" kan pluggen. Zou hiervan nog een test komen?
Carl Giroulle, Antwerpen
Op puntje 1° kan ik vrij kort antwoorden: neen, de standaard Dos commando's geven geen errorlevel code terug.
Op puntje 2° heeft U ook al zelf het antwoord gegeven. Op een 80286 kan je geen UMB's aanmaken. QRAM is een memory management utility die U alleen Expanded Memory geeft. Misschien is een kort woordje over de verschillende type van geheugen hier op zijn plaats. Extended geheugen is beschikbaar op alle CPU's vanaf 80286 of hoger. De meeste 80x86 systemen komen met 640K conventioneel geheugen en 384K extended geheugen. De meeste programma's die conventioneel geheugen gebruiken kunnen géén extended geheugen gebruiken doordat het adres dat de locatie bepaalt in het XMS geheugen, niet herkend wordt door deze programma's. Alleen de adressering in de 640K zone is herkenbaar voor ieder programma. Om nu de XMS zone te kunnen gebruiken, heb je speciale instructies om die hogere adressen te herkennen in extended memory. Extended memory is snel en kan efficiënt gebruikt worden door programma's die het kunnen gebruiken. Om extended memory efficiënt te kunnen gebruiken moet je een XMS-Memory Manager installeren. MS-Dos levert hiervoor HIMEM.SYS. MS-Dos kan in extended memory draaien waardoor je meer conventioneel memory beschikbaar hebt voor andere programma's. Dit is trouwens ook de beste keuze voor Windows 3.0 of later.
Een andere manier van geheugenbeheer is Expanded Memory (EMS). De meeste computers kunnen dit eveneens aanspreken. EMS bestaat uit twee delen: een expanded memory bord en een programma genaamd 'Expanded memory manager', dat meestal met het bord meegeleverd wordt. Een programma dat kan gebruik maken van EMS heeft niet zomaar toegang tot dit deel van het geheugen. Daarom wordt EMS onderverdeeld in stukken van 16K groot, genaamd pagina's. Wanneer nu een programma informatie nodig heeft dat in expanded memory zit, wordt de desbetreffende pagina gekopieerd (mapping) naar een zone in de 386K area. Dit wordt een 'Page Frame' genoemd. Sommige programma's kunnen hier echter ook geen gebruik van maken. De kans dat je een programma vindt dat gebruik kan maken van Expanded Memory in vergelijking met Extended Memory, is veel groter daar EMS eerder ontwikkeld was dan XMS. EMS is gelimiteerd in de hoeveelheid informatie die kan opgeroepen worden in een tijdspanne. Daarom is EMS trager en vraagt veel meer CPU tijd dan XMS.
Met EMM386 kan je expanded memory nabootsen in extended memory en/of Upper memory Blocks (UMB) aanmaken. Dit brengt ons tot het laatste deel namelijk de 'Upper Memory Area'. Dit is de 384K ruimte die zich net boven de 640K zit. De Upper Memory Area wordt niet beschouwd als een deel van het totale geheugen

van een PC. Dit komt omdat programma's geen informatie in die zone kunnen plaatsen. Deze zone is meestal gereserveerd voor de hardware van de PC zoals de videokaart, de BIOS, netwerkkaart, enz. Informatie wordt in dit geval gekopieerd (mapping) van memory (boven de 1024K) naar een zone in de upper memory area die niet gebruikt is door de hardware. Deze ongebruikt zones noemt men de Upper Memory Blocks (UMB). Alleen de 80386 of hoger met extended geheugen kan gebruik maken van deze upper memory area om meer conventioneel geheugen vrij te maken. Het LoadHigh (LH) en DEVICEHIGH commando van MS-Dos dient nu juist om dit te verwezenlijken. Het aantal device drivers of programma's die in UMB kunnen geplaatst worden, hangt af van hoe groot de ongebruikte ruimte is in de 384K zone en van de EMS Page Frame, indien je die zou gebruiken.


------------------------------
Hello,
J'ai un petit article qui peut être intéressant pour le CM.
Une Souris blanche ...

Votre souris est-elle allergique à la lumière?
Les souris opto-mécanique basent sur le mouvement d'une grille placée entre un opto-coupleur (une diode émettrice et une photo résistance ou phototransistor..), cette grille qui lors de son mouvement laisse passer puis ne laisse plus passer la lumière envoie à l'ordinateur des 0 et des 1 successivement à une certaine cadence (dépendant de la vitesse à laquelle on bouge la souris).

Supposons qu'il n'y ait plus que des 1 (la lumière passe), le curseur de la souris refusera de bouger. C'est ce se passe avec nombre de souris!


Souvent quand la souris refuse de bouger dans un sens ou dans l'autre, l'on déplace un peu la souris et généralement ça finit par fonctionner. Puis 5 sec après, on a le même problème. Réaction habituelle: "la souris est encrassée!" ou " ça y est, elle est foutue!" Or ce n'est souvent aucune de ces deux raisons. Une raison réelle courante est que le boîtier est trop transparent et que la lumière provenant de l'extérieure de la souris interfère avec les opto-coupleurs, conclusion: l'opto-coupleur envoie toujours des 1 comme si la souris ne bougeait pas! L'utilisateur bouge la souris, l'essaye hors du tapis ... du coup la souris n'est plus soumise à une forte source de lumière (ex sous le spot, exposé au soleil un jour d'été...) et refonctionne correctement! Parfois la lumière ambiante seule peut causer des troubles!
Les souris les plus visées sont les souris de couleur claire (blanches comme c'est souvent le cas) ou dont le boîtier est trop fin. Vérifiez, en la mettant à l'abri de la lumière!

Une solution: peindre soigneusement l'intérieur du boîtier en noir (ne pas oublier d'enlever la boule et le circuit électronique!!)


Pascal Fautre, Tervuren

Reçu par mail électronique.


P.S.: Donnez-moi une réponse SVP, la dernière fois que j'ai envoyé un article au CM, je n'ai eu aucune réponse, RIEN pourtant je l'avais envoyé par Fax, par Fidonet, directement au serveur..
Uw theorie is inderdaad juist. Het licht van uitwendige aard speelt een grote rol op de lichtgevoelige elementen van een optische muis. Waarom de fabrikanten niet dadelijk de ruimte binnenin voorzien van een zwarte coating is mij ook een raadsel. Om nu een mooi resultaat te krijgen, waardoor je een egale zwarting verkrijgt, maak je best gebruik van een spuitbus met matte, zwarte verf. Je plakt ook best de buitenkant van je muis af met van die schildersplakband zodat deze niet besmeurt geraakt door het spuiten van de binnenkant (zij die een originele uitziende muis wensen hoeven deze raad niet op te volgen). Let ook goed op bij het demonteren en monteren van het mechanisme en de elektronica. Er is snel iets afgebroken van de fragiele plastic onderdelen.
Wat betreft de brieven die men ons opstuurt; we krijgen vaak nuttige tips van onze lezers opgestuurd. Maar soms zijn deze in een andere vorm reeds aanbod gekomen (een andere lezersbrief, een artikel..) Het is ons ook onmogelijk om op elke lezersbrief een antwoord retour te sturen. Ik hoop dat je dit begrijpt. (Zie ook 'Woord vooraf')
------------------------
Geachte Heer, Mevrouw,

Hierbij geef ik U een beschrijving van mijn pc(probleem) en configuratie. Als U daar soms een oplossing of verklaring kunt voor geven zou ik U zeer dankbaar zijn. In de hoop dat U nog een beetje van Uw kostbare tijd kunt spenderen in deze zaak, dank ik U reeds bij voorbaat. En met deze wil ik U ook een hint geven in verband met Uw maandblad: maak er een weekblad van (een maand duurt toch lang als ge naar iets tracht). Nu hier mijn probleem.


Videokaart: ATI Ultra 1Mb

Bij deze kaart wordt geleverd:

°RAMBIOS.SYS. Moet dit geladen worden? Waarom?

°VANSI.SYS Geen probleem hiermee, dit is een vervanging

van de MsDos ANSI.SYS

°HDILOAD.EXE laad ik op in AUTOEXEC.BAT, maar ik gebruik ook QEMM386 en als ik dan iets wil veranderen in de setup van de videosoftware, dan komt er steeds op het scherm de volgende boodschap: "Please ensure that ATI GRAPHICS ACCELATOR card is installed in your system". Als ik dan in mijn CONFIG.SYS file 'REM Device = QEMM386.SYS ....' zet krijg ik natuurlijk wel foutboodschappen in verband met het geheugen maar ik kan dan wel in de setup van de videosoftware en alles naar wens zetten. Nadien verander ik weer m'n CONFIG.SYS file (dus zonder de REM) en reboot. Maar ik vraag mij wel af of die ATI accelator kaart dan wel werkt, want met VGA BENCHMARK 1.0 geeft hij me een resultaat van 20.0 frames per seconde en dat op een 486DX2 50Mhz. Als ik dat met jullie testen vergelijk ...

Voorts heb ik ook een SCSII Adaptec Controller met een SCSII Seagate HardDisk, die geeft volgens systeminfo van PcTools 8.0 een data transfer rate van amper 320 KB/Sec, wat toch wel povertjes is. Ik heb ook eens geprobeerd om de drivers van Adaptec, o.a. ASPI4DOS.SYS en ASPIDISK.SYS, te laden in CONFIG.SYS en als ik dan reboot geeft hij inderdaad bij het opladen de gegevens zoals die beschreven staan in de handleiding en geen foutmelding doch ook geen snelheidswinst. Maar na een paar maal herbooten verlies ik allerlei data in die mate zelfs dat sommige programma's niet meer kunnen opstarten...
Freddy Quisquater, Elewijt
Ter verduidelijking voor de lezer: de inhoud van deze brief is om praktische reden ingekort. De schrijver had 10 Blz. aan informatie meegegeven die afgedrukt waren met PcTools V8.0. Toch is dit een zeer goed idee om ons zoveel mogelijk informatie te bezorgen. Zeker wanneer er vermoedens zijn dat er conflicten zijn tussen hard- en software, instellingen, enz. Maar nu terug naar het probleem van onze briefschrijver. Waarvoor dient die RAMBIOS.SYS driver nu eigenlijk? Op de meeste van de controller kaarten (harde schijf, videokaart,SCSII controller, enz.) bevindt er zich een stukje programmatuur die de taak op zich neemt om te communiceren tussen CPU en de controller waar hij deel van uitmaakt (de BIOS). Zulk een programma noemt men wel eens de 'FIRMWARE' en bevindt zich in een ROM (Read Only Memory). Wel, zoals je wellicht zult weten is zulk een ROM minder snel uit te lezen dan RAM, het geheugen van de PC. RAMBIOS.SYS geeft je nu de mogelijkheid om de volledige inhoud van je 'Firmware' in ROM te kopiëren naar RAM. Als je kaart nu een routine nodig heeft vanuit deze BIOS kan hij deze veel sneller lezen vanuit de lokatie in het geheugen dan vanuit zijn eigen ROM. Dit heeft als voordeel, inderdaad snelheidswinst. Zeker wanneer men vaak met grafische pakketten werkt kan dit een duidelijk verschil geven. Het nadeel is dan dat je een gedeelte van je UMB array moet opgeven waardoor je weer minder devicedrivers of programma's kunt hoog laden. Eens uit proberen dus.

De hoofdreden van je probleem is volgens mij te wijten aan het feit dat zowel QEMM386 als je videokaart het zelfde adres wensen te gebruiken. Dit verklaart waarom je je videosoftware kunt gebruiken wanneer je QEMM386 hebt uitgeschakeld in je CONFIG.SYS. Je moet nu het adresbereik dat je videokaart gebruikt via het 'EXCLUDE=C000-C800' statement van QEMM386 definiëren. Dit adresbereik is meestal door de videokaart bezet. Indien dit niet moest lukken zou je eens moeten uitpluizen op welk adres je VGA-kaart zit. Met het uitsluiten van dit gebied kan je geheugenmanager er geen gebruik meer van maken en blijft deze ruimte ter beschikking van je ATI Ultra. Nog een paar kleine tips: als je zeker bent dat je geen programma's gaat gebruiken die gaan nakijken of je een MsDos versie lager dan 5.0 draait, kan je de lijn 'DEVICE=C:\DOS\SETVER.EXE' gerust verwijderen. Dit scheelt toch weer al een paar bytes in het o toch zo beperkt basisgeheugen.


------------------
Geachte heer,

Onlangs kocht ik een Soundblaster Pro van de Creative Labs Company. Bij sommige programma's, zoals 'DUNE'1 bijvoorbeeld rezen er bepaalde problemen. Ik zal het zo kort mogelijk uitleggen. Bij het installeren van de kaart in de PC zijn er verschillende "jumpers" die moeten gecontroleerd worden:


- Het I/O adres staat op 220 hex -> geen probleem.

- De IRQ interrupt staat standaard op 5; dit hebben we moeten wijzigen naar 10, daar de busmuis de 5 benut -> probleem.

- Het DMA- en DACK kanaal op 0 gezet -> geen probleem.
Bij het installeren van 'DUNE', moest ik dus de geluidskaartoptie aanpassen naar SoundBlaster. Op het scherm kwam de foutmelding dat het I/O adres juist was, doch de IRQ interupt moest worden gewijzigd. Dit werd gedaan naar positie 10, doch het programma nam dit niet aan. Ik heb dan geprobeerd om de ADLIB te installeren en toen kwam er wel geluid. Hoe komt dat en vooral, is dit te verhelpen? Bij andere programma's heb ik dit probleem niet.
Hierbij ingesloten vindt U een afdruk van mijn AUTOEXEC.BAT en CONFIG.SYS.
AUTOEXEC.BAT
SET BLASTER=A220 I10 D0 T4

SET SOUND=C:\SBPRO

C:\SBPRO\SB-SET /M:12 /VOC:12 /CD:12 /FM:12

@ECHO OFF

PROMPT $P$G

PATH C:\DOS;C:\TOOLS;C:\MENU;\C:\PW;C:\WP;C\WP51;

SET TEMP=C:\DOS

MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)

MODE CON CODEPAGE SELECT=850

KEYB BE,,C:\DOS\KEYBOARD.SYS

MOUSE

MENU
CONFIG.SYS


DEVICE=C:\DOS\SETVER.EXE

DEVICE=C:\DOS\HIMEM.SYS

DOS=HIGH

COUNTRY=032,,C:\DOS\COUNTRY.SYS

DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,,1)

FILES=20


BUFFERS=20
COMPUTER
AT386SX 20Mhz; MsDos 5.0; 4Mb intern geheugen; 52 Mb HardDisk; VGA Monitor & kaart 1Mb, 256 kleuren.
Dank bij voorbaat voor de hulp!

Gunther De Bruyne, Wetteren


Het is pas met de uitvoering van de Soundblaster Pro dat men een hogere IRQ kan selecteren dan 7. Dit komt omdat de voorgaande uitvoering 8-bits kaarten waren. De Pro uitvoering is op 16-bits uitgebracht. Hierdoor kan je IRQ's 10, 11, 12 en 15 ook selecteren (13 is normaal gereserveerd voor de CoProcessor en 14 voor de HardDisk). De meeste software die reeds voorhanden is om met de SoundBlaster te werken is bijgevolg nog onbewust van de hogere IRQ mogelijkheid en staat bijgevolg niet toe dat je bv. een IRQ 10 selecteert. De ADLIB Soundkaart is daarentegen veel vroeger op 16-bits uitgebracht. Vandaar dat je in 'DUNE' wanneer je ADLIB selecteert, wel muziek krijgt op IRQ 10. Het kan trouwens geen kwaad om de 'ADLIB' te selecteren, SoundBlaster beweert toch volledig AdLib compatibel te zijn. Wanneer je nu software hebt uitsluitend voor de SoundBlaster geschreven en je hebt geen mogelijkheid om de gewenste 'hogere' IRQ in te stellen, heb je geen andere keuze dan je kaart naar een lagere IRQ te brengen.
Ik blijf toch nog even stilstaan bij de inhoud van je CONFIG.SYS en AUTOEXEC.BAT omdat ik ondervind dat er toch nog veel lezers zijn die het geheugenbeheer met een 386 CPU onder MsDos 5.0 niet echt optimaal gebruiken. Je maakt geen gebruik van de mogelijkheid tot het hoog laden van drivers ed. om alzo meer basis geheugen (conventionel memory) vrij te krijgen. Dit doe je door in je CONFIG.SYS de volgende lijn op te nemen : DEVICE=C:\DOS\EMM386.EXE NOEMS RAM. Dit in de veronderstelling dat EMM386 in je DOS subdirectory zit. De NOEMS optie bepaalt dat je géén EXPANDED Memory wenst en de RAM gebruik je om UMB's vrij te maken. Vervolgens kan je bepaalde device drivers in die bewuste UMB zone plaatsen door de statement DEVICEHIGH te gaan gebruiken. In de AUTOEXEC.BAT kan je hetzelfde bereiken voor bepaalde programma's, maar dan gebruik je LH of LOADHIGH als sleutelwoord. Je CONFIG.SYS, respectievelijk AUTOEXEC.BAT gaat er dan als volgt uitzien :
DEVICE=C:\DOS\SETVER.EXE

DEVICE=C:\DOS\HIMEM.SYS



DEVICE=C:\DOS\EMM386.EXE NOEMS RAM

DOS=HIGH,UMB

COUNTRY=032,,C:\DOS\COUNTRY.SYS

DEVICEHIGH=C:\DOS\DISPLAY.SYS CON=(EGA,,1)

FILES=20


BUFFERS=20
SET BLASTER=A220 I10 D0 T4

SET SOUND=C:\SBPRO

C:\SBPRO\SB-SET /M:12 /VOC:12 /CD:12 /FM:12

@ECHO OFF

PROMPT $P$G

PATH C:\DOS;C:\TOOLS;C:\MENU;\C:\PW;C:\WP;C\WP51;

SET TEMP=C:\DOS

MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)

MODE CON CODEPAGE SELECT=850

LH KEYB BE,,C:\DOS\KEYBOARD.SYS

LH MOUSE

MENU
(De onderlijnd gedrukte lijnen zijn deze die gewijzigd zijn) Heb je dit allemaal aangepast dat zal je de volgende maal merken dat je toch een paar Kb aan conventioneel geheugen hebt bijgekregen.

Wil je graag gebruiken maken van een goede en goedkope diskcache utility, dan plaats je als eerste lijn in je AUTOEXEC.BAT het volgende: C:\DOS\SMARTDRV.EXE 512. Dit is de SmartDrive Cache utility standaard bij MsDos 5.0 meegeleverd. Wanneer je SMARTDRV /? uitvoert krijg je een helpscherm waarin de syntax en de mogelijke opties verklaart worden. SmartDrive is een Disk Caching programma waardoor je toch wat snelheidswinst gaat bekomen tijdens het lezen op harde schijf of diskette. Nog veel plezier ermee.
-----------
Geachte redactie,
In uw nummer 19 van april 1993 schrijft U een artikel over operating systemen. Ik ben een OS/2 2.0 gebruiker. U schrijft dat het automatisch aangemaakt config.sys veel te wensen overlaat. Ik gebruik een 486 DX 66 Mhz met 16Mb RAM. Als softwarevoornamelijk een OS/2 applicatie op maat en AMIPro for Windows.
Bestaat er een duidelijk naslagwerk waar ik de config kan mee aanpassen of kan U bepaalde tips geven.
In de hoop op een spoedig antwoord teken ik,

Hoogachtend

P. Coursier, Mol

Net zoals met MsDOS 5.0 en 6.0 wordt er een standaard config.sys (en autoexec.bat) weggeschreven. Deze config is zo opgesteld dat er in normale omstandigheden er geen problemen gaan optreden. Het is nu zo dat er heel wat kan aan gesleuteld worden om het hele zaakje wat op te peppen. je kan dit vergelijken met een wagen; zo uit de garage rijd hij ook prima, maar mits wat aan te sleutelen rijd hij nog beter. Zulk een 'tunning' vergt wel enige kennis van zaken. In het geval van OS/2 zelfs een goeie kennis van hardware en software. Nu bestaat er een tekstbestand, opgesteld door een amerikaans gebruiker van OS/2, die heel mooi uitlegt wat de verschillende sleutelwoorden eigenlijk beduiden. Dit bestand noemt OS2CFG52.ZIP en is te vinden op de meeste BBS'n in het land die OS/2 ondersteunen. Je kan dit bestand natuurlijk ook vinden op al de BBSen van het CM-Net.


Er bestaan in de gespecialiseerde handel ook verscheidene boeken over OS/2. Een aanrader is zeker 'INSIDE OS/2 V2.0' by Mark Minasi, uitgegeven door uitgeverij NRP en is 860 blz dik. Je kan het vinden in het Computerwinkeltje te Mechelen of Brugge voor de prijs van 1680,- Bfr. Het boek beschrijft onder andere: WPS, Dos-settings, Windows environment, REXX programmeertaal, modems, SQL, DDE, OLE, OS/2 in een netwerk, OS/2 command line power, optimize OS/2, beschrijving van een bende applicaties en een volledige reference. Door de release van OS/2 V2.1 zal er waarschijnlijk een nieuwe uitgave van dit prachtig naslagwerk komen.

---------------


MS-DOS 6.0
DoubleSpace sous la loupe
Depuis l'apparition de MS-DOS 6 et de son module Double Space, il faut se familiariser avec un nouveau concept de «preload device driver». Le processus de démarrage débute lorsque le processeur fait appel à une routine de démarrage de la ROM BIOS et charge en mémoire le MBR (Master Boot Record). Le MBR recherche la table de partition pour la partition active et charge le boot secteur propre à cette partition. C'est ce secteur boot qui lance l'exécution de IO.SYS et MSDOS.SYS, les deux fichiers systèmes du MS-DOS. Si MS-DOS.SYS détecte dans la racine un fichier baptisé DBLSPACE.BIN, il exécute ce dernier avant même de procéder à la lecture des fichiers config.sys et du autoexec.bat. DblSpace.Bin lit les paramètres d'initialisation présents dans le fichier DblSpace.Ini notamment la ligne de commande ActivateDrive=X,Yn. Si DblSpace ne découvre aucun disque compressé, il se désactive automatiquement. Cela signifie que vous pouvez placer DblSpace.Bin sur toutes vos disquettes de démarrage sans craindre pour autant de gaspiller de l'espace mémoire inutile.

Puisque DblSpace.Bin est chargé en mémoire avant tout autre gestionnaire mémoire tel EMM386, 386Max ou Qemm, aucun UMB (Upper Memory Block ou bloc de mémoire haute)n'est encore disponible pour reloger DoubleSpace en dehors de la mémoire conventionnelle. Les concepteurs de DoubleSpace ont donc prévu un petit programme chargé de déplacer DblSpace.bin de la mémoire conventionnelle à la mémoire haute. C'est l'explication de la ligne de commande

Device=c:\dos\dblspace.sys /move

que l'on retrouve dans le fichier config.sys juste après le chargement du gestionnaire mémoire.


Technique du coucou
Notons au passage que si vous découvrez dans votre répertoire principal un fichier DblSpace.Bin, il ne s'agit pas nécessairement de celui conçu par Microsoft. Puisque MS-DOS.SYS recherche un fichier baptisé de la sorte, Stacker 3.1 ou le dernier Superstor trompe le MS-DOS en y placant leur propre moteur de compression de données à l'instar du coucou qui fait couver ses oeufs par d'autres volatiles. Les 6 premiers caractères du fichier DblSpace.Bin doivent comporter la signature "FF FF FF FF 42 48" tandis que le type de moteur de compression est signalé sur 7 caractères à partir de la position 12 : "DBLSPAC" pour Microsoft, "STAC-CD" pour Stac Electronics. A part cela, il s'agit d'un block device driver tout ce qu'il y a de plus conventionnel.

@Illustration Stac1.gif


Il est intéressant de jeter un coup d'oeil sur le premier secteur d'un fichier-disque. On y apprend beaucoup de choses sur la structure interne de DoubleSpace. Examinons le en détail avec le DiskEditor de Norton par exemple.

(cfr fig 1). Nous y découvrons une signature OEM MSDSP6.0 ou que DblSpace n'utilise en fait qu'une seule Table d'Allocation de Fichiers au lieu de deux comme les autres disques MS-DOS. Un autre test est encore plus intéressant. Comparez le premier secteur du fichier comprimé aux données qui vous sont renvoyées par DoubleSpace lorsque vous cherchez à examiner le contenu du Master Boot Record du fichier comprimé. Les données ne coïncident pas ! DoubleSpace trompe le MS-DOS lorqu'il y a demande de lecture du MBR. Le Dos est persuadé qu'il y a deux Fats, qu'il y a 38 secteurs par piste et non 17, que le volume s'appelle "COMPRESSED" et non "011002FD" etc ..

Dernière expérience du parfait petit hacker : faîtes une recherche sur la chaîne de caractère "MSDSP6.0". On la retrouve pratiquement au milieu du fichier au sein d'un "boot record" qui, cette fois, est tout à fait identique à l'information que renvoie DblSpace au MS-Dos.
Le découpage d'un volume CVF est très exotique. Il contient des régions inconnues sur disques classiques :
- Le MDBPB contient des champs décrivant le reste du CVF tel le champ "Maximum Capacity" décrivant la taille maximum de données non comprimées stockable sur le disque.
- La BitFat gère l'espace alloué sur le disque. Elle contient un bit pour chaque secteur de la "sector heap" et est automatiquement regénérée lorqu'un volume CVF est monté.
- La MDFAT maintient sur 32 bits chaque cluster de la FAT. On y retrouve la vraie position des données sous forme d'adresse du premier secteur, un flag signalant si les données sont compressées ou non et un second pour déterminer si chaque point d'entrée de la MDFAT est utilisé ou non.
- La FAT ne contient qu'une table mais une seconde FAT est virtualisée pour des raisons de compatibilité avec les logiciels plus anciens.
- Le root directory est tout à fait identique aux répertoires habituels
- Le Sector Heap : chaque fois que Double Space a besoin de place pour stocker des données, il reçoit de la "sector heap" l'adresse d'un secteur libre. Le bit correspondant dans la BitFat est modifié en conséquence.
- Chaque secteur compressé débute par quatre octets renseignant sur son type de compression :

44 53 00 suivi de 00 = Level 2, de 01 = LevelMax, de 02 = compression standard , de 03 = Level 3 et de 04 = level 4. Les clusters non compressés ne disposent pas de cette en-tête.


- Le dernier secteur du volume CVF contient à nouveau une signature DoubleSpace.
Pour ceux qui voudraient s'aventurer encore plus loin dans la découverte de DoubleSpace, le fichier DblSpace.Zip contenant sources, utilitaires et spécifications complètes est disponible sur un BBS CM Net près de chez vous.

---------------


Windows
Les erreurs de parité
Un des problèmes les plus classiques rencontrés par nos lecteurs dans l'utilisation quotidienne de Windows est l'apparition de messages d'erreurs signalant des erreurs de parité lors de l'accès à certaines zones mémoire. Il est courant que ce problème n'apparaisse que sous Windows et non lors de l'utilisation plus traditionnelle sous Dos. Beaucoup de lecteurs s'étonnent que ces problèmes de parité ne soient pas mis en évidence lors de l'initialisation du système et du POST (Power On Self Test) ni avec des programmes de tests mémoire tels CheckIt Pro. Il semble que le BIOS et les programmes de test mémoire ne testent pas toujours suffisamment les accès mémoire en mode 32 bits et ne détectent donc pas une série de problèmes repérés par des systèmes d'exploitation plus exigeants tels Xenix, OS/2, Windows 3.1 ou NT.
Il est donc important en cas d'erreurs de parité de se poser une série de questions sur l'état matériel de la machine:

- Le module mémoire est-il correctement enfiché et en état de marche ?

- Une inversion de l'ordre des chips mémoire corrige-t-elle le problème ?

- La vitesse des chips est-elle suffisante ? N'utilisez-vous pas des mémoires 80 nanosecondes là où le constructeur recommande 70 ns ?

- Tous vos chips mémoire sont-ils certifiés pour la même vitesse ?

- N'existe-t-il pas un problème de DMA (Direct Memory Access) ?

- Votre BIOS n'est-il pas antédiluvien ?

- Utilisez-vous des mémoires 8 bits sans bit de parité ?


Si et seulement si vous pouvez sans hésiter répondre "Non" à toutes les questions précédentes, vous pouvez agir au niveau de Windows même. Vous pouvez désactiver le test de parité mémoire en supprimant dans le fichier System.Ini la ligne device=*parity sous la rubrique [386Enh]. Attention, cette technique peut provoquer d'énormes crash système ! N'oubliez pas non plus de vous promener régulièrement sur le BBS de Microsoft à la recherche d'un fichier "Parity.386" plus récent que le vôtre et corrigeant d'éventuels bugs lors de la détection de conflits mémoire.
Personnaliser le gestionnaire de programmes
@Illustration Win1.gif
Microsoft n'a normalement pas prévu que l'on puisse changer le titre "Program Manager" ou "Gestionnaire de programmes" apparaissant au démarrage de Windows. Une méthode existe pourtant. Ajoutez dans le groupe "Démarrage" ou "StartUp" une icône faisant appel à ProgMan.Exe. Windows n'autorise pas l'exécution de deux instances du Gestionnaire de Programmes mais utilisera le titre spécifié dans la case "Files/Properties/Description".
Sauver les paramètres du Program Manager sans quitter Windows.
Dans le Gestionnaire de Programmes de Windows NT, un item du menu propose de sauvegarder la configuration sans devoir quitter Windows NT. Il est possible de réaliser la même opération sous Windows 3.1 en appuyant sur la touche Shift tout en simulant la fermeture du programme. Au choix, cela donne la combinaison Alt, Shift et F4 ou bien la pression du Shift lors d'un double clic sur la boîte de fermeture dans le coin supérieur gauche.
Démarrage à la manivelle
La touche Shift est également très utile au lancement de Windows. Si elle est enfoncée lors de l'apparition de l'écran de démarrage, le gestionnaire de programmes ne procède pas à l'exécution des applications placées dans le groupe Démarrage/Startup.
-------

Rekenhoek

Filip Leys
Verder grasduinen in de Windows API
"Winword, ben je daar?", vroeg Excel
INLEIDING
In CM 20 gaven we een eerste staaltje weg van de kracht van sommige macro-instrukties van Excel. We gebruikten toen de functie CALL() om vanuit een werkblad van een spreadsheet even onder te duiken in de beruchte Windows API. Ter herinner­ing: een API of "Applic­ation Programming Interface" is een bibliotheek van manieren waarop je in­gebouwde functies moet oproepen. Deze maand bekijken we even hoe je kan nagaan of een bepaald programma actief is of niet. Vanuit Excel te weten komen of Winword of CorelDraw draaien, bijvoorbeeld! Later zullen we dan nog een stapje verder zetten, en - nog steeds vanuit diezelfde Excelmacro - communiceren met die andere applicaties. Communicatie die kan gaan van het sturen van bepaalde toetscombinaties tot regelrechte DDE!
In de Kernel-bibliotheek bestaat een functie die GetModuleHandle heet. Normaal wordt die gebruikt om aan zogenaamde "vensterhendels" te geraken: dit zijn gehele getallen die elk een venster kenmerken. Verder geen betekenis, enkel een soort stempels voor de aanwezige vensters. Bepaalde andere API-functies hebben zo'n nummer nodig als één van de oproepparameters, zodat ze weten in welk venster ze verondersteld zijn van hun "ding" te doen. Wel, GetModuleHandle levert deze hendel op als resultaat. Niets bijzonders, ware het niet dat dit resultaat nul wordt... als de module in kwestie niet gevonden wordt. Lees: indien de applicatie niet loopt, dan bekomen we een nul. Probleem opgelost! Nu enkel nog dit alles in Excel-macrotaal gieten...
Eerste punt: hoe maken we GetModuleHandle duidelijk van welk programma we het bestaan wensen te verifiëren? Dit gebeurt door er een tekstargument aan mee te geven, die de modulenaam bevat. Elk Windowsprogramma heeft intern een modulenaam meegekregen van zijn ontwerpers, toen die hun C-brouwsel gelinkt hebben. De hele kunst bestaat er dus in van die naam te pakken te krijgen. Hebben we te maken met brave, onschuldige programmeurs, dan mogen we ervan uitgaan dat die naam de (hoogstens) acht karakters zijn, die de .EXE-extensie voorafgaan. Maar er bestaan ook andere. Getuige dit overzicht:
Toepassing Modulenaam
Ami Pro amipro

CorelDraw 2.0 waldo

Excel excel

Winword 1.x OpusApp

Winword 2.0 msword
Geef toe: je had nog niet zo gauw CorelDraw beginnen zoeken als zijnde "waldo"! Als de algemene regel niet opgaat, moet je om andere modulenamen te pakken te krijgen, kunnen goochelen met het Heap­walker-programma uit de Windows Software Develop­ment Kit (SDK). Maar da's een ander verhaal.
Tweede stap: die modulenaam meegeven met de CALL()-functie die SetModuleHandle oproept. Dit gebeurt op volgende manier:
=CALL("Kernel";"GetModuleHandle";"HC!","msword")
Eerste argument moet de naam van de betrokken DLL zijn, zeg maar: de bibliotheek waar SetModuleHandle in ondergebracht is. Tweede argument is dan de eigenlijke functienaam. Vervolgens moet je aankondigen welk type gegevens het resultaat en het argument zijn. De "H" staat voor een geheel getal, de "C" voor een string. De volledige lijst van hier toegelaten aanduidingen vind je terug vanaf pagina 475 van de Function Reference Manual bij Excel (pech voor de piraten: je hebt de doc nodig). Het uitroepteken zorgt ervoor dat deze Ex­celfunctie systematisch herrekend wordt. Anders wordt ze slechts één keer bepaald: bij het drukken op de Enter-toets tijdens het invullen van de cel. Door het truukje met het uitroepteken ­kun­nen we toch nog een wat-later-dan-verwacht opgestarte Win­word inter­cepteren!
Laatste stap: uitproberen! Plaats bovenstaande functie in een werkbladcel van Excel. Er komt nul als resultaat in te staan. Verlaat dan even Excel, start Word for Windows 2.0 op, keer terug naar Excel en druk op (om een herberekening te forceren), en je krijgt een of ander gruwelijk groot getal: de hendel van Winword!
Zou het nu niet interessant zijn om van die kennis gebruik te maken, en via het sturen van een hele serie betekenisvolle toetsaanslagen naar Winword daar als het ware een documentje aan te maken... vanuit Excel? "Come and see next week..."

Filip Leys gebruikt Excel zelfs als grasmaaier en koffiezetter.


-------------------------------

Oeufs de Pâques


Un Lotus Organizer pyromane
Illustration Lotus.gif
Philippe Henrot de 5340 Mozet a découvert par hasard que Lotus Organizer

1.0 pouvait cracher des flammes. De la main gauche, il s'agit d'enfoncer

les touches Ctrl, Alt et Shift pendant que la souris est au-dessus du bac à

papiers. En cliquant trois fois du bouton gauche, le bac à papiers s'embrase tandis qu'un rideau se lève dévoilant le nom des concepteurs.


Olivier de Bruges nous a envoyé via Fidonet deux oeufs inconnus au bataillon :

Norton Anti Virus 1.5 Dos : A propos de / Shift-F1

Logitech Fototouch Color 1.0 : A propos de / Shift gauche / double clic sur la photo.
Plus vicieux, un lecteur, anonyme cette fois, nous conseille de cuire nos oeufs de Pâques au four à micro-ondes. On en jaunit à l'idée.
------------
Obsédé Textuel

André Rombauts


@Illustration Typesmart.gif

Typesmart fonctionne avec n'importe quel éditeur ou traitement de texte Windows


Avec le glossaire de MS Win Word et Typesmart, vous taperez plus vite que votre ombre...
Vous n'êtes pas un as du clavier? Vous trouvez quelque peu «idiot» de dactylographier des dizaines de fois les mêmes mots dans un document, surtout s'il s'agit de termes techniques étrangers et s'ils sont particulièrement longs? Comment rendre cette tâche moins fastidieuse?
Vous pouvez limiter les répétitions des frappes en créant un glossaire des mots fréquemment utilisés. MS WinWord, comme la plupart des traitements de texte, offre cette possibilité. Qu'est-ce qu'un glossaire? A l'origine une glose désigne une note expliquant un mot peu usité. Le glossaire constitue la liste des mots pour lesquels une explication est disponible. Le glossaire de MS WinWord contient effectivement une liste d'«entrées». Pour insérer le contenu d'une glose dans le texte, sélectionnez son entrée et cliquez sur le bouton d'insertion. Si vous connaissez de mémoire le nom d'une entrée, tapez-là dans le texte et appuyez sur F3: l'entrée est remplacée par son contenu. L'avantage du glossaire de Word est qu'il peut contenir un mot, une phrase, un paragraphe entier, voire même un graphique ou un tableau! Mais, tout cela demande quand même quelques manipulations. Pourrait-on imaginer un programme entièrement automatique?
Typesmart travaille dans l'ombre: il enregistre toutes les frappes au clavier, repère les mots et les mémorise. Dès que vous tapez à nouveau les premières lettres de l'un de ces mots, un fenêtre s'affiche et propose une liste de mots possibles. Il suffit alors soit de cliquer sur le mot choisi, soit de taper CTRL + la lettre indiquant le numéro d'ordre du mot dans la liste (A, B, C, etc.). Les mots «capturés» ou encodés à l'aide de l'éditeur intégré ne peuvent dépasser 60 caractères; pas question d'inclure des phrases ou des paragraphes entiers. Typesmart ne remplace donc pas le glossaire de MS Win Word: il le complète avantageusement.
Les listes de mots sont bien entendus sauvegardées. A chaque exécution du programme, Typesmart charge la dernière liste utilisée, mais libre à vous d'en choisir une autre, générée lors de précédentes utilisations; vous travaillerez en effet plus efficacement en sélectionnant le «dictionnaire» qui correspond au type de contenu du document que vous tapez. Mais, les esprits chagrins feront remarquer que la création d'un dictionnaire personnel peut prendre un certain temps si cela n'est possible que pendant la frappe d'un texte. Typesmart y a pensé... Proposez-lui une série de textes "modèles", dans lesquels vous savez que se trouvent des mots fréquemment employés. Le programme va alors analyser ces documents et générer une liste des mots! Il suffira de supprimer ceux qui vous semblent inutiles et le tour est joué!
Le programme est paramétrable: vous pouvez définir le nombre de lettres minimum pour la mise en marche de la fonction de capture ainsi que le nombre minimum de lettres qui déclenchera l'apparition de la liste des mots mémorisés.
Enfin, Typesmart présente un avantage non négligeable pour les programmeurs Windows. Comme il fonctionne avec tout éditeur Windows, il peut donc être activé sous Visual Basic ou C++. L'intérêt? Ces langages de programmation comportent des noms de fonctions souvent très longs: GetClipboardFormatName, par exemple (on comprend pourquoi Typesmart accepte des mots jusqu'à 60 caractères...). Un «dictionnaire» reprenant les fonctions du SDK (Software Development Toolkit) est d'ailleurs fourni avec le programme. Un vrai petit bijou, cet utilitaire!
Typesmart est un shareware. Pour 35 $US (frais d'expédition compris), l'enregistrement du produit vous donne droit, outre la dernière version disponible, au support technique de l'auteur, soit par voie postale, soit par courrier électronique (CompuServe). Typesmart est disponible sur CM-Net (TYPESM.ZIP). Il existe une version DOS, mais elle ne fonctionne qu'avec l'éditeur mis au point par l'auteur.
@Obsédé textuel 2e partie
Winword à la barre

Eric Lapaille


Word pour Windows fournit une méthode non documentée pour remplacer la barre d'outils originale par une version de vôtre cru. La première chose à faire est d'ajouter la ligne

LoadToolbarBitmaps=1

sous la rubrique [WinWord2.0] de votre fichier de configuration WIN.INI. Ensuite, il s'agit de créer quatre bitmaps aux noms évocateurs de v1tbar.bmp,v2tbar.bmp, v3tbar.bmp et v4tbar.bmp. Chaque fichier bitmap doit contenir 26 simili-icônes de 18 pixels de large et de 16 pixels de haut. En cas d'utilisation d'une résolution de 1024 sur 768 pixels de haut, les 4 fichiers bitmaps doivent s'appeler 81tbar.bmp jusqu'à 84tbar.bmp.
Pour vous faciliter la tâche, il existe un programme shareware, WOPR, qui permet la création et la manipulation de ces bitmaps.
-------------
Lutte des classes

@Techniques d'affichage sous WINDOWS


Gérard Leblanc
Les techniques d'affichage par printf ou par accès direct à la mémoire vidéo sont bien connues de ceux qui pro­gramment pour l'environnement DOS. Ces techniques n'ont plus cours sous WINDOWS.
Avant d'afficher, de dessiner ou de colorier, il faut réclamer à WINDOWS un "contexte de péri­phé­rique" (device context en anglais). Celui-ci peut être assi­milé à une trousse à outils qui contiendrait les objets (stylos, pinceaux,...) nécessaires à ces opé­ra­tions. Cette "trousse à outils" contient d'office certains stylos et pinceaux mais devra être complétée si d'autres outils plus élaborés (par exemple des crayons de couleurs) s'avèrent nécessaires.
Un programme réclame un contexte de périphérique par la fonction GetDC(hWnd) dans laquelle on passe en argument le numéro de la fenêtre d'affi­chage (généralement, il s'agira du champ HWindow). Cette fonction GetDC retourne une valeur codée sur 16 bits et de type HDC (pour Handle de Device Context). Cette valeur (on dira "ce contexte de périphérique") doit être spé­ci­fiée dans la fonction d'affi­chage. Les fonctions de dessin et de coloriage utilisent également cet HDC.
Aussitôt l'affichage effectué, il faut libérer le contexte de périphérique, même si l'on sait qu'il sera encore néces­saire lors d'un prochain message. En effet, le nombre de contextes de périphérique que WINDOWS peut mettre à la dispo­si­tion des pro­grammes est limité à cinq. Un contexte de périphérique est libéré par ReleaseDC, le numéro de la fenêtre et le numéro de contexte devant être spécifiés en argu­ments de cette fonction.
Si vous avez l'intention d'afficher ou de dessiner en réponse à un message, la séquence doit commencer et se terminer par :
HDC hDC = GetDC(HWindow);

....


ReleaseDC(HWindow, hDC);
Avant d'afficher ou de dessiner, il est possible de sélectionner des stylos de couleurs, des sty­­los plus épais ou encore diverses polices de caractères.

La fonction d'affichage


Pour afficher du texte, il suffit d'appeler la fonction TextOut dont le prototype est :
TextOut(HDC hDC, int X, int Y, LPSTR lpString, int nChar);
TextOut doit être inséré en sandwich entre GetDC et ReleaseDC. X et Y désignent les coordonnées du point d'affichage. Plus pré­ci­sé­ment, il s'agit des coor­données du coin supérieur gauche du rec­tangle encadrant la chaîne à afficher. Ce rec­tangle n'appa­­raît cepen­dant pas à l'écran. Ces coordonnées sont relatives à l'intérieur de la fenêtre (cette zone étant également appelée "aire client").
lpString désigne la chaîne à afficher, le zéro de fin de chaîne ne jouant aucun rôle car c'est l'argu­ment nChar qui indique le nombre de carac­tères à afficher.
Pour afficher un message au point de cliquage de la souris, on écrira (les champs LP.Lo et LP.Hi du message contenant les coordonnées du point de cliquage) :
class TMainWin : public TWindow

{

.... // private fields and functions



public :

.... // public fields and functions

virtual void WMLButtonDown(RTMessage Msg)

{

HDC hDC = GetDC(HWindow);



char buf[20];

sprintf(buf, "%d %d", Msg.LP.Lo, Msg.LP.Hi);

TextOut(hDC, Msg.LP.Lo, Msg.LP.Hi, buf, strlen(buf));

ReleaseDC(HWindow, hDC);

}

};
Le message WM_PAINT


Si, pour une raison ou l'autre, la fenêtre de l'application est détruite (géné­ra­le­ment parce qu'elle a été recou­verte par une autre fenêtre), WINDOWS vous en informe par l'envoi du message WM_PAINT. Votre programme n'y est pour rien dans cette destruc­tion mais WINDOWS ne va pas jusqu'à rétablir automatiquement la partie de la fenêtre qui a été détruite. En interceptant le message WM_PAINT ou en redéfinissant la fonction vir­tuelle Paint d'ObjectWindows, vous pouvez restaurer la fenêtre. WINDOWS vous fournit un contexte de péri­phé­rique pour répa­rer les dégâts et ne procède à aucun affichage en dehors de cette zone à réafficher. Le "rec­tangle inva­lide" désigne la partie rec­tan­gu­laire de l'aire client qui, à un moment donné, doit être redessinée. A tout moment, vous pouvez, par programme, forcer le réaffichage soit de toute la fenêtre, soit d'une partie de la fenêtre.
Lors de la réception du message WM_PAINT, les arguments n'ont aucune signification. WM_PAINT ne fournit donc pas beaucoup d'informations ! Pour obtenir ces informations et pou­voir ainsi restaurer la fenêtre, vous devez :
- appeler la fonction BeginPaint, ce qui fournit notamment un contexte de péri­phé­rique et remplit une structure PAINTSTRUCT avec des informations sur le rectangle invalide,

- réafficher le rectangle invalide (avec TextOut ou d'autres fonctions permettant de dessiner),

- terminer la séquence de traitement du message WM_PAINT par EndPaint, ce qui libère le contexte de péri­phé­rique obtenu par BeginPaint.
La technique d'affichage est donc différente selon que l'on traite ou non le message WM_PAINT.
Comment savoir ce qui se trouve à l'écran, là où l'affichage a été détruit ? On ne s'en préoccupe pas : on demande le réaffichage de toute la fenêtre, WINDOWS s'arrangeant pour ne réafficher que ce qui a été détruit. Ce qui signifie aussi que vous devez savoir, à tout moment, de quoi est composée la fenêtre.
La classe TWindow d'ObjectWindows comprend une fonc­tion virtuelle appelée Paint qui traite le message WM_PAINT. Si vous redé­fi­nissez cette fonction, vous n'avez même pas à appeler BeginPaint et EndPaint car ces deux fonctions ont été appelées avant et après l'appel de Paint. Ainsi, vous n'avez pas à vous préoccuper des fonctions BeginPaint et EndPaint.
Plutôt que d'éparpiller vos fonctions d'affichage dans tout le programme, vous avez inté­rêt à les centraliser dans la fonction Paint. Vous serez ainsi en mesure de réafficher correctement la fenêtre à tout moment. Mais un pro­gramme n'appelle jamais directement une fonction de traitement de message. Un pro­gramme doit demander à WINDOWS d'envoyer un message, ce qui provoque l'exé­cu­tion de cette fonction.
La fonction InvalidateRect vous permet créer un rectangle invalide et de forcer WINDOWS à envoyer un message WM_PAINT :
void InvalidateRect(HWindow, lpRect, bErase);
lpRect désigne un pointeur sur une structure RECT qui contient les coordonnées du rectangle à inva­li­der. Si l'argument fErase vaut TRUE, WINDOWS efface le fond de la fenêtre avant d'envoyer le message WM_PAINT à la fenêtre.
Dans le prochain article, nous verrons comment afficher des dessins (bitmap en anglais) et utiliser la technique pour réaliser des affichages originaux, même de texte.

-------------


BBS
Avec le déménagement de la rédaction vers Zaventem, avec la disparition de CM BBS Leuven, quelques réaménagements s'imposaient. Les journalistes free-lance désireux d'uploader leurs articles à la rédaction frôlaient la crise nerveuse à force de tomber sur des lignes occupées. Le sysop de CM-rédaction devant tout à la fois écrire des articles, participer aux conférences de presse, assurer la maintenance du BBS et répondre aux lecteurs était à la limite du surmenage. Quand à notre pauvre ligne téléphonique, elle était plus que saturée. La rédaction de CM garde un BBS accessible via le nouveau numéro 02/725 59 07. Son but primordial est de permettre aux lecteurs de contacter rapidement un des membres de la rédaction ou de télécharger les quelques logiciels shareware présentés dans le magazine. Nous de sommes pas en mesure, faute de temps, de proposer un grand nombre de messageries ou de programmes téléchargeables ni d'offrir aux débutants en télématique aide ou support technique ni de garantir une réponse systématique à toutes les questions qui nous sont posées.
Pour assurer un meilleur service, nous avons fait appel à la société Infoboard Telematics s.a. Disposant d'un impressionnant nombre de lignes téléphoniques en cascade, InfoBoard est probablement le seul BBS de Belgique à disposer d'un sysop professionnel en la personne de Johan Celis. InfoBoard entend bien rencontrer en Belgique le même succès que le BBS frère InfoBoard Hollande qui est de loin le plus gros BBS Européen en nombre d'utilisateurs. InfoBoard propose toute une série de services classiques : téléchargement de logiciels ( plus de 5 gigabytes ), jeux en ligne, support technique, messageries et SIG (Special Interest Group), courrier électronique. En cours d'implémentation pour l'instant, on notera les passerelles avec le réseau Internet, le shopping électronique et surtout le Picture-BBS. Grâce à une technique de compression fractale, l'utilisateur pourra en quelques secondes télécharger des images de qualité photographique qui seront affichées sur son écran au moyen d'un Viewer supportant le format FIF (Fractal Image Compression). Nous reviendrons en détail le mois prochain sur les services Infoboard.
InfoBoard Telematics s.a.

Buro & Design Center

Esplanade du Heysel

1020 Bruxelles

Tél 32 2 475 22 99

BBS 32 2 475 29 29


------------
Le livre du mois
AutoFormation MS-DOS 6.0

Jean-Philippe Elie

Paris, Editions Micro-Application, 1993
Notre découverte du livre "AutoFormation MS-DOS 6.0" a failli s'interrompre à la page 16 lorsque l'auteur, présentant les différents composants d'un ordinateur, décrit un disque dur, à la capacité de 40 MB et plus, agrémenté d'une photo de HD remontant au paléolithique. Nous avons d'abord cru avoir affaire à un ouvrage remontant à la période gallo-romaine et vaguement remis au goût du jour. Pourtant, il faut vite se rendre à l'évidence, le livre de JP Elie est d'actualité et couvre de manière très didactique l'ensemble des nouvelles fonctionnalités du MS-DOS 6.0. Deux chapitres, "Répertoires" et "Manipuler des fichiers" couvrent les notions de base d'un système d'exploitation. La stratégie adoptée est intéressante : pour chaque fonction, l'auteur présente en parallèle la ligne de commande à taper à l'invite du Dos et son équivalent sous DosShell, l'interface utilisateur qui se superpose au Dos depuis la version 4.0. Un chapitre entier familiarise le lecteur avec le concept de backup et de sauvegarde des données du disque dur. L'ouvrage s'attelle ensuite à l'étude approfondie des commandes propres aux fichiers Batch. Il est accompagné d'une disquette regroupant un nombre important d'utilitaires fournis à titre d'exemples. Dommage que l'auteur n'ait pas toujours pris la peine de vérifier leur fonctionnement. Page 199, Elie propose un astucieux Clavier.Bat affectant une commande Dos à une touche de fonction. Dans l'exemple proposé, "clavier 1 dir /p", le /P est superbement ignoré.

Le dernier chapitre est voué à une tâche par trop ambitieuse : initier le lecteur au langage de programmation QBasic en 27 malheureuses pages.

Bien plus intéressantes sont les volumineuses annexes dédiées à l'installation du Dos 6, au paramétrage de config.sys ou à l'optimisation de la mémoire avec MemMaker.

La rédaction toute entière s'interroge encore sur le sens de cette phrase page 292 : "Un lecteur compressé ( avec DoubleSpace ) ne peut plus être décompressé sans entraîner la perte de ces fichiers... réfléchissez bien avant de lancer DoubleSpace". On s'étonnera encore que DoubleSpace ait si mauvaise réputation ! Réfléchissez bien avant d'acheter ce bouquin !



1     'DUNE' opsnorren, ik geloof dat het ShareWare is, en eens uitproberen bij mij thuis.





De database wordt beschermd door het auteursrecht ©opleid.info 2019
stuur bericht

    Hoofdpagina