Projectes clàssics - El mode tradicional




Per tal de crear un projecte clàssic, trieu una de les opcions clàssiques. Els projectes clàssics no són visuals, és a dir, són programes tradicionals d'assemblador, on s'ha d'escriure tot el codi i generar el projecte com a qualsevol altre IDE. Tot i així, l'Easy Code ofereix alguns avantatges que fan més fàcil la vostra feina, per la qual cosa cal que tingueu en compte algunes consideracions per tal d'evitar errors:

No cal incloure el fitxer WINDOWS.INC, atès que l'Easy Code SEMPRE l'inclou internament perquè és necessari per a les aplicacions Windows de 32 bits. Si el projecte és de tipus driver, el fitxer WINDOWS.INC no s'inclou MAI perquè es produïrien múltiples errors en temps de compilació. Els projectes driver només inclouen els seus propis fitxers inc.

Els procediments són globals a tot el projecte (a menys que siguin Private) per tal que pugueu invocar-los des de qualsevol altre mòdul sense haver d'escriure ni una sola lletra de codi. Si voleu que un procediment només "sigui visible" dins del mòdul en el que es troba, simplement feu-lo privat (Proc Private).

Opcionalment, les variables també poden ser globals a tot el projecte (vegeu Propietats del projecte) sense haver d'escriure ni una sola lletra de codi.

Els prototips de tots els procediments del projecte (Protos), Public o Private, són escrits internament per l'Easy Code, per tant, no cal que us en preocupeu.

Quan treballeu amb projectes exe, dll i consola, els recursos de la vostra aplicació poden fer-se a l'Editor de Recursos d'una manera molt fàcil. L'Editor de Recursos no està disponible per les llibreries estàtiques (projectes lib) per què no poden tenir recursos.

També podeu afegir un fitxer extern de Recursos compilats (*.res) generat fora de l'entorn de l'Easy Code. Si ho feu, com que només es pot enllaçar un fitxer de recursos a l'aplicació, tingueu en compte les següents consideracions:

- Tots els recursos de l'Editor de Recursos de l'Easy Code seran ignorats.
- L'Easy Code només accepta un fitxer extern de recursos compilats (*.res).
- Els fitxers de text amb extensió *.rc (recursos no compilats) NO SÓN acceptats per l'Easy Code, excepte per a ser importats.
- El fitxer de recursos externs *.res afegit ha d'estar a la carpeta Res del directori del projecte.

Quan es desa un projecte per primera vegada, l'Easy Code crea una carpeta anomenada Res dins del directori del projecte. Totes les imatges i altres fitxers relacionats amb els recursos (a més del fitxer extern *.res, si n'afegiu un) han d'estar a la carpeta Res, per tal que l'Easy Code els pugui trobar quan generi el projecte. Si no, es poduïran errors i el projecte no serà generat.

Si voleu utilitzar el control Rich Edit o els "Windows Common controls", marqueu el quadre de verificació corresponent a les Propietats del projecte i els botons relacionats seran visibles a la caixa d'eines.

El quadre de verificació Manifest.xml indica si s'activaran els nous "comon controls" que es troben disponibles des del Windows XP i posteriors. Per a més informació, consulteu el tòpic Incloent un Manifest al projecte.


IMPORTANT:
Com que només es pot enllaçar un fitxer de recursos a una aplicació, si afegiu un fitxer extern de recursos compilats (*.res), l'Easy Code entendrà que és aquest fitxer el que s'ha d'enllaçar. Conseqüentment, tots els recursos existents al seu Editor de Recursos (si n'hi ha algun) seran ignorats.

Per tal d'evitar errors no desitjats, tots els fitxers que es necessiten per a generar un projecte, incloënt-hi els fitxers necessaris per les aplicacions del Windows (kernel32.inc, user32.inc, kernel32.lib, user32.lib, etc.), s'haurien d'afegir al projecte mitjançant l'interfície de l'Easy Code (millor que incloure'ls al codi) utilitzant els següents menús:

Fitxers Include (*.inc) Utilitzeu el menú Projecte-->Afegeix fitxers Include (*.inc;.h)
Fitxers Llibreria (*.lib) Utilitzeu el menú Projecte-->Afegeix fitxers Llibreria (*.lib)
Fitxers de recursos compilats (*.res) Utilitzeu el menú Projecte-->Afegeix recursos externs (*.res)
Fitxer de Definició (*.def) Utilitzeu el menú Projecte-->Afegeix un fitxer de Definició (*.def)


No cal que escribiu les directives .model i option casemap al vostre codi (si ho feu, veureu un "WARNING" a l'hora de compilar). La interfície de l'Easy Code sempre afegeix internament les sentències següents (necessàries per les aplicacions Windows de 32 bits):

.model flat, stdcall
option casemap:none

No cal que escriviu la directiva ALIGN dins del codi per què l'Easy Code sempre l'escriu internament. El valor per aliniar el codi i les dades serà el que hagiu indicat a l'ítem Aliniació de les Propietats del projecte.

No cal que escriviu cap de les directives .386, .486 o .586 per què l'Easy Code sempre ho fa internament. La directiva corresponent serà la que s'hagi indicat a l'ítem Processador de les Propietats del projecte.

Els fitxers Include i Llibreria (*.inc i *.lib) sempre es busquen als següents directoris:

- Al directori del projecte
- Als directoris Include o Lib de les carpetes del Masm (indicats al menú Eines-->Configuració)
- Al directori Include de les carpetes de l'Easy Code (EasyCode.Ms)

Per tant, tots els fitxers Include i Llibreria que es necessitin han de ser afegits amb les corresponents opcions de menú, i han d'estar ubicats en algun dels directoris especificats. Qualsevol altre fitxer necessari s'ha d'afegir al projecte i s'ha de posar al directori del projecte (excepte els fitxers d'imatge, fitxers de recursos externs *.res, i altres fitxers relacionats amb els recursos, que han d'estar al subdirectori Res).

Quan genereu Llibreries estàtiques (projectes lib) i/o Llibreries d'enllaç dinàmic (projectes dll), podeu afegir un fitxer de definició (*.def). Si ho feu, recordeu que només es pot afegir un fitxer de definició a un projecte, i que aquest fitxer també ha d'estar al directori del projecte.

El nom final de l'executable, llibreria dinàmica, llibreria estàtica, fitxer objecte COFF o driver, serà sempre el nom del projecte més l'extensió corresponent (exe, dll, lib, obj o sys). Per exemple, un projecte anomenat Projecte1 serà Projecte1.exe, Projecte1.dll, Projecte1.lib, Projecte1.obj o Projecte1.sys, depenent del tipus de projecte. Si voleu programar un Driver NT clàssic (sys), llegiu atentament Programació de controladors NT (drivers).

Quan es crea un projecte clàssic nou, l'Easy Code afegeix automàticament un mòdul anomenat Module1. Podeu afegir tants mòduls (nous o existents) com vulgueu, utilitzant els següents menús:

Projecte-->Afegeix un Mòdul
Projecte-->Afegeix un fitxer existent

A més, sempre s'inclouen per defecte els següents fitxers (excepte en projectes de tipus driver):

Kernel32.inc
User32.inc
Kernel32.lib
User32.lib


Windows.inc també s'inclou sempre per defecte (excepte en projectes de tipus driver). Si voleu incloure el fitxer Macros.asm, simplement marqueu l'opció corresponent a les
Propietats del projecte.

Les aplicacions senzilles no necessiten res més. De tota manera, si utilitzeu funcions de l'API, p.e. del fitxer gdi32.dll, haureu d'afegir els fitxers *.inc i *.lib corresponents.

Quan afegeiu mòduls existents, haurien d'haver estats fets amb l'Easy Code per tal d'evitar problemes. Tot i així, en molts casos, els fitxers d'assemblador (*.asm), que no hagin estat creats per l'Easy Code, es carregaran sense problemes.

Quan dissenyeu quadres de diàleg ("dialog boxes") a l'Editor de Recursos, podeu posar-hi diferents controls a dins. Per tenir una relació dels controls disponibles vegeu Objectes Control.

Per tal d'il·lustrar tot el que aquí s'ha dit, vegeu els exemples que vénen amb l'Easy Code (localitzats a la carpeta Examples del directori de l'Easy Code). Les aplicacions EasyCalc, GeneSys i RSEditor (projectes clàssics) han estat fetes totalment amb l'Easy Code i utilitzen tot l'estil de programació que s'ha vist en aquest capítol.

OBSERVACIONS: Als projectes clàssics heu d'escriure tot el codi, per tant, haureu d'ocupar-vos de les directives necessàries (excepte les que s'han esmentat anteriorment), i de desar els registres Ebx, Edi i Esi (tal com exigeix el Windows), per tal de compilar i enllaçar sense errors.

IMPORTANT: Com que l'Easy Code ignora la directiva Option Proc, els procediments són sempre Public per defecte si no estan explícitament declarats com a Private. Si us plau vegeu la secció Codi i Dades: Privat o Públic.