Sunteți pe pagina 1din 11

Crearea unei aplicaii Windows

VC++ nu compileaz numai cod ci i genereaz cod. Pentru generarea unei aplicaii se folosete AppWizard.
n primul rnd aici se lucreaz cu proiecte. Un proiect poate conine mai multe aplicaii.
Pentru a crea un proiect om folosi comenzile File->New->Projects. !in lista prezentat "n pagina #ta$%ul& Pro'ects
om selecta MFC AppWizard (EXE)( selectm locul unde a fi memorat pe )!! i apoi completm numele
proiectului. !up acest lucru a tre$ui s completm o serie de informaii grupate pe etape.
Etapa 1. Tip aplicaie
n etapa 1 #pas *& om selecta tipul aplicaiei #se alege interfaa cu utilizatorul&. Aem urmtoarele posi$iliti+
, aplicaie single document interface #-!.&( are numai un document desc/is la un moment dat. Cnd
selectm 0ile%1,pen( fiierul e2istent i care este desc/is a fi "nc/is "nainte ca s se desc/id noul
document.
, aplicaie multiple document interface #3!.&( cum ar fi 42cel sau Word( poate desc/ide mai multe
documente odat. !ac dorim izualizri multiple pentru un document a tre$ui s construim o aplicaie
3!..
, aplicaie dialog-based( cum ar fi utilitarul C/aracter 3ap. Aplicaiile nu au meniu.
OBSE!"#$E%% Aplicaiile $azate pe dialog sunt diferite de cele de tip -!. sau 3!..
Vor fi tratate "n mod separat.
3ai e2ist un c/ec5$o2 care ne d posi$ilitatea de a indica dac dorim suport pentru ar/itectura !ocument6Vie7.
,piunea se folosete "n special pentru portarea aplicaiilor dintr%un alt sistem de dezoltare. 8u o om folosi.
Etapa &. Ba'e de date
n aceast etap om alege nielul pentru suportul $azelor de date.
42ist patru posi$iliti+
Pentru aplicaii fr $aze de date om selecta None.
!ac dorim s aem acces la $aze de date dar nu dorim s derim izualizarea din CFormView sau s nu
aem meniu Record om selecta (eader Files Onl).
!ac dorim s derim izualizarea din CFormView i s aem meniul Record dar nu dorim s
serializm documentul( om selecta *ata+ase !iew Wit,out File Support.
!ac dorim suport pentru $aze de date i "n plus dorim i salarea documentului om selecta *ata+ase
!iew Wit, File Support.
!ac selectm ultima opiune( a tre$ui s indicm " sursa de date 9 $utonul *ata Source.
Etapa -. Suport pentru docu.ente co.puse
:e/nologia Actie; i ,<4 este referit ca fiind te/nologia documentului compus #compound document
technology)
n aceast etap e2ist cinci posi$iliti+
!ac nu scriem o aplicaie Actie;( alegem None.
*
!ac dorim o aplicaie care s conin o$iecte Actie; "nglo$ate sau legate( cum ar fi aplicaia Word(
alegem Container.
!ac dorim ca aplicaia noastr s furnizeze o$iecte( care pot fi "nglo$ate( pentru alte aplicaii( dar aplicaia
s nu poat fi e2ecutat separat #stand alone&( om alege /ini Ser0er.
!ac dorim ca aplicaia noastr s furnizeze o$iecte( care pot fi "nglo$ate( pentru alte aplicaii( i aplicaia
s poat fi e2ecutat separat #stand alone&( om alege Full Ser0er.
!ac dorim ca aplicaia s "ncorporeze opiunile = i > om selecta Bot, Container and Ser0er.
!ac alegem suport pentru documentele compuse om aea i suport pentru fiiere compuse #compound files).
0iierele compuse conin unul sau mai multe o$iecte Actie; i sunt salate "ntr%un mod special astfel "nct un
o$iect poate fi modificat fr a rescrie "ntregul fiier. Pentru acest lucru facem o selecie pe unul din $utoanele radio
1es2 Please( sau No2 T,an3 1ou.
:ot "n aceast pagin ne /otrm dac aplicaia suport automatizare sau a folosi controale Actie;.
OBSE!"#$E% !ac dorim ca aplicaia s fie un control Actie;( nu tre$uie s crem
o aplicaie .e2e o$inuit. Crearea controlului Actie; se face selectnd o alt opiune
din Pro'ects.
Etapa 4. Opiuni pentru inter5a6. "lte Opiuni
Urmtoarele opiuni afecteaz modul de afiare al interfeei+
!oc"ing #oolbar. AppWizard pregtete un tool$ar. Acesta poate fi editat #adugare( modificare( tergere&.
$nitial %tatus &ar. AppWizard creaz o $ar de stare care afieaz mesa'ele ataate comenzilor din meniu
sau alte mesa'e specifice aplicaiei.
'rinting and 'rint 're(ie). Aplicaia a aea opiunile Print i Print Preie7 din meniul 0ile( i o parte
din codul necesar a fi generat de AppWizard.
Conte*t-%ensiti(e +elp. 3eniul )elp a aea opiunile .nde2 i Using )elp( i o parte din codul necesar
pentru a fi implementat )elp a fi generat de AppWizard. Aceast decizie este dificil de luat mai trziu
pentru c pri din cod sunt generate "n dierse locuri din cadrul aplicaiei.
,! Controls. Aplicaia a arta ca o aplicaie o$inuit Windo7s ?@. !ac nu selectm aceast opiune(
$o2ele de dialog or aea $ac5ground al$ i nu or fi um$re "n 'urul $o2elor de editare( c/ec5$o2%urilor i
alte controale.
MA'$(Messaging A'$). Aplicaia a aea posi$ilitatea de trimite fa2%uri( email%uri i alte mesa'e.
Windo)s %oc"ets. Aplicaia a putea accesa .nternet%ul "n mod direct( folosind protocoale ca 0:P i )::P
#protocolul World Wide We$&.
Putem seta de asemenea numrul fiierelor din lista 3AU. .mplicit acest numr este >.
Butonul Adanced actieaz dou ta$%uri #!ocument :emplate -trings( Windo7 -tCles& unde putem sc/im$a
numele aplicaiei( titlul ferestrei cadru( e2tensia fiierelor folosite "n 0ile%1,pen( etc.
Prporpietile care pot fi setate pentru ferestrele cadru+
#hic" Frame. !ac nu o selectm se preine redimensionarea.
Minimize &o*.
Ma*imize &o*.
%ystem Menu.
Minimized Cadrul este minimizat cnd aplicaia este lansat "n e2ecuie. Pentru aplicaiile -!.( aceast
opiune a fi ignorat cnd aplicaia ruleaz su$ Windo7s ?@.
D
Ma*imized. :/e frame is ma2imized 7/en t/e application starts. 0or -!. applications( t/is option 7ill $e
ignored 7/en t/e application is running under Windo7s ?@.
"lte Opiuni
!orim $i$lioteca 30C s fie ElegatF ca un !<< parta'a$il sau "n mod staticG Un !<< este o colecie de funcii
utilizate de diferite aplicaii. 0olosirea !<<%urilor face ca programul s fie mai mic dar mai greu de instalat. !ac
legtura este static crete mrimea programului dar nu mai sunt pro$leme deose$ite cu instalarea.
Etapa 7. Nu.ele 5i8ierelor 8i al claselor
Ultima etap sta$ilete numele claselor i fiierelor create de AppWizard. Putem sc/im$a aceste nume. !ac
aplicaia include o clas pentru izualizare( care "n mod o$inuit este deriat din CVie7( putem sc/im$a clasa de
$az( de e2emplu C-collVie7 sau C4ditVie7 care ofer o funcionalitate sporit izualizrii.
Vom apsa $utonul 0inis/ pentru terminarea generrii aplicaiei.
Urmeaz e2emple de creare aplicaii pentru fiecare tip "n parte.
Crearea *99-urilor2 "plicaiilor de tip Consol6
Alte opiuni ce se regsesc "n ta$%ul Pro'ects+
A:< C,3 AppWizard
Custom AppWizard
!ata$ase Pro'ect
!e-tudio Add%.n Wizard
42tended -tored Procedure AppWizard
.-AP. 42tension Wizard
3a5efile
30C Actie; ControlWizard
30C AppWizard #dll&
UtilitC Pro'ect
Win=D Application
Win=D Console Application
Win=D !Cnamic <in5 <i$rarC
Win=D -tatic <i$rarC
"T9 CO/ "ppWi'ard
A:< este Actie :emplate <i$rarC( i este utilizat pentru a scrie un mic control Acite;.
Custo. "ppWi'ard
-e folosete "n general pentru a crea noi proiecte din altele e2istente #se copie cod( /elp( etc.&.
*ata+ase Project
!ac aem instalat 4nterprise 4dition of Visual C++( putem crea un proiect de $aze de date.
=
*e0Studio "dd-$n Wi'ard
Add%ins lucreaz e2act ca macro%urile care automatizeaz !eeloper -tudio( dar acestea sunt scrise "n C++ sau alt
lim$a' de programareH macro%urile sunt scrise "n VB-cript. Acestea folosesc automatizarea pentru a manipula
!eeloper -tudio.
$S"P$ E:tension Wi'ard
.-AP. este pentru .nternet -erer AP. i se refer la funcii pe care le putem apela pentru a interaciona cu un serer
3icrosoft .nternet .nformation -erer.
/a3e5ile
!ac dorim s crem un proiect care este utilizat cu un alt utilitar ma5e diferit de !eeloper -tudio( om selecta
aceast opiune. 8u se genereaz cod.
/FC "cti0e; ControlWi'ard
Acti(eX controls sunt controale pe care lescriem pentru a fi utilizate "ntr%un dialog din VC++( o form din VB sau
c/iar o pagin We$. Aceste controale "nlocuiesc controalele VB;.
/FC "ppWi'ard <*99=
!ac dorim s colectm un numr de funcii "ntr%un !<<( i aceste funcii folosesc clase din 30C( om selecta
aceast opiune. !ac funciile nu folosesc 30C alegem Win=D !Cnamic <in5 <i$rarC.
Win-& "pplication
-e creaz o aplicaie o$inuit "n C++.
Win-& Console "pplication
, aplicaie consol arat ca o aplicaie o$inuit !,-.
Win-& *)na.ic 9in3 9i+rar)
!ac dorim s colectm un numr de funcii "ntr%un !<<( i aceste funcii folosesc clase din 30C( om selecta
aceast opiune. !ac funciile nu folosesc 30C alegem Win=D !Cnamic <in5 <i$rarC.
Win-& Static 9i+rar)
Aplicaia a "ncorpora funciile pe care folosete dintr%un !<<.
>
>nele?erea codului ?enerat de "ppWi'ard
"plicaie S*$
, aplicaie -!. are meniu pe care utilizatorul poate s%l foloseasc pentru a desc/ide documente i s lucreze cu ele.
AppWizard genereaz cinci clase. 8umele proiectului este 0irst-!..
CA$out!lg( o clas de dialog pentru A$out
C0irst-!.App( o clas CWinApp pentru "ntraga aplicaie #o$iectul aplicaie& application
C0irst-!.!oc( o clasa document
C0irst-!.Vie7( o clas izualizare
C3ain0rame( o clas cadru
Fi8ierul FirstS*$., @ pentru aplicaie
// FirstSDI.h : main header file for the FIRSTSDI application
//
#if !defined(F!"FIRSTSDI"#""CDF$%D%"%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"/
#define F!"FIRSTSDI"#""CDF$%D%"%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"
#if "0SC"V.R 12 '(((
#pra3ma once
#endif // "0SC"V.R 12 '(((
#ifndef ""F!4I+"#""
#error incl5de 6stdaf7.h8 9efore incl5din3 this file for :C#
#endif
#incl5de ;reso5rce.h; // main s<m9ols
/////////////////////////////////////////////////////////////////////////////
// CFirstSDIpp:
// See FirstSDI.cpp for the implementation of this class
//
class CFirstSDIpp : p59lic C4inpp
=
p59lic:
CFirstSDIpp(/>
// ?@errides
// Class4iAard 3enerated @irt5al f5nction o@errides
//==F!"VIRT-,(CFirstSDIpp/
p59lic:
@irt5al )??, InitInstance(/>
//BBF!"VIRT-,
// Implementation
//==F!"0SC(CFirstSDIpp/
af7"ms3 @oid ?npp9o5t(/>
// +?T. D The Class4iAard will add and remo@e mem9er f5nctions here.
// D? +?T .DIT what <o5 see in these 9locEs of 3enerated code!
//BBF!"0SC
D.C,R."0.SSC."0:(/
B>
/////////////////////////////////////////////////////////////////////////////
//==F!"I+S.RT",?CTI?+BB
// 0icrosoft De@eloper St5dio will insert additional declarations
// immediatel< 9efore the pre@io5s line.
@
#endif //!
defined(F!"FIRSTSDI"#""CDF$%D%"%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"/
#ifndef acioneaz ca "n codul care urmeazFi are ca efect includerea fiierului ce urmeaz o singur dat.

#ifndef test"h
#incl5de ;test.h;
#define test"h
#endif
Ipragma once este de asemenea pentru a preeni definiiile multiple dac acest fiier este inclus de dou ori.
Clasa C0irst-!.App deriat din CWinApp( furnizeaz cea mai mare funcionalitate a aplicaiei. $nstan-a
acestei clase constituie obiectul aplica-ie. AppWizard a generat anumite funcii pentru aceast clas care reacoper
funciile motenite din clasa de $az. Aceast seciune de cod "ncepe cu 66,errides. !e asemenea sunt generate
annumite comentarii care a'ut la "nelegerea codului. n aceast seciune om gsi declaraia pentru funcia
InitInstance(/. Urmtoarea seciune de cod este pentru /arta de mesa'e.
AppWizard genereaz cod pentru constructorul C0irst-!.App( i funciile .nit.nstance#& i ,nAppA$out#& "n fiierul
firstsdi.cpp. Codul generat pentru constructor arat astfel+
CFirstSDIpp::CFirstSDIpp(/
=
// T?D?: add constr5ction code hereF
// :lace all si3nificant initialiAation in InitInstance
B
Ca regul general tre$uie reinu c 3icrosoft construiete o$iectele "n doi pai. -e creaz o$iectul unde se scrie
cod care sigur se e2ecut corect( iar iniializrile se fac cu a'utorul unei funcii mem$ru( care poate indica dac
acestea au fost efectuate cu succes sau nu. Constructorul nu "ntoarce nici o alore( construiete o$iectul.
n continuare prezentm listingul pentru CFirstS*$"pp%%$nit$nstance<=
)??, CFirstSDIpp::InitInstance(/
=
f7.na9leControlContainer(/>
// Standard initialiAation
// If <o5 are not 5sin3 these feat5res and want to red5ce the siAe
// of <o5r final e7ec5ta9leF <o5 sho5ld remo@e from the followin3
// the specific initialiAation ro5tines <o5 don8t need.
#ifdef "F!D,,
.na9le$dControls(/> // Call this when 5sin3 0FC in a shared D,,
#else
.na9le$dControlsStatic(/> // Call this when linEin3 to 0FC staticall<
#endif
// Chan3e the re3istr< Ee< 5nder which o5r settin3s are stored.
// Go5 sho5ld modif< this strin3 to 9e somethin3 appropriateF
// s5ch as the name of <o5r compan< or or3aniAation.
SetRe3istr<He<("T(;,ocal pp4iAardDCenerated pplications;//>
,oadStd:rofileSettin3s(/> // ,oad standard I+I file options (incl5din3
// 0R-/
// Re3ister the application8s doc5ment templates. Doc5ment templates
// ser@e as the connection 9etween doc5mentsF frame windowsF and @iews.
J
CSin3leDocTemplateI pDocTemplate>
pDocTemplate 2 new CSin3leDocTemplate(
IDR"0I+FR0.F
R-+TI0."C,SS(CFirstSDIDoc/F
R-+TI0."C,SS(C0ainFrame/F // main SDI frame window
R-+TI0."C,SS(CFirstSDIView//>
ddDocTemplate(pDocTemplate/>
// :arse command line for standard shell commandsF DD.F file open
CCommand,ineInfo cmdInfo>
:arseCommand,ine(cmdInfo/>
// Dispatch commands specified on the command line
if (!:rocessShellCommand(cmdInfo//
ret5rn F,S.>
// The one and onl< window has 9een initialiAedF so show and 5pdate it.
m"p0ain4ndD1Show4indow(S4"S#?4/>
m"p0ain4ndD1-pdate4indow(/>
ret5rn TR-.>
B
Comentariile sunt incluse de AppWizard. .nit.nstance este apelat prima la lansarea apliaciei.
f7.na9leControlContainer(/ permite aplicaiei de a conine controale Actie;. -e permite afiarea
controalelor cu aspect =!.
-e completeaz regitrii su$ care a fi "nregistrat aceast aplicaie.
InitInstance(/ "nregistreaz "n continuare a$lonul de document care este -!. "n acest caz.
InitInstance(/ creaz un o$iect id #neiniializat& CCommand,ineInfo pentru a menine parametrii pasai
aplicaiei prin linia de comand cnd aceasta a fost lansat "n e2ecuie i apoi apeleaz :arseCommand,ine(/
pentru a completa acest o$iect. n final se proceseaz linia de comand printr%un apel la
:rocessShellCommand(/. !e e2emplu dac lansm aplicaia din linia de comand astfel+ FirstS*$ 5oo+le(
aplicaia a desc/ide fiierul fooble.
Parametrii din linia de comand pe care :rocessShellCommand(/ "i suport sunt urmtorii+
Para.eter "ction
8one -tart app and open ne7 file.
0ilename -tart app and open file.
6p filename -tart app and print file to default printer.
6pt filename printer drier port -tart app and print file to t/e specified printer.
6dde -tart app and a7ait !!4 command.
6Automation -tart app as an ,<4 automation serer.
64m$edding -tart app to edit an em$edded ,<4 item.
!ac dorim s implementm o alt comportare( om construi o clas deriat din CCommand<ine.nfo pentru a
pstra linia de comand( i apoi rescriem funciile CWinApp++ ParseCommand<ine#& i
CWinApp++Process-/ellCommand#&.
K
-e completeaz aria$ila m"p0ain4nd cu adresa o$iectului aplicaiei( aria$il ce este defint"n C4inThread(
ce este clas de $az pentru C4inpp.
<a sfrit funcia "ntoarce :AU4 pentru a indica c restul aplicaiei poate rula.
)arta de mesa'e indic c funcia ?npp9o5t(/ a trata un mesa'. Care esteG Va trata comanda de meniu care
are .!%ul .!LAPPLAB,U:. Acest .! corespunde comenzii de meniu )elp%1A$out.
!escrierea /rii de mesa'e este+
).CI+"0.SSC."0:(CFirstSDIppF C4inpp/
//==F!"0SC"0:(CFirstSDIpp/
?+"C?00+D(ID"::")?-TF ?npp9o5t/
// +?T. D The Class4iAard will add and remo@e mappin3 macros here.
// D? +?T .DIT what <o5 see in these 9locEs of 3enerated code!
//BBF!"0SC"0:
// Standard fileD9ased doc5ment commands
?+"C?00+D(ID"FI,."+.4F C4inpp::?nFile+ew/
?+"C?00+D(ID"FI,."?:.+F C4inpp::?nFile?pen/
// Standard print set5p command
?+"C?00+D(ID"FI,.":RI+T"S.T-:F C4inpp::?nFile:rintSet5p/
.+D"0.SSC."0:(/
,nAppA$out#& arat aa+
@oid CFirstSDIpp::?npp9o5t(/
=
C9o5tDl3 a9o5tDl3>
a9o5tDl3.Do0odal(/>
B
-e construiete o$iectul a$out!lg( care este o $o2 de dialog( i apoi se e2ecut acest dialog.
"plicaia /ultiple *ocu.ent $nter5ace
, asemenea aplicaie are meniu i permite utilizatorului de a desc/ide mai multe documente odat. AppWizard a
generat cinci clase. 8umele proiectului este 0irst3!.. Clasele generate sunt+
CA$out!lg( o clas de dialog pentru A$out
C0irst3!.App( o clas CWinApp pentru aplicaie
C0irst3!.!oc( o clas document
C0irst3!.Vie7( o clas pentru izualizare
C3ain0rame( o clas cadru
9istin? pentru First/*$.,
// First0DI.h : main header file for the FIRST0DI application
//
#if !defined(F!"FIRST0DI"#""CDF$%DJ."%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"/
#define F!"FIRST0DI"#""CDF$%DJ."%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"
#if "0SC"V.R 12 '(((
#pra3ma once
#endif // "0SC"V.R 12 '(((
#ifndef ""F!4I+"#""
#error incl5de 6stdaf7.h8 9efore incl5din3 this file for :C#
#endif
#incl5de ;reso5rce.h; // main s<m9ols
/////////////////////////////////////////////////////////////////////////////
// CFirst0DIpp:
M
// See First0DI.cpp for the implementation of this class
//
class CFirst0DIpp : p59lic C4inpp
=
p59lic:
CFirst0DIpp(/>
// ?@errides
// Class4iAard 3enerated @irt5al f5nction o@errides
//==F!"VIRT-,(CFirst0DIpp/
p59lic:
@irt5al )??, InitInstance(/>
//BBF!"VIRT-,
// Implementation
//==F!"0SC(CFirst0DIpp/
af7"ms3 @oid ?npp9o5t(/>
// +?T. D The Class4iAard will add and remo@e mem9er f5nctions here.
// D? +?T .DIT what <o5 see in these 9locEs of 3enerated code !
//BBF!"0SC
D.C,R."0.SSC."0:(/
B>
/////////////////////////////////////////////////////////////////////////////
//==F!"I+S.RT",?CTI?+BB
// 0icrosoft De@eloper St5dio will insert additional declarations immediatel<
// 9efore the pre@io5s line.
#endif //!
defined(F!"FIRST0DI"#""CDF$%DJ."%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"/
8ici o diferen fa de clasa de la aplicaia -!..
9istin? pentru CFirst/*$"pp%%$nit$nstance<=
)??, CFirst0DIpp::InitInstance(/
=
f7.na9leControlContainer(/>
// Standard initialiAation
// If <o5 are not 5sin3 these feat5res and want to red5ce the siAe
// of <o5r final e7ec5ta9leF <o5 sho5ld remo@e from the followin3
// the specific initialiAation ro5tines <o5 don8t need.
#ifdef "F!D,,
.na9le$dControls(/> // Call this when 5sin3 0FC in a shared D,,
#else
.na9le$dControlsStatic(/> // Call this when linEin3 to 0FC staticall<
#endif
// Chan3e the re3istr< Ee< 5nder which <o5r settin3s are stored.
// Go5 sho5ld modif< this strin3 to 9e somethin3 appropriateF
// s5ch as the name of <o5r compan< or or3aniAation.

SetRe3istr<He<("T(;,ocal pp4iAardDCenerated pplications;//>
,oadStd:rofileSettin3s(/> // ,oad standard I+I file options (incl5din3
// 0R-/
// Re3ister the application8s doc5ment templates. Doc5ment templates
// ser@e as the connection 9etween doc5mentsF frame windowsF and @iews.
C05ltiDocTemplateI pDocTemplate>
pDocTemplate 2 new C05ltiDocTemplate(
IDR"FIRST0TG:.F
R-+TI0."C,SS(CFirst0DIDoc/F
?
R-+TI0."C,SS(CChildFrame/F // c5stom 0DI child frame
R-+TI0."C,SS(CFirst0DIView//>
ddDocTemplate(pDocTemplate/>
// create main 0DI Frame window
C0ainFrameI p0ainFrame 2 new C0ainFrame>
if (!p0ainFrameD1,oadFrame(IDR"0I+FR0.//
ret5rn F,S.>
m"p0ain4nd 2 p0ainFrame>
// :arse command line for standard shell commandsF DD.F file open
CCommand,ineInfo cmdInfo>
:arseCommand,ine(cmdInfo/>
// Dispatch commands specified on the command line
if (!:rocessShellCommand(cmdInfo//
ret5rn F,S.>
// The main window has 9een initialiAedF so show and 5pdate it.
p0ainFrameD1Show4indow(m"nCmdShow/>
p0ainFrameD1-pdate4indow(/>
ret5rn TR-.>
B
Care sunt defereneleG 0olosind Win!iff le putem edea mai uor.
Aplicaia 3!. folosete C3ulti!oc:emplate
Aplicaia 3!. seteaz fereastra cadru i apoi o arat( ceea ce nu face o aplicaie -!..
Co.ponentele unei aplicaii +a'ate pe dialo?
AppWizard genereaz trei clase+
CA$out!lg( o clas dialog pentru A$out
C0irst!ialogApp( o clas CWinApp pentru "ntreaga aplicaie
C0irst!ialog!lg( o clas de dialog pentru "ntreaga aplicaie.
// FirstDialo3.h : main header file for the FIRSTDI,?C application
//
#if !
defined(F!"FIRSTDI,?C"#""CDF$%D)K"%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"/
#define F!"FIRSTDI,?C"#""CDF$%D)K"%&'%"''D(")(*C"((%(C%'$*""I+C,-D.D"
#if "0SC"V.R 12 '(((
#pra3ma once
#endif // "0SC"V.R 12 '(((
#ifndef ""F!4I+"#""
#error incl5de 6stdaf7.h8 9efore incl5din3 this file for :C#
#endif
#incl5de ;reso5rce.h; // main s<m9ols
/////////////////////////////////////////////////////////////////////////////
// CFirstDialo3pp:
// See FirstDialo3.cpp for the implementation of this class
//
class CFirstDialo3pp : p59lic C4inpp
=
p59lic:
CFirstDialo3pp(/>
// ?@errides
// Class4iAard 3enerated @irt5al f5nction o@errides
*N
//==F!"VIRT-,(CFirstDialo3pp/
p59lic:
@irt5al )??, InitInstance(/>
//BBF!"VIRT-,
// Implementation
//==F!"0SC(CFirstDialo3pp/
// +?T. D The Class4iAard will add and remo@e mem9er f5nctions here.
// D? +?T .DIT what <o5 see in these 9locEs of 3enerated code !
//BBF!"0SC
D.C,R."0.SSC."0:(/
B>
/////////////////////////////////////////////////////////////////////////////
//==F!"I+S.RT",?CTI?+BB
// 0icrosoft De@eloper St5dio will insert additional declarations immediatel<
// 9efore the pre@io5s line.
#endif // !defined(F!"FIRSTDI,?C"#""CDF$%D)K"%&'%"''D(")(*C"((%(C%'$*
L""I+C,-D.D"/
9istin? pentru C*ialo?17"pp%%$nit$nstance<=
)??, CFirstDialo3pp::InitInstance(/
=
f7.na9leControlContainer(/>
// Standard initialiAation
// If <o5 are not 5sin3 these feat5res and want to red5ce the siAe
// of <o5r final e7ec5ta9leF <o5 sho5ld remo@e from the followin3
// the specific initialiAation ro5tines <o5 don8t need.
#ifdef "F!D,,
.na9le$dControls(/> // Call this when 5sin3 0FC in a shared D,,
#else
.na9le$dControlsStatic(/> // Call this when linEin3 to 0FC staticall<
#endif
CFirstDialo3Dl3 dl3>
m"p0ain4nd 2 Mdl3>
int nResponse 2 dl3.Do0odal(/>
if (nResponse 22 ID?H/
=
// T?D?: :lace code here to handle when the dialo3 is
// dismissed with ?H
B
else if (nResponse 22 IDC+C.,/
=
// T?D?: :lace code here to handle when the dialo3 is
// dismissed with Cancel
B
// )eca5se the dialo3 has 9een closedF ret5rn F,S. so that <o5 e7it the
// applicationF rather than start the application8s messa3e p5mp.
ret5rn F,S.>
B
**