Eacaineee Ainoaea?noaaiiue Oieaa?neoao eiaie A.I. Ooiieaaa
Eaoaae?a aaoiiaoece?iaaiiuo nenoai ia?aaioee eioi?iaoeee e oi?aaeaiey
Iaaeaaaeaa A.E.
I?IA?AIIE?IAAIEA AeEss WINDOWS IA BORLAND C++
*anoue 1
NIAeA?AEAIEA
1.
Aaaaeaiea………………………………………………………
…………………………………………….. 3
2. Nicaeaiea i?inoaeoaai
i?eeiaeaiey…………………………………………………….
…………. 7
3. Eniieueciaaiea eeanna TFrameWindow aeey nicaeaiey aeaaiiai
ieia………………… 9
4. I?ia?aiie?iaaiea n oaaeeoeaie
ioeeeea………………………………………………………..
11
5. Auaiae a?aoeee a
Windows………………………………………………………..
…………………… 14
6. Iaiiaeaiea niaea?aeeiiai
ieia…………………………………………………………..
………….. 16
7. Nicaeaiea
iaith………………………………………………………….
………………………………… 18
8. Oi?aaeythuea
eiiiiiaiouWindows……………………………………………….
………………. 24
9. Aaiae e ?aaeaeoe?iaaiea
oaenoa…………………………………………………………
…………….. 29
I?eeiaeaiea. Eeannu
OWL……………………………………………………………
………………….. 32
1. Aaaaeaiea
Oeaeue aeaiiiai iiniaey – iaeaa/eoue onaiaiea i?ia?aiie?iaaiey aeey
Windows ia BORLAND C++ e niinianoaiaaoue ?ani?ino?aiaieth aeaeeioaee OWL
(Object Windows Library), eioi?ay oi?ioi i?iaeoiaia e eniieueciaaiea
eioi?ie yaii au?eniauaaao aeinoieinoaa iauaeoii-i?eaioe?iaaiiiai
i?ia?aiie?iaaiey – eieainoeyoeee, ianeaaeiaaiey e iieeii?oecia.
Iiniaea i?eaycaii e eaeoeeiiiiio eo?no “Oaoiieiaey i?ia?aiie?iaaiey”,
o?aaoy ciaiee eceiaeaiiuo ia eaeoeeyo iniia iauaeoii-i?eaioe?iaaiiiai
i?ia?aiie?iaaiey ia C++ e i?aaeiacia/aii eae ?oeiaiaenoai e eaai?aoi?iui
?aaioai ii yoiio eaeoeeiiiiio eo?no.
Iiniaea i?eaioe?iaaii ia iioaaiaoth ?ac?aaioeo ca eiiiuethoa?ii
ianeiaeiuo Windows-i?eeiaeaiee, a i?ioeanna eioi?ie inouanoaeyaony eo
enneaaeiaaiea iooai n?aaiaiey ?acee/iuo aa?eaioia ?aaeecaoeee, eciaiaiey
ia?aiao?ia /eaiia-ooieoeee e cia/aiee /eaiia-aeaiiuo eniieuecoaiuo
eeannia.
A nicaeaaaaiuo Windows-i?eeiaeaieyo eniieuecoaony i/aiue
iacia/eoaeueiay, ii aaciaay /anoue OWL aeaeeioaee, aeoeaiia onaiaiea
eioi?ie niinianoaoao niyoeth aa?uea?a, e, eae iaaeathony aaoi?u, auciaao
oaeiaieuenoaea io ia?aiai ciaeiinoaa n caaiaaaaoae ie? Windows.
1.1. Aaiae, ?aaeaeoe?iaaiea e caione Windows-i?eeiaeaiey
*oiau aaanoe enoiaeiue oaeno i?ia?aiiu, ioeiiieee?iaaoue e oaeaeaoue ia
ye?aia ieii Windows-i?eeiaeaiey, iaiaoiaeeii auiieieoue neaaeothuea
aeaenoaey:
1) Naeaeaeoa aeaieiie uae/ie eaaie eeaaeoe iuoe (eee iaaeaoea ENTER) ia
ieeoia?aiia Borland C++. Iiyaeony ieii eiiieeyoi?a BC4.
2) Uae/ie eaaie eeaaeoe iuoe ia yeaiaioa iaith Project (eee ia?aoiae a
no?ieo iaith iooai iaaeaoey F10, iiene e aunaa/eaaiea yeaiaioa Project n
iiiiuueth eeaaeo ( e (. ?ane?uoue Project n iiiiuueth eeaaeoe ENTER).
3) Uae/ie iuoueth ia eiiaiaea New project (eee aua?aoue aeaiiue ioieo
iaith n iiiiuueth eeaaeo ( e ( e iaaeaoue ENTER). A aeaeueiaeoai aeey
e?aoeinoe aoaeai aiai?eoue, /oi ioaeii auiieieoue eiiaiaeo Project|New
project (eiiaiaeo New project ec iaith Project).
Oaeei ia?acii, aoaeao auiieiaia eiiaiaea nicaeaiey iiaiai i?iaeoa e ia
ye?aia iiyaeony neaaeothuee aeeaeia.
aeey i?iniio?a eaoaeiaa.
5) Ainiieueciaaaoenue eeiaeeie i?ie?ooee, iaeoe eiy o?aaoaiiai eaoaeiaa
e naeaeaoue ia iai aeaieiie uae/ie eaaie eeaaeoe iuoe.
6) A iiea File Name aaanoe eiy i?iaeoa n ?anoe?aieai .ide, caoai
iaaeaoue ENTER.
e nieieoa oeaaeee rc e def a iiyaeaoainy aeeaeiaa Advanced Options,
caoai iaaeieoa OK.
8) A aeeaeiaa nicaeaiey i?iaeoa iaaeieoa eiiieo OK.
9) Naeaeaeoa aeaieiie uae/ie eaaie eiiieie iuoe ia eiaie oaeea n
?anoe?aieai cpp a ieia nicaeaiiiai i?iaeoa, a ?acoeueoaoa /aai ioe?iaony
ieii aeey ?aaeaeoe?iaaiey oaenoa i?ia?aiiu.
10) Aaaaeeoa enoiaeiue oaeno i?ia?aiiu.
11) Aeey eiiieeyoeee e auiieiaiey iaaeieoa Ctrl-F9.
12) Anee iieo/aiu niiauaiey ia ioeaeao, oi eni?aaueoa eo e i?iaaaeeoa
eiiieeyoeeth caiiai. Anee ioeaee ionoonoaotho, oi ia ye?aia iiyaeony
ieii Aaoaai Windows-i?eeiaeaiey. Inouanoaeoa aeeaeia n i?eeiaeaieai,
eniieuecoy iuoue.1.2. Iniiaiua i?eaiu ?aaeaeoe?iaaiey oaenoa a
eioaa?e?iaaiiie n?aaea BORLAND C++
1.2.1. Eiie?iaaiea e oaeaeaiea /anoe oaenoa a ieia ?aaeaeoe?iaaiey
Aeey eiie?iaaiey oaenoa ec iaeiie aai /anoe a ae?oaoth auiieiythony
neaaeothuea aeaenoaey:
1) Auaeaeeoue eiie?oaiue oaeno:
a) Iiaeaanoe eo?ni? e ia/aeo eiie?oaiiai oaenoa.
a) Iaaeaoue e oaea?aeeaaoue eeaaeoo Shift.
a) Eniieuecoy eeaaeoe oi?aaeaiey eo?ni?ii, auaeaeeoue oaeno.
a) Ioionoeoue Shift.
2) Caianoe auaeaeaiiue oaeno a aooa? iaiaia (Clipboard) iooai
iaeiia?aiaiiiai iaaeaoey Ctrl e Ins eee auiieiaiey eiiaiaeu Edit|Copy.
3) Ia?aaanoe eo?ni? e ianoo anoaaee oaenoa.
4) Ia?aianoe oaeno ec aooa?a a ?aaeaeoi? iooai iaeiia?aiaiiiai iaaeaoey
Shift e Ins eee auiieiaiey Edit|Paste.
1.2.2. Eiie?iaaiea niaea?aeeiiai ?aiaa nicaeaiiiai cpp-oaeea a ieii
?aaeaeoe?iaaiey
Aeey eiie?iaaiey auiieieoa neaaeothuea aeaenoaey:
1) Auiieieoa eiiaiaeo File|Open.
2) A iiyaeaoainy aeeaeiaiaii ieia auaa?eoa o?aaoaiue oaee e iaaeieoa OK.
Ioe?iaony ieii n niaea?aeeiui oeacaiiiai oaeea.
3) N iiiiuueth auoaiienaiiuo aeaenoaee auaeaeeoa o?aaoaiue o?aaiaio
oaenoa eee auiieieoa Edit|Select All aeey auaeaeaiey anaai oaenoa a ieia
?aaeaeoe?iaaiey.
4) Auiieieoa Edit|Copy eee iaaeieoa Ctrl-Ins aeey eiie?iaaiey
auaeaeaiiiai oaenoa a aooa? iaiaia.
5) Anee ioe?uoue oaee aieueoa ia ioaeai, cae?ieoa ieii. Yoi aeaeaaony
aeaieiui uae/eii eaaie eiiiee iuoe ia eiiiea nenoaiiiai iaith ieia.
Iiaeii naeaeaoue iaeei uae/ie iuoe e a iiyaeaoainy iaith aua?aoue Close.
6) Auiieieoa Edit|Paste eee iaaeieoa Shift-Ins aeey anoaaee oaenoa ec
aooa?a a ieii ?aaeaeoe?iaaiey.
2. Nicaeaiea i?inoaeoaai i?eeiaeaiey
Aeey onaiaiey ?aaiou n eiiieeyoi?ii BORLAND C++ nicaeaaeei ianeieueei
aa?eaioia i?inoaeoaai Windows-i?eeiaeaiey, eioi?ia nicaeaao ieii n
caaieiaeii. Caaieiaie ieia niaea?aeeo iaaeienue “Hello, Windows !” eee
“Hello, Hello !”. Ieii oaeaea niaea?aeeo eiiiee ieieiecaoeee e
iaeneiecaoeee, a oaeaea nenoaiiia iaith i?eeiaeaiey.
2.1. Nicaeaiea iauaeoa i?eeiaeaiey aioo?e ooieoeee OwlMain
I?e iaienaiee i?ia?aiiu aoaeai ?aaioaoue n eeannii TApplication e
ooieoeeae OwlMain. A aeaiiii aa?eaioa i?ia?aiiu iauaeo eeanna
TApplication nicaeaaony aioo?e ooieoeee OwlMain.
2.1.1. Enoiaeiue oaeno i?eeiaeaiey
#include
int OwlMain(int, char* [])
{
TApplication app(“Hello, Windows !”);
return app.Run();
}
2.1.2. Iiyniaiey e i?ia?aiia
Caaieiai/iue oaee owl\applicat.h niaea?aeeo iienaiea eeanna TApplication
(ni. ?acaeae 10.2.).
app – iauaeo eeanna TApplication. I?e nicaeaiee yoiai iauaeoa
eniieuecoaony iayaiue aucia eiino?oeoi?a, onoaiaaeeaathuaai oaeno
caaieiaea i?eeeaaeiiai ieia “Hello, Windows !”.
app.Run() – aucia /eaia-ooieoeee eeanna TApplication aeey iauaeoa app.
Ooieoeey TApplication::Run() caioneaao i?eeiaeaiea.
2.1.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea, oaaaeeaoenue a i?aaeeueiinoe
ooieoeeiie?iaaiey eiiiie iaeneiecaoeee e ieieiecaoeee ieia.
2) Ia?aaeaeiooue ieii a ae?oaia ianoi ye?aia.
3) Ieaaii eciaieoue aunioo e oe?eio ieia n iiiiuueth iuoe.
4) Cae?uoue i?eeiaeaiea.
5) Eciaieoue enoiaeiue oaeno i?eeiaeaiey, caiaiea caaieiaie ieia ia
“Hello, Hello !”. Oaaaeeoueny a iiyaeaiee ieia n iiaui caaieiaeii.
2.1.4. Iaiiiai aiaeeeneiai
an application – i?eeiaeaiea
to run – auiieiyoueny
a window – ieii
Windows – iacaaiea nenoaiu Windows
OWL – Object Windows Library – aeaeeioaea eeannia Windows
to include – aeeth/aoue
main – iniiaiie, aeaaiue
to return – aica?auaoue, aica?auaoueny
2.2. Aeeiaie/aneia nicaeaiea iauaeoa eeanna TApplication
A yoii aa?eaioa i?eeiaeaiey iauaeo eeanna TApplication aeeiaie/anee
nicaeaaony a naiaiaeiie iaeanoe iaiyoe.
2.2.1. Enoiaeiue oaeno i?eeiaeaiey
#include
int OwlMain(int, char* [])
{
TApplication *app;
app=new TApplication(” Hello Windows !”);
return app->Run();
}
2.2.2. Iiyniaiey e i?ia?aiia
app – oeacaoaeue ia iauaeo oeia TApplication.
Iia?aoi? new auaeaeyao o/anoie a naiaiaeiie iaeanoe iaiyoe iiae iauaeo
eeanna TApplication. I?e yoii iayaiue aucia eiino?oeoi?a eieoeeaeece?oao
iauaeo i?eeiaeaiey e onoaiaaeeaaao oaeno caaieiaea a “Hello, Windows !”.
2.2.3. Caaeaiea
Nicaeaoue e auiieieoue i?eeiaeaiea.
2.3. E?ao/aeoee aa?eaio Windows-i?eeiaeaiey
2.3.1. Enoiaeiue oaeno i?eeiaeaiey
#include
int OwlMain(int, char* [])
{
return TApplication(” Hello Windows !”).Run();
}
2.3.2. Caaeaiea
Nicaeaoue i?eeiaeaiea e oaaaeeoueny a aai ?aaioiniiniaiinoe.
3. Eniieueciaaiea eeanna TFrameWindow aeey nicaeaiey aeaaiiai ieia
Eeann TFrameWindow yaeyaony i?iecaiaeiui io TWindow e iaania/eaaao
ooieoeeiie?iaaiea aeaaiiai ieia i?eeiaeaiey.
3.1. Nicaeaiea iauaeoa aeaaiiai ieia
A ieaeaneaaeothuai i?eeiaeaiee /eai-ooieoeey InitMainWindow eeanna
TApplication n iiiiuueth iia?aoi?a new e eiino?oeoi?a TFrameWindow
nicaeaao iauaeo – aeaaiia ieii i?eeiaeaiey. Aae?an iauaeoa iiiauaaony a
ia?aiaiioth MainWindow iauaeoa i?eeiaeaiey.
3.1.1. Enoiaeiue oaeno i?ia?aiiu
#include
#include
class TMyApp: public TApplication
{
public:
TMyApp():TApplication(“Hello Windows !”){};
void InitMainWindow()
{
MainWindow=new TFrameWindow(0,”Hello, hello!!”);
}
};
int OwlMain(int, char* [])
{
return TMyApp().Run();
}
3.1.2. Iiyniaiey e i?ia?aiia
Aeeth/aaiue caaieiai/iue oaee owl\framewin.h niaea?aeeo iienaiea eeanna
TFrameWindow (ni. ?acaeae 10.3.).
Iineieueeo a aeaiiii aa?eaioa i?eeiaeaiey iu oioei nicaeaoue naia
nianoaaiiia aeaaiia ieii a iaoiae noaiaea?oiuo iaoiaeia eeanna
TApplication, iu aeieaeiu ia?aii?aaeaeeoue ae?ooaeueioth ooieoeeth
InitMainWindow eeanna TApplication. Aeey yoiai iu auaiaeei iiaue, oaea
iao, eeann TMyApp, eae i?iecaiaeiue io eeanna TApplication e iienuaaai a
iai ae?ooaeueioth ooieoeeth InitMainWindow.
Oaei eiino?oeoi?a TMyApp ionoia, o.a. {}. ?aaioa yoiai eiino?oeoi?a
naiaeeony oieueei e auciao eiino?oeoi?a aaciaiai eeanna TApplication,
niaea?aeauaai aaeeinoaaiiue ia?aiao? – oaeno caaieiaea aeaaiiai ieia
i?eeiaeaiey (ni. ?acaeae 10.2.2).
Oaei ooieoeee InitMainWindow eeanna TMyApp niaea?aeeo iia?aoi? new,
eioi?ue niaianoii n eiino?oeoi?ii TFrameWindow nicaeaao yecaiiey?
iauaeoa-ieia n iiaui caaieiaeii “Hello, Hello !”. Aae?an iauaeoa
i?enaaeaaaony ia?aiaiiie MainWindow (ni. ?acaeae 10.2.1.),
oianeaaeiaaiiie io TApplication.
3.1.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea. Ia?aoeoa aieiaiea! Aianoi
caaieiaea “Hello, Windows !”, caaeaiiiai eiino?oeoi?ii TMyApp, ieii
eiaao caaieiaie “Hello, Hello !”. Yoi ?acoeueoao ?aaiou
ia?aii?aaeaeaiiie ae?ooaeueiie ooieoeee TMyApp::InitMainWindow, eioi?ay
auea aucaaia iinea eiino?oeoi?a e eciaieea oaeno caaieiaea ia “Hello,
Hello !”.
2) Eciaieoa oaenou caaieiaeia, eniieuecoaiua eiino?oeoi?aie TMyApp e
TFrameWindow.
3) Eciaieoa noaoon aeinooia e /eaiai eeanna TMyApp ia protected eee
private. Oaaaeeoanue, /oi iiyayony niiauaiey ia ioeaeao eiiieeyoeee, oae
eae a ooieoeee OwlMain i?iecaiaeeony ia?auaiea e oaia?ue oaea
iaaeinooiiiio eiino?oeoi?o TMyApp.
4) Iieoeoa eiino?oeoi? TMyApp aia eeanna, ia caaua aeiaaaeoue i?e aai
iienaiee iia?aoi? i?eaycee e eeanno TMyApp. Oaaaeeoanue a
?aaioiniiniaiinoe i?eeiaeaiey.
5) Iieoeoa /eai-ooieoeeth InitMainWindow aia eeanna. I?iaa?ueoa
?aaioiniiniaiinoue i?eeiaeaiey.
3.2. Eciaiaiea iieiaeaiey aeaaiiai ieia ia ye?aia
Eeann TFrameWindow ianeaaeoao ec eeanna TWindow (ni. ?acaeae 10.4.)
/eai-aeaiiia Attr( ni. ?acaeae 10.4.1.). Attr – yoi no?oeoo?a,
niaea?aeauay ?acee/iua ao?eaoou ieia, oaeea eae noeeue ieia, iiceoeey ia
ye?aia, ?acia? e o.ae.
3.2.1. Aa?eaiou ooieoeee InitMainWindow, eniieuecothuea Attr
Aa?eaio A:
void InitMainWindow()
{
MainWindow=new TFrameWindow(0,” Hello, hello!!”);
MainWindow->Attr.X=5;
MainWindow->Attr.Y=15;
MainWindow->Attr.W=200;
MainWindow->Attr.H=100;
}
Aa?eaio B:
void InitMainWindow()
{
MainWindow=new TFrameWindow(0,” Hello, hello!!”);
MainWindow->Attr.X=GetSystemMetrics(SM_CXSCREEN)/8;
MainWindow->Attr.Y=GetSystemMetrics(SM_CYSCREEN)/8;
MainWindow->Attr.W=MainWindow->Attr.X*6;
MainWindow->Attr.H=MainWindow->Attr.Y*6;
}
3.2.2. Iiyniaiea e aa?eaioai eniieueciaaiey ooieoeee InitMainWindow
Oeacaoaeue MainWindow oeacuaaao ia aeaaiia ieii i?eeiaeaiey, nicaeaiiia
iia?aoi?ii new e eiino?oeoi?ii TFrameWindow. Oeacaoaeue eniieuecoaony
aeey nnueee ia yeaiaiou no?oeoo?u Attr aeaaiiai ieia i?eeiaeaiey.
X,Y caaeatho iieiaeaiea eaaiai aa?oiaai oaea ieia ia ye?aia.
W e H caaeatho oe?eio e aunioo ieia a ieenaeao.
Ooieoeey GetSystemMetrics aica?auaao cia/aiey ?acee/iuo oa?aeoa?enoee
nenoaiu, oaeeo eae aunioa (SM_CYSCREEN) e oe?eia (SM_CXSCREEN) ye?aia.
3.2.3. Caaeaiea
1) Nicaeaoue i?eeiaeaiea n aa?eaioii A ooieoeee InitMainWindow.
I?iaa?ueoa ?aaioiniiniaiinoue i?eeiaeaiey.
2) Nicaeaoue i?eeiaeaiea n aa?eaioii A iaienaiey ooieoeee
eieoeeaeecaoeee, ii n ae?oaeie cia/aieyie yeaiaioia X,Y,W,H no?oeoo?u
Attr.
3) Nicaeaoue i?eeiaeaiea n aa?eaioii B iaienaiey ooieoeee
InitMainWindow. Oaaaeeoueny, /oi ieii ?aciauaaony a oeaio?a ye?aia.
3.3. Iaiiiai aiaeeeneiai
Attr – Attribute – ao?eaoo, naienoai i?eciae.
GetSystemMetrics – to Get System Metrics – iieo/eoue nenoaiiua
oa?aeoa?enoeee.
a screen – ye?ai
a frame – ?aiea
a frame window – ia?aieythuaa ieii
InitMainWindow – Initialization of Main Window – eieoeeaeecaoeey
aeaaiiai ieia.
to create – nicaeaaaoue
to show – iieacaoue
4. I?ia?aiie?iaaiea n oaaeeoeaie ioeeeea
Iaeiei ec eeth/aauo iiiaioia ?aaiou Windows-i?eeiaeaiey yaeyaony oio
oaeo, /oi ?aaioa i?ia?aiiu oi?aaeyaony niauoeyie. I?eia?ii niauoee a
Windows yaeyaony auai? ioieoa iaith eee iaaeaoea ia eiiieo a ieia
i?ia?aiiu.
Nenoaia nio?aiyao eioi?iaoeeth i i?iecioaaeoai niauoee a nenoaiiie
i/a?aaee niiauaiee, a caoai ia?aaeaao niiauaiea i iai ?aaioathuae
i?ia?aiia. I?e iaienaiee Windows-i?eeiaeaiey iaiaoiaeeii iaania/eoue
ia?aaioeo niiauaiee, iinooiathueo a i?ia?aiio. Anee aea yoiai ia
naeaeaoue, oi ethaua aeaenoaey iieueciaaoaey iaae ieiii i?ia?aiiu aoaeoo
i?ieaii?e?iaaiu e Au ia niiaeaoa ?aaioaoue n iaith e o.ae. Ionoue,
iai?eia?, a ieia i?ia?aiiu auea iaaeaoa eaaay eiiiea iuoe. A yoii neo/aa
i?ia?aiia iieo/eo niiauaiea WM_LBUTTONDOWN. Ana niiauaiey Windows,
ia?aaeaaaaiua i?ia?aiia, i?aaenoaaeytho niaie oeaei/eneaiiua eiinoaiou n
eiaiaie, ia/eiathueieny n WM_ (Windows Message, o.a. niiauaiea Windows).
A i?ia?aiiao, iaienaiiuo n i?eiaiaieai OWL, iaoaieci iieo/aiey
eioi?iaoeee i i?iecioaaeoeo a nenoaia niauoeyo ne?uo io i?ia?aiienoa e
iaania/eaaaony ooieoeeyie eeanna TApplication. I?ia?aiienoo o?aaoaony
oieueei iienaoue naie ooieoeee, eioi?ua aoaeoo aaoiiaoe/anee aucuaaoueny
a ioaao ia i?eoaaeoaa a i?ia?aiio niiauaiea.
Aeey oiai, /oiau nicaeaoue eeann, ooieoeee eioi?iai aoaeoo ioeeeeaoueny
ia i?eoaaeoea ec nenoaiu niiauaiey, iaiaoiaeeii:
1) Ii?aaeaeeoue oaaeeoeo ioeeeea aeey eeanna. Aeey yoiai a ii?aaeaeaiea
eeanna anoaaeyaony no?iea
DECLARE_RESPONSE_TABLE(
oaaeeoea ioeeeea. DECLARE_RESPONSE_TABLE – yoi iae?in OWL, eioi?ue
aaiaeeo a Aao eeann iaeioi?ua aeiiieieoaeueiua yeaiaiou, iicaieythuea
nenoaia aaoiiaoe/anee aucuaaoue ooieoeee-/eaiu eeanna a ioaao ia
i?eoaaeoaa niiauaiea. Oaaeeoea ioeeeea niaea?aeeo eiaia niiauaiee
Windows e aae?ana ooieoeee, aucuaaaiuo i?e iieo/aiee niioaaonoaothueo
niiauaiee.
2) Iinea iauyaeaiey eeanna a oaeno i?ia?aiiu anoaaeyaony ae?oaie iae?in
DEFINE_RESPONSE_TABLEn(
ioeeeea. *a?ac caiyooth Au aeieaeiu ia?a/eneeoue eiaia aaciauo eeannia,
io eioi?uo i?iecaiaeeony ianeaaeiaaiea. *enei n neaaeoao caiaieoue ia
/enei aaciauo eeannia, eioi?ua oiaea niaea?aeao oaaeeoeu ioeeeea.
N?aco aea ca oaenoii iae?ina iaiaoiaeeii iiianoeoue yeaiaiou oaaeeoeu
?aaeoeee, ?acaeaeaiiua caiyouie. Oae, anee Au oioeoa ia?aaaouaaoue
niiauaiey i iaaeaoeyo i?aaie e eaaie eeaaeo iuoe a ieia Aaoaai
i?eeiaeaiey, oi a oaaeeoeo iiiauathony neaaeothuea yeaiaiou:
EV_WM_LBUTTONDOWN,
EV_WM_RBUTTONDOWN,
eioi?ua aiai?yo OWL i oii, /oi Au oioeoa ia?aaaouaaoue niiauaiey i
iaaeaoeyo eaaie e i?aaie eeaaeo niioaaonoaaiii. Neaaeai
EV_WM_LBUTTONDOWN ?anoeo?iauaaaony, eae Event (niauoea), Windows
Message: Left Button Down.
Iinea iienaiey anao yeaiaioia oaaeeoeu ?aaeoeee caieoeoa no?ieo
END_RESPONSE_TABLE;
3) Ii?aaeaeeoa a Aaoai eeanna ooieoeee, eioi?ua aoaeoo iieo/aoue
oi?aaeaiea, anee a nenoaia i?iecieaeao aeaeaaiia niauoea. A iaoai
i?eia?a – yoi aeaa ooieoeee
void EvLButtonDown(UINT,TPoint&),
void EvRButtonDown(UINT,TPoint&)
Ia?aue a?aoiaio ii?aaeaeyao eeaaeoe-iiaeeoeeaoi?u, eioi?ua auee iaaeaou
ia eeaaeaoo?a iaeiia?aiaiii n iaaeaoeai iaeiie ec eiiiie iuoe. Aoi?ie
a?aoiaio ii?aaeaeyao eii?aeeiaou oi/ee ieia, a eioi?ie auei i?iecaaaeaii
iaaeaoea. A oaei yoeo ooieoeee iiaeii anoaaeoue eiae, ?aaeecothuee
iaeioi?ua aeaenoaey i?e iieo/aiee niioaaonoaothueo niiauaiee Windows.
I?e iaienaiee ooieoeee ioeeeea iaiaoiaeeii iiiieoue neaaeothuaa:
1) Ooieoeey ioeeeea aucuaaaony OWL aaoiiaoe/anee e oieueei oiaaea,
eiaaea i?iecieaeao caaeaiiia niauoea. E i?eia?o, ooieoeey EvLButtonDown
aucuaaaony oieueei oiaaea, eiaaea iieueciaaoaeue iaaeiao eaaoth eiiieo
iuoe aioo?e ieia i?eeiaeaiey.
2) A i?eeiaeaiee iiaeao auoue ianeieueei eeannia, eiathueo naie oaaeeoeu
?aaeoeee. Eeann ?aaae?oao oieueei ia i?aaeiacia/aiiua aeey iaai
niiauaiey nenoaiu.
3) Eiaia e ia?aiao?u ooieoeee, ioaa/athueo ia nenoaiiua niiauaiey,
i?aaeii?aaeaeaiu. Yoi icia/aao, /oi ia eaaeaeia niiauaiea ioaa/aao
no?iai ii?aaeaeaiiay ooieoeey n ii?aaeaeaiiui eiaiai. Oi anoue, anee Au
oioeoa ia?aaaouaaoue iaaeaoey eaaie eiiiee iuoe, oi a eeanna iaiaoiaeeii
ii?aaeaeeoue ooieoeeth n eiaiai EvLButtonDown.
4.1. Ioeeee ia iaaeaoea eaaie e i?aaie eeaaeo iuoe
Ieaeaneaaeothuaa Windows-i?eeiaeaiea nicaeaao i?eeeaaeiia ieii e
iaeeaeaao iaaeaoey i?aaie eee eaaie eiiiee iuoe. I?e iaaeaoee ethaie ec
yoeo eeaaeo aioo?e ieia iiyaeyaony iaiaeue niiauaiey, oeacuaathuay,
eaeay eeaaeoa auea iaaeaoa. Iinea iaaeaoey ia eiiieo OK iaiaeue
en/acaao, a i?eeiaeaiea aoaeao aeaeaoue iiaiai iaaeaoey ia eeaaeoe iuoe.
4.1.1 Enoiaeiiue oaeno i?eeiaeaiey.
#include
#include
class TMyWindow : public TFrameWindow
{
public:
TMyWindow(char *title):TFrameWindow(0,title)
{}
protected:
void EvLButtonDown(UINT,TPoint&);
void EvRButtonDown(UINT,TPoint&);
DECLARE_RESPONSE_TABLE(TMyWindow);
};
DEFINE_RESPONSE_TABLE1(TMyWindow,TFrameWindow)
EV_WM_LBUTTONDOWN,
EV_WM_RBUTTONDOWN,
END_RESPONSE_TABLE;
void TMyWindow::EvLButtonDown(UINT,TPoint&)
{
MessageBox(“You have pressed the LEFT mouse button”,”Message
dispatched”,MB_OK | MB_ICONINFORMATION);
}
void TMyWindow::EvRButtonDown(UINT,TPoint&)
{
MessageBox(“You have pressed the RIGHT mouse button”,”Message
dispatched”,MB_OK|MB_ICONINFORMATION);
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
EnableCtl3d();
MainWindow=new TMyWindow(“Click Me!!!!!”);
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
4.1.2. Iiyniaiey e i?ia?aiia
Eeann TMyWin iienuaaao i?eeeaaeiia ieii, eae aeaaiia ieii i?eeiaeaiey e
iiyoiio ii?iaeaeaaony io eeanna TFrameWindow.
E?iia iienaiey eiino?oeoi?a eeann niaea?aeeo iauyaeaiey noaiaea?oiuo
ooieoeee ioeeeea EvLButtonDown e EvRButtonDown, a oae aea iauyaeaiea
oaaeeoeu ioeeeea aeey eeanna.
Aneaae ca iienaieai eeanna ?aniieaaaaony iienaiea oaaeeoeu ioeeeea ia
niiauaiey io eaaie e i?aaie eeaaeo iuoe.
Ooieoeee ioeeeea iienaiu aia eeanna. Oaei eaaeaeie ec yoeo ooieoeee
niaea?aeeo aaeeinoaaiiue aucia ooieoeee MessageBox, eioi?oth TMyWin
ianeaaeoao io TFrameWindow. A?aoiaiou ooieoeee MessageBox caaeatho oaeno
niiauaiey, caaieiaie iaiaee e noeeue ieia niiauaiey. Noeee MB_OK e
MB_ICONINFORMATION aeatho iai aeeaeiaiaoth iaiaeue n eiiieie OK e
ieeoia?aiiie “Information”:
Oaei ooieoeee TMyApp::InitMainWindow niaea?aeeo aucia ooieoeee
EnableCtl3d(), eioi?ay ?ac?aoaao i?eeiaeaieth eniieueciaaoue o?aoia?iua
aeeaeiae. Au iiaeaoa caeiiiaioe?iaaoue aucia yoie ooieoeee e n?aaieoue
iieo/aiiua ?acoeueoaou.
4.1.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea. Iiyenia?eiaioe?iaaoue n
i?eeiaeaieai, iaaeeiay eiiiee iuoe a aai ieia.
2) Eciaieoa a?aoiaiou a auciaao ooieoeee MessageBox. Oaaaeeoanue a
eciaiaiee aiaoiaai aeaea iaiaee niiauaiey.
3) Caeiiiaioe?oeoa no?ieo EV_VM_RBUTTONDOWN a oaaeeoea yeaiaioia
ioeeeea. Iauynieoa eciaieaoaany iiaaaeaiea i?eeiaeaiey.
4.1.4. Iaiiiai aiaeeeneiai
a button – eiiiea
down – aiec
left – aeaai, eaaue
right – i?aaue
an event – niauoea
a message – niiauaiea
a response – ioaao
a table – oaaeeoea
to declare – iauyaeoue
to define – iienaoue
a box – aeie, iaiaeue
5. Auaiae a?aoeee a Windows
Auaiae oaenoiaie eee a?aoe/aneie eioi?iaoeee a Windows naycai n
eiioaenoii ono?ienoaa DC. ?aai/ay ciia ieia naycuaaaony n eiioaenoii
ono?ienoaa TClientDC. Ia?aae auaiaeii eioi?iaoeee iu aeieaeiu nicaeaoue
eiioaeno ono?ienoaa, ia?aaeaa aio eaeaioeoeeaoi? ieia e aua?aoue a iai
iaai? iaiaoiaeeiuo a?aoe/aneeo iauaeoia, oaeeo eae ia?i (TPen),
eenoue(TBrush) e o. ae. Iaiaoiaeeii oaeaea iicaaioeoueny i oeaaoa
auaiaeeiuo iauaeoia. Nicaeaiiue eiioaeno iicaieyao iai ?eniaaoue oieueei
aioo?e ?aai/ae iaeanoe ieia, ia cao?aaeaay i?e yoii ie ae?oaea ieia, ie
a?aieoeu naiiai ieia. Iaee/ea a nenoaia oaeiai eeanna, eae TDC, aeaeaao
aeinooiiuie aieaa 150 ooieoeee, naycaiiuo n auaiaeii ieiiiie a?aoeee.
Yoe ooieoeee iicaieytho eniieueciaaoue ?acee/iua iauaeou-eino?oiaiou
(ia?i, eenoue, o?eoo e o. ae.), auaiaeeoue oaeno e ?eniaaoue ?acee/iua
oeao?u.
5.1. Auaiae eii?aeeiao oi/ee iaaeaoey eaaie eeaaeoe iuoe
Ieaeaneaaeothuaa i?eeiaeaiea ioeeeeaaony ia uae/ee eaaie eiiiee iuoe,
auaiaey a ?aai/ae ciia ieia eii?aeeiaou oeacaoaey iuoe a aieoaii oeaaoa.
5.1.1. Enoiaeiue oaeno i?ia?aiiu
#include
#include
#include
class TMyWindow : public TFrameWindow
{
public:
TMyWindow(char *title):TFrameWindow(0,title)
{}
protected:
void EvLButtonDown(UINT,TPoint&);
DECLARE_RESPONSE_TABLE(TMyWindow);
};
DEFINE_RESPONSE_TABLE1(TMyWindow,TFrameWindow)
EV_WM_LBUTTONDOWN,
END_RESPONSE_TABLE;
void TMyWindow::EvLButtonDown(UINT,TPoint &point)
{
TClientDC dc(HWindow);
TColor forecolor(TColor::LtCyan);
dc.SetTextColor(forecolor);
char buf[20];
wsprintf(buf,”[%d,%d]”,point.x,point.y);
dc.TextOut(point.x,point.y,buf);
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
MainWindow=new TMyWindow(“Use the left mouse button”);
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
5.1.2. Iiyniaiea e i?ia?aiia
Caaieiai/iue oaee owl\dc.h niaea?aeeo iienaiea neanna TDC e aai
i?iecaiaeiuo eeannia.
Eeann TMyWin ii?iaeaeaaony io TFrameWindow e iienuaaao aeaaiia ieii
i?eeiaeaiey. E?iia iienaiey eiino?oeoi?a eeann niaea?aeeo iauyaeaiea
ooieoeee ioeeeea EvLButtonDown ia niiauaiea, iinooiathuaa i?e iaaeaoee
eaaie eeaaeoe iuoe, iienaiea eioi?ie i?aaenoaaeyao iaeaieueoee eioa?an.
I?e iienaiee EvLButtonDown oeacaii eiy oieueei aoi?iai ia?aiao?a, oae
eae iai iaiaoiaeeii ciaoue oieueei eii?aeeiaou oeacaoaey iuoe a iiiaio
iaaeaoey aa eaaie eiiiee.
A ia/aea oaea ooieoeee nicaeaaony iauaeo eiioaenoa ?aai/ae iaeanoe
aeaaiiai ieia i?eeiaeaiey (Client area DC). A aeaeueiaeoai iauaeo
eniieuecoaony aeey nnueee ia ooieoeeth onoaiiaee oeaaoa oaenoa
SetTextColor e ooieoeeth auaiaea oaenoa a ieii TextOut. Aeaiiua ooieoeee
yaeythony /eaiaie eeanna TClientDC e oianeaaeiaaiu ei io eeanna TDC (ni.
?acaeae 10.5.1).
Iauaeo forecolor eeanna TColor eniieuecoaony aeey onoaiiaee oeaaoa
o?eooa a eiioaenoa ieia.
Ooieoeey wsprintf i?aia?acoao oeaei/eneaiiua cia/aiey eii?aeeiao x,y a
eo neiaieueiia i?aaenoaaeaiea a no?iea str. Iieo/aiiay no?iea auaiaeeony
a ieii ooieoeeae TextOut a iiceoeee oeacaoaey iuoe ia ye?aia.
Eeann TMyApp iienuaaao eeann i?eeiaeaiey, ec eioi?iai a ooieoeee OwlMain
nicaeaaony iauaeo app. A eeanna iienaia ooieoeey InitMainWindow,
nicaeathuay aeaaiia ieii i?eeiaeaiey ia aaca eeanna TMyWin.
5.1.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea. Iiyenia?eiaioe?iaaoue n
i?eeiaeaieai, ia?aaeaeaay eo?ni? iuoe a ?aai/ae ciia ieia e iaaeeiay ia
aa eaaoth eeaaeoo.
2) Ia?aienaoue oaeno i?ia?aiiu, eniieuecoy aeey auaiaea oaenoa ae?oaea
oeaaoa, iai?eia? Black, Gray, LtCyan, LtGray, TtGreen, LtMagenta, LtRed,
LtYellow, White.
3) Eciaieoa oaeno i?eeiaeaiey, oi?ie?oy oeaao oaenoa, eae niaieoiiinoue
neo/aeiuo cia/aiee aai eiiiiiaio – e?aniiai, caeaiiai e aieoaiai. Aeey
yoiai caiaieoa
TColor forecolor(TColor::LtBlue) ia
TColor forecolor(random(255), random(255), random(255)).
Aeey eniieueciaaiey random a ia/aei i?ia?aiiu anoaaueoa
#include
5.1.4. Iaiiiai aiaeeeneiai
TDC – Type Device Context – oei eiioaenoa ono?ienoaa
a device – ono?ienoai
a color – oeaao
to set – onoaiaaeeaaoue
SetTextColor – to Set a Text Color – onoaiiaeoue oeaao oaenoa
a point – oi/ea
6. Iaiiaeaiea niaea?aeeiiai ieia
Aieueoei aeinoeaeaieai Windows yaeythony ia?ae?uaathueany ieia. ?aaioay
n nenoaiie, Au iiaeaoa oaeaeaoue ia ye?aia ianeieueei ieii, iaeiaeaiiuo
ae?oa ia ae?oaa. Au iiaeaoa aua?aoue iaeii ec oaeeo ieii e naeaeiooue
aai a noi?iio. A ?acoeueoaoa ia ye?aia iiyaeony niaea?aeeiia ieii
caaeiaai ieaia. Ii ia neaaeoao iieaaaoue, /oi Windows nio?aiyao iannea
ieenaeia eaaeaeiai ec ieii, /oiau ioia?aaeaoue eo ia ye?aia, iaiai?io,
iia ii?o/aao i?eeiaeaieyi naiei ainnoaiaaeeaaoue naie ieia.
Anee niaea?aeeiia ieia ioaeaeaaony a ainnoaiiaeaiee, Windows iinueaao
i?eeiaeaieth-aeaaeaeueoeo ieia niiauaiea WM_PAINT. Anee i?eeiaeaiea
eiaao ooieoeeth ioeeeea ia yoi niiauaiea, oi ooieoeey aoaeao
aeoeaece?iaaia e ia?a?enoao ieii, ainnoaiiaea aai aiaoiee aeae.
Eoae, ei??aeoiia Windows-i?eeiaeaiea aeieaeii inouanoaeyoue auaiae a
ieii i?eeiaeaiey oieueei /a?ac ae?ooaeueioth ooieoeeth Paint,
aucuaaaioth i?e i?eoiaea WM_PAINT.
Au iiaeaoa eaaei oaaaeeoueny a neacaiiii, caionoea i?eeiaeaiea,
i?aaenoaaeaiiia a ?acaeaea 5.1.1. Iiianoeoa iaae ieiii aeaiiiai
i?eeiaeaiey ethaia ae?oaia i?eeeaaeiia ieii e oaeaeeoa aai – ?aai/ay
iaeanoue ieia ia ainnoaiiaeony. Oae e aeieaeii auoue, iineieueeo yoi
i?eeiaeaiea ia eiaao ooieoeee Paint.
Ia?aoeoa aieiaiea! Naia ooieoeey Paint ia yaeyaony ooieoeeae ioeeeea ia
niiauaiea e aeey iaa ia iaaei aeeth/aoue iae?in niiauaiey a oaaeeoeo
ioeeeeia. Paint iaiaoiaeeii oieueei ia?aii?aaeaeeoue a eeanna,
i?iecaiaeiii io TWindow eee TFrameWindow.
6.1. ?eniaaiea a ieia n iiiiuueth Paint
Ieaeaneaaeothuaa i?eeiaeaiea auaeaao a ?aai/oth ciio ieia aieoaie
i?yiioaieueiee n aienaiiui a iaai caeaiui yeeeinii. Auaiae inouanoaeyao
ooieoeey Paint.
6.1.1. Enoiaeiue oaeno i?eeiaeaiey
#include
#include
#include
class TMyWin : public TFrameWindow
{
public:
TPoint pn,pk;
TMyWin() : TFrameWindow(0,”The Paint function”)
{
pn.x=100;
pn.y=50;
pk.x=300;
pk.y=200;
}
void Paint(TDC&,BOOL,TRect&);
};
void TMyWin::Paint(TDC &dc,BOOL,TRect&)
{
TColor color(TColor::LtBlue);
TPen pen1(color);
dc.SelectObject(pen1);
dc.Rectangle(pn,pk);
TPen pen2(TColor::LtGreen);
dc.SelectObject(pen2);
dc.Ellipse(pn,pk);
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
MainWindow=new TMyWin();
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
6.1.2. Iiyniaiey e i?ia?aiia
Eeann TMyWin iienuaaao aeaaiia ieii i?eeiaeaiey. *eaiu-aeaiiua pn e pk –
iauaeou eeanna TPoint – i?aaeiacia/aiu aeey o?aiaiey eii?aeeiao eaaiai
aa?oiaai e i?aaiai ieaeiaai oaeia i?yiioaieueieea.
Eiino?oeoi? TMyWin, eiino?oe?oy ieii i?eeiaeaiey, eieoeeaeece?oao
cia/aiey pn e pk.
Iauyaeaiea eeanna oaeaea niaea?aeeo i?ioioei ooieoeee Paint. Iia?aoi?u,
?aniieiaeaiiua a oaea Paint, eniieuecotho eiioaeno ono?ienoaa dc,
ia?aaeaaaaiue ae i?e auciaa.
6.1.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea. I?iaa?eoue aai ?aaioo, eciaiyy
?acia?u i?eeeaaeiiai ieia.
2) Eciaieoue ooieoeeiie?iaaiea Paint, iiianoea a aa oaei iia?aoi?u
pk.x+=25;
pk.y+=15;
Iiyenia?eiaioe?oeoa n i?eeiaeaieai e iauynieoa iiaaaeaiea i?eeeaaeiiai
ieia.
6.1.4. Iaiiiai aiaeeeneiai
to paint – e?aneoue, ia?ae?aoeaaoue, ?eniaaoue
a rectangle – i?yiioaieueiee
an ellipse – yeeein
to select – auae?aoue
SelectObject – to Select an Object – aua?aoue iauaeo
7. Nicaeaiea iaith
Ieia ii/oe eaaeaeiai i?eeiaeaiey niaea?aeao no?ieo iaith, aua?aa
eioi?ia, iu iieo/aai nienie eiiaiae. Ethaoth ec yoeo eiiaiae iiaeii
auiieieoue, naeaeaa uae/ie ia iae eaaie eeaaeoae iuoe. I?e yoii Windows
iinueaao niioaaonoaothuaa niiauaiea i?eeiaeaieth. Anee i?eeiaeaiea eiaao
niioaaonoaothuoth ooieoeeth ioeeeea, oi iii niiaeao io?aaae?iaaoue ia
eiiaiaeo iaith.
A iienaiee oaaeeoeu ioeeeea iaiaoiaeeii aeey eaaeaeie eiiaiaeu iaith
anoaaeoue iae?in aeaea
EV_COMMAND(MENU_ITEM_ID,
aaea MENU_ITEM_ID – eiinoaioiue eaeaioeoeeaoi? ioieoa iaith,
i?e auai?a ioieoa iaith n caaeaiiui eaeaioeoeeaoi?ii. A ioee/ea io
ooieoeee ?aaeoeee ia nenoaiiua niiauaiey, ooieoeey ioeeeea ia eiiaiaeo
iaith iiaeao eiaoue ethaia eiy.
Ia?aoeoa aieiaiea. Aeey ?ac?aaioee aeaiiiai i?eeiaeaiey iaiaoiaeeii
nicaeaoue oaee ?ano?nia n ?anoe?aieai .rc, a eioi?ii aoaeao o?aieoueny
iienaiea ?ano?na iaith i?ia?aiiu, e oaee n ?anoe?aieai .rh, a eioi?ii
aoaeoo nio?aiaiu eiinoaioiua eaeaioeoeeaoi?u ioieoia iaith. Iao
iaiaoiaeeiinoe nicaeaaaoue aeaiiua oaeeu a?o/ioth. Aeey yoiai iu
ainiieuecoainy i?ia?aiiie Resource Workshop.
7.1. Nicaeaiea ?ano?nia i?ia?aiiu n iiiiuueth Resource Workshop
1. Caionoeoa eiiieeyoi?. Aeey yoiai aeoeaece?oeoa ieeoia?aiio Borland C
++.
2. Auiieieoa eiiaiaeo Project|New project.
3. Eae auei iienaii ?aiaa, auaa?eoa eiy e iooue e nicaeaaaaiiio i?iaeoo.
4. Auaa?eoa Advanced a aeeaeiaa New project. Caoai a iiyaeaoaeny iaiaee
nieieoa oeaaeie def e onoaiiaeoa oeaaeie rc. Caaa?oeoa nicaeaiea i?iaeoa
iaaeaoeai OK.
5. A ?acoeueoaoa Aaoeo aeaenoaee aeieaeii iiyaeoueny ieii i?iaeoa,
niaea?aeauaa aeaa oaeea: iaeei n ?anoe?aieai .cpp, ae?oaie – n
?anoe?aieai .rc, yaeythueeny oaeeii ?ano?nia nicaeaaaaiiai i?iaeoa.
6. Oaia?ue iiaeii i?enooieoue e nicaeaieth ?ano?nia iaoaai i?eeiaeaiey,
a eiaiii, iaith. A ?acoeueoaoa i?iaeaeaiiie ?aaiou Au aeieaeiu aoaeaoa
iieo/eoue iaith Size e aeaa aai ioieoa – Large e Small. Iie iiiaaeiayony
iai a i?ia?aiia, eioi?ay aoaeao auaiaeeoue aaiiao?e/aneea oeao?u ?aciuo
?acia?ia ii aeaeaieth iieueciaaoaey.
7. A ieia i?iaeoa auaa?eoa oaee n ?anoe?aieai .rc. A ioee/ea io
cpp-oaeeia, oaeeu n ?anoe?aieai .rc ?aaeaeoe?othony ia a oaenoiaii
?aaeaeoi?a, a a niaoeeaeece?iaaiiii ?aaeaeoi?a ?ano?nia Resource
Workshop. A aai ieia Au niiaeaoa oaeaeaoue niaea?aeeiia Aaoaai rc-oaeea,
ii a aeaiiue iiiaio ii ionoie.
8. Ia?aia, /oi iaiaoiaeeii naeaeaoue – yoi aeiaaaeoue a i?iaeo ?ano?nia
oaee n ?anoe?aieai .rh (resource header, o. a. caaieiaie ?ano?nia). Yoi
iaiaoiaeeii aeey oiai, /oiau a naiae i?ia?aiia Au iiaee nnueaoueny ia
nicaeaiiua ?ano?nu /a?ac rh-oaee oae aea, eae Au nnueaaoanue ia
aeaeeioa/iua ooieoeee eiiieeyoi?a, iienaiiua a oaeeao n ?anoe?aieai .h.
Aeey iiaeeeth/aiey oaeea auiieieoa File|Add to project. A iiyaeaoaeny
aeeaeiaiaie iaiaee a iiea File type auaa?eoa RH, H header, a a iiea File
name aaaaeeoa eiy naiaai header-oaeea (a iienaiee aeaiiie eaai?aoi?iie
?aaiou auei eniieueciaaii eiy lab3c.rh, eioi?ia oeao?e?oao a
i?eaaaeaiiuo ieaea eenoeiaao. Anee Au aaaaeaoa eiy, ioee/iia io iaai, oi
Au aeieaeiu aoaeaoa o/eouaaoue yoi i?e aeeth/aiee oaeea a naith
i?ia?aiio). Ioaaoueoa Yes ia aii?in i iaiaoiaeeiinoe nicaeaiey oaeea.
9. Oaia?ue iiaeii i?enooieoue e nicaeaieth iaith iaoaai i?eeiaeaiey.
Aeey yoiai auiieieoa neaaeothuaa:
1) Auiieieoa eiiaiaeo Resource|New ec iaith ?aaeaeoi?a ?ano?nia.
2) A nienea aiciiaeiuo oeiia ?ano?nia iaiaee New resource auaa?eoa MENU.
Oaaaeeoanue, /oi iiea Place identifiers in oeacuaaao ia oaee n
?anoe?aieai .rh. Iiea Place resource in aeieaeii anaaaea oeacuaaoue ia
Aao rc-oaee. Iaaeieoa OK e Workshop i?enooieo e nicaeaieth iaith.
3) Iinea i?iaeaeaiiuo oaaia Au aeieaeiu oaeaeaoue neaaeothuaa:
Iiyaeaoaany ieii i?aaenoaaeyao niaie ?aaeaeoi? iaith. A caaieiaea Au
aeaeeoa iacaaiea nicaeaiiiai iaith MENU_1. A i?aaii aa?oiai oaeo ieia
?aniieaaaaony iiea TEST MENU, eioi?ia iicaieyao i?iaa?eoue ?aaioo
nicaeaaaaiiai iaith. No?iea nicaeaiiiai iaith niaea?aeeo iacaaiea
?acaeaea iaith Pop-up (/oi icia/aao anieuaathuee). I?e uae/ea iuoueth ia
aeaiiii eiaie iiyaeythony ioieou iaith.
4) Iai ioaeii iieo/eoue ioieo iaith n eiaiai Size. Aeey yoiai uaeeieoa
iuoueth ii eiaie Pop-up a iiea oanoe?iaaiey iaith, eeai ia oii aea eiaie
a iienaiee iaith a i?aaii ieaeiai oaeo ieia. Aeaeaa, ia?aeaeeoa a iiea
Item text e ia?aeiaioeoa ioieo iaith ec Pop-up a Size. Iaaeieoa Enter e
oaaaeeoanue, /oi iiea oanoe?iaaiey ioia?aceei ia?aeiaiiaaiiue ioieo
iaith.
5) Iai o?aaoaony nicaeaoue eiiaiaeo iaith Small. Aeey yoiai a iiea
oanoe?iaaiey eee a ieia iienaiey iaith auaa?eoa ioieo Item. A iiea
oanoe?iaaiey yoi aeaeaaony auai?ii ioieoa Size e auai?ii a iiyaeaoainy
iaith iiey Item.
6) Oaaaeeoanue, /oi iiea Item text aeaenoaeoaeueii niaea?aeeo oaeno
“Item”. Ia?aeaeeoa a yoi iiea e eciaieoa oaeno ia “Small”. I?iaa?ueoa,
/oi a nicaeaaaaiii iaith ioia?aaeaaony ioieo Small.
7) A iiea Item Id ?aaeaeoi?a iaith aaaaeeoa eiy eiinoaioiiai
eaeaioeoeeaoi?a, eioi?ue aoaeao ia?aaeaaaoueny i?ia?aiia i?e auai?a
ioieoa iaith Small. Ionoue yoi aoaeao CM_SIZE_SMALL (CM icia/aao
Command, eiiaiaea).
8) Nicaeaaeei oaia?ue ioieo iaith Large. Aeey ia/aea i?iaa?ueoa, /oi a
ieia iienaiey iaith auaeaeai ioieo iaith Small, o. e. nicaeaaaaiue iaie
iiaue ioieo iaith aeieaeai iiyaeoueny iiae iei. Caoai auiieieoa eiiaiaeo
iaith ?aaeaeoi?a Menu|New menu item. ?acoeueoaoii ?aaiou eiiaiaeu aoaeao
iiaue ioieo iaith, eioi?ue aoaeao ?aniieiaeai iiae eiiaiaeie Small. N
iiiiuueth iienaiiuo auoa aeaenoaee aeaeoa ioieoo iaith eiy Large e
aieoeoa eaeaioeoeeaoi? eiiaiaeu CM_SIZE_LARGE.
Ia?aoeoa aieiaiea! Iaiaoiaeeii auae?aoue New menu item, a ia New menu
pop-up, eioi?ue nicaeaao ia eiiaiaeo, a ioieo iaith, eioi?ue nai
niaea?aeeo naie eiiaiaeu e i?e aeoeaecaoeee ioe?uaaao aeiaeaiiia a iaai
iaith.
9) I?iaa?ueoa, /oi iieacuaaao iiea oanoe?iaaiey nicaeaiiiai Aaie iaith.
Ia yoii nicaeaiea iaith i?ia?aiiu caaa?oaii. Cae?ieoa Workshop e
ioaaoueoa Yes ia i?aaeeiaeaiea i?ia?aiiu nio?aieoue ?acoeueoao Aaoae
?aaiou.
Iaiaoiaeeii oaeaea ioiaoeoue, /oi a header-oaee, eiy eioi?iai Au oeacaee
a ia/aea iino?iaiey i?iaeoa, aoaeoo iiiauaiu eiaia eiinoaioiuo
eaeaioeoeeaoi?ia ioieoia iaith CM_SIZE_SMALL e CM_SIZE_LARGE, a oaeaea
eaeaioeoeeaoi? iaith MENU_1, ia eioi?ua Au aoaeaoa nnueaoueny i?e
iaienaiee i?ia?aiiu.
7.2. I?ia?aiie?iaaiea n eniieueciaaieai iaith
Ieaeaneaaeothuaa i?eeiaeaiea eniieuecoao eiiaiaeu Small e Large aeey
oi?aaeaiey auaiaeii ia ye?ai oeao? ?aciiai ?acia?a.
I?aaeaea, /ai i?eaiaeeoue oaeno i?ia?aiiu iieaaeai, /oi aea iu iieo/eee
a ?acoeueoaoa iaieioeyoeee iaae Resource Workshop.
7.2.1. Eenoeia rh-oaeea
/***********************************************************************
***
lab3n.rh
produced by Borland Resource Workshop
************************************************************************
**/
#define MENU_1 1
#define CM_SIZE_SMALL 102
#define CM_SIZE_LARGE 101
7.2.2. Eenoeia rc-oaeea
/***********************************************************************
***
LAB3N.RC
produced by Borland Resource Workshop
************************************************************************
**/
#include “lab3n.rh”
MENU_1 MENU
{
POPUP “Size”
{
MENUITEM “Small”, CM_SIZE_SMALL
MENUITEM “Large”, CM_SIZE_LARGE
}
}
Aiiaua rc-oaee niaea?aeeo a naaa oaenoiaia iienaiea ?ano?nia e, eae
iiaeao iieacaoueny, eaa/a iaienaoue aai n iiiiuueth oaenoiaiai
?aaeaeoi?a. Yoi aa?ii oieueei aeey i?inouo oaeeia ?ano?nia. Aeey
iaienaiey aea aieueoeo i?ia?aii eo/oa ainiieueciaaoueny aiciiaeiinoyie
Resource Workshop.
7.2.3. Enoiaeiue oaeno i?eeiaeaiey
#include
#include
#include
#pragma hdrstop
#include “lab3a.rh”
class TMyWin : public TFrameWindow
{
public:
TPoint pn,pk;
TMyWin() : TFrameWindow(0,”The Paint function”)
{
pn.x=100;
pn.y=50;
pk.x=300;
pk.y=200;
}
protected:
void Paint(TDC&,BOOL,TRect&);
void CmLarge();
void CmSmall();
DECLARE_RESPONSE_TABLE(TMyWin);
};
DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)
EV_COMMAND(CM_SIZE_LARGE,CmLarge),
EV_COMMAND(CM_SIZE_SMALL,CmSmall),
END_RESPONSE_TABLE;
void TMyWin::Paint(TDC &dc,BOOL,TRect&)
{
TColor color(TColor::LtBlue);
TPen pen1(color);
dc.SelectObject(pen1);
dc.Rectangle(pn,pk);
TPen pen2(TColor::LtGreen);
dc.SelectObject(pen2);
dc.Ellipse(pn,pk);
}
void TMyWin::CmLarge()
{
pk.x=500;
pk.y=400;
Invalidate();
}
void TMyWin::CmSmall()
{
pk.x=150;
pk.y=100;
Invalidate();
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
MainWindow=new TMyWin();
MainWindow->AssignMenu(MENU_1);
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
7.2.4. Iiyniaiey e i?ia?aiia
Eeann TMyWin niaea?aeeo iauyaeaiea /eaiia-ooieoeee Paint, CmLarge,
CmSmall.
Iienaiea oaaeeoeu ?aaeoeee iieacuaaao, /oi a ioaao ia auai? eiiaiaeu
iaith Small n eaeaioeoeeaoi?ii CM_SIZE_SMALL aoaeao aucuaaoueny ooieoeey
CmSmall. Aiaeiae/ii aeey eiiaiaeu Large. I?e aa auai?a aoaeao aucaaia
CmLarge. Aua ?ac iiae/a?eiai, /oi aeey eiiaiae iaith iao noaiaea?oiuo
ooieoeee ioeeeea, eae yoi auei n nenoaiiuie niiauaieyie Windows, o. a. a
iae?ina Au iiaeaoa oeacaoue eiy ethaie ooieoeee ioeeeea, aeaaiia, /oiau
iia ia i?eieiaea e ia aica?auaea cia/aiee.
Iienaiea ooieoeee Paint oeaeeeii niaiaaeaao n aa oaenoii a i?aaeuaeouai
?acaeaea.
Ooieoeee ioeeeea ia niiauaiey iaith eciaiytho eii?aeeiaou i?aaiai
ieaeiaai oaea i?yiioaieueieea e aucuaatho eieainoee?iaaiioth a
TFrameWindow ooieoeeth Invalidate, eioi?ay canoaaeyao Windows iaiiaeoue
ieii i?eeiaeaiey. Aucia aeaiiie ooieoeee aiai?eo nenoaia, /oi ieii
o?aaoao iaiiaeaiey e oa iinueaao i?eeiaeaieth niiauaiea WM_PAINT.
7.3. Caaeaiea
1) Nicaeaoue e auiieieoue i?eeiaeaiea.
2) Oaeaeeoa aucia ooieoeee Invalidate a iaeiie ec ooieoeee ioeeeea.
Iauynieoa eciaiaiey a eiaeea ?aaiou i?eeiaeaiey.
3) Nicaeaeoa aeiiieieoaeueiia iaith Color n eiiaiaeaie Black e Red,
eioi?ua aeieaeiu eciaiyoue oeaao auaiaeeiuo ia ye?aia oeao?.
8. Oi?aaeythuea eiiiiiaiou Windows
?anniio?ei ianeieueei oi?aaeythueo eiiiiiaio Windows, iaeaa/athueo
aeeaeia n i?eeiaeaieai.
Ia?aue eiiiiiaio – yoi eeiaeea i?ie?ooee. Iia iiaeao auoue ?aniieiaeaia
a ieia i?eeiaeaiey e i?aaenoaaeyao niaie aa?oeeaeueioth eee
ai?eciioaeueioth iieino n iiecoieii. Iiecoiie iiaeii ia?aaeaeiooue,
caoeaiea aai oeacaoaeai iuoe e ia?aoauea aaeieue iieinu i?ie?ooee.
Eeiaeea nicaeaaony eae iauaeo eeanna TScrollBar a eiino?oeoi?a ieia
i?eeiaeaiey. Eiino?oeoi?o TScrollBar ia?aaeathony eii?aeeiaou e ?acia?u
nicaeaaaaiie eeiaeee, a oae aea oei eeiaeee – ai?eciioaeueiay eee
aa?oeeaeueiay.
Iieaaeai, eae eniieueciaaoue a i?eeiaeaiee aa?oeeaeueioth eeiaeeo
i?ie?ooee.
Ai a?aiy ia?aiauaiey iiecoiea aa?oeeaeueiay eeiaeea aaia?e?oao
oaaaeiieythuea niiauaiey WM_VSCROLL. Au iiaeaoa ia?aoaaoeoue e
ia?aaioaoue yoe niiauaiey, iauyaea a eeanna-aeaaeaeueoea oaeie eeiaeee
ooieoeeth ioeeeea EvVScroll e aeiiieiea oaaeeoeo ioeeeea eeanna iae?inii
EV_WM_VSCROLL. Ooieoeey aoaeao aucuaaoueny i?e eciaiaiee iieiaeaiey
iiecoiea ia eeiaeea.
I?e nicaeaiee eeiaeee i?enaieoa aae?an neiino?oe?iaaiiiai iauaeoa
oeacaoaeth. A ?acoeueoaoa Au iieo/eoa aeinooi e ?aciiia?aciiio iaai?o
ooieoeee iauaeoa. E i?eia?o, iiyaeony aiciiaeiinoue iiceoeeiie?iaaoue
iiecoiie ec i?ia?aiiu, iieo/aoue iiceoeeth iiecoiea e eciaiyoue ianooaa
eeiaeee ( ii oiie/aieth iiceoeey iiecoiea ia eeiaeea eciaiyaony io 0 aei
100).
Ana neacaiiia auoa ni?aaaaeeeai e aeey ai?eciioaeueiie eeiaeee
i?ie?ooee, ii aeey ?aaeoeee ia aa niiauaiey o?aaoaony ooieoeey EvHScroll
e iae?in EV_WM_HSCROLL.
Oaia?ue oaeaeei aieiaiea ae?oaiio eiiiiiaioo aecoaeueiiai eioa?oaena
Windows – eiiiea.
Eiiiea iiaeao auoue ?aniieiaeaia a ieia i?eeiaeaiey e i?aaenoaaeyao
niaie i?yiioaieueiee n iaaeienueth. Eiiiea ?aaae?oao ia uae/ee iuoueth
auaea/ae oaaaeiieythuaai niiauaiey. Iia nicaeaaony a eiino?oeoi?a ieia
i?eeiaeaiey, eae iauaeo eeanna TButton.
Eiino?oeoi?o TButton ia?aaeaaony aae?an iauaeoa-ieia, a eioi?ii Au
oioeoa ?acianoeoue eiiieo, oaeno iaaeiene ia eiiiea, aa eii?aeeiaou e
?acia?. Eiino?oeoi?o oaeaea ia?aaeaaony eiinoaioiue eaeaioeoeeaoi?
eiiiee. Aeaiiue eaeaioeoeeaoi? niaiaaeaao n eaeaioeoeeaoi?ii
oaaaeiieythuaai niiauaiey, aaia?e?oaiiai eiiieie i?e iaaeaoee.
?aaeoeey ia iaaeaoey eiiiee ?aaeecoaony aiaeiae/ii ?aaeoeee ia auai?
eiiaiaeu iaith: Au iienuaaaoa ooieoeeth ?aaeoeee (eiy ooieoeee
i?iecaieueiia) ia iaaeaoey eiiiee e iiiauaaoa a oaaeeoeo ?aaeoeee iae?in
EV_COMMAND(BUTTON_ID,UserName)
n eaeaioeoeeaoi?ii eiiiee e eiaiai ooieoeee ioeeeea.
I?eeiaeaiea iiaeao eiaoue ianeieueei eiiiie n ?acee/iuie
eaeaioeoeeaoi?aie e aeey eaaeaeie eiiiee ioaeii nicaeaoue naith
ooieoeeth ioeeeea e aeiaaaeoue yeaiaio a oaaeeoeo ?aaeoeee.
Anee Au oioeoa ?aaae?iaaoue oieueei ia iaaeaoey eiiiee, ieeae ia eciaiyy
aa oa?aeoa?enoee, oi i?enaaeaaoue oeacaoaeth aae?an nicaeaiiiai
iauaeoa-eiiiee ia o?aaoaony.
8.1. Eciaiaiea ?acia?a auaiaeeiie a?aoeee n iiiiuueth eeiaeee i?ie?ooee
A ieaeaneaaeothuai i?eeiaeaiee a i?eeeaaeiii ieia auaeaaony aieoaie
i?yiioaieueiee n aienaiiui a iaai yeeeinii. A ieia nicaeaaony
aa?oeeaeueiay eeiaeea i?ie?ooee. Ia?aiauay iiecoiie eeiaeee, iiaeii
ieaaii eciaiyoue ?acia?u auaiaeeiuo aaiiao?e/aneeo oeao? a iaeioi?ii
oeene?iaaiiii aeeaiaciia.
8.1.1. Enoiaeiue oaeno i?ia?aiiu
#include
#include
#include
#include
class TMyWin : public TFrameWindow
{
public:
TPoint pn,pk;
TScrollBar *sb;
TMyWin() : TFrameWindow(0,”The Paint function”)
{
sb=new TScrollBar(this,1,350,100,20,125,FALSE);
pn.x=100;
pn.y=40;
pk.x=300;
pk.y=pn.y;
}
protected:
void Paint(TDC&,BOOL,TRect&);
void EvVScroll(UINT, UINT, HWND);
DECLARE_RESPONSE_TABLE(TMyWin);
};
DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)
EV_WM_VSCROLL,
END_RESPONSE_TABLE;
void TMyWin::Paint(TDC &dc,BOOL,TRect&)
{
TColor color(TColor::LtBlue);
TPen pen1(color);
dc.SelectObject(pen1);
dc.Rectangle(pn,pk);
TPen pen2(TColor::LtGreen);
dc.SelectObject(pen2);
dc.Ellipse(pn,pk);
}
void TMyWin::EvVScroll(UINT scrollcode, UINT thumbPos, HWND hwnd)
{
TFrameWindow::EvVScroll(scrollcode,thumbPos,hwnd);
InvalidateRect(TRect(pn,pk));
pk.y=pn.y+sb->GetPosition()*2;
UpdateWindow();
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
MainWindow=new TMyWin();
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
8.1.2. Iiyniaiey e i?ia?aiia
Caaieiai/iue oaee owl\scrollba.h niaea?aeeo iienaiea eeanna TScrollBar e
aai /eaiia-ooieoeee. Iienaiea eeanna TMyWin niaea?aeeo iauyaeaiey oi/ae
(iauaeoia eeanna TPoint) aeey eaaiai aa?oiaai e i?aaiai ieaeiaai oaeia
i?yiioaieueieea. A eeanna aeiiieieoaeueii iauyaeai iauaeo eeanna
TScrollBar, i?aaenoaaeythuee niaie aa?oeeaeueioth eeiaeeo i?ie?ooee.
TMyWin niaea?aeeo oaeaea ooieoeeth ioeeeea EvVScroll ia niiauaiey io
eeiaeee i?ie?ooee e ia?aii?aaeaeaiioth ooieoeeth Paint.
A oaea eiino?oeoi?a TMyWin nicaeaaony eeiaeea i?ie?ooee e caaeathony
ia/aeueiua cia/aiey eii?aeeiao aeaoo oaeia i?yiioaieueieea.
Iienaiea oaaeeoeu ?aaeoeee niaea?aeeo yeaiaio EV_WM_VSCROLL.
Ooieoeey EvVScroll aucuaaao iaeiieiaiioth ooieoeeth aaciaiai eeanna aeey
iaania/aiey iieiie ia?aaioee iinooiathueo io ne?ieea?a niiauaiee. Caoai
ooieoeey o?aaoao ia?a?eniaaoue /anoue ?aai/ae ciiu ieia aeey auaiaea
aaiiao?e/aneeo oeao? n eciaiaiiuie ?acia?aie. Aeey iieo/aiey iieiaeaiey
iiecoiea ia eeiaeea i?ie?ooee eniieuecoaony ooieoeey GetPosition,
eioi?ay aica?auaao /enei a aeeaiaciia io 0 aei 100. Aucia ooieoeee
UpdateWindow aucuaaao iaiaaeeaiiia iaiiaeaiea ieia i?eeiaeaiey, iinueay
ieio WM_PAINT a iaoiae nenoaiiie i/a?aaee niiauaiee.
8.1.3. Caaeaiea
1) Nicaeaoue enneaaeiaaoue ?aaioo i?eeiaeaiey.
2) Eciaieoue aa?oeeaeueioth eeiaeeo i?ie?ooee ia ai?eciioaeueioth.
3) Enneaaeiaaoue ?aaioo i?eeiaeaiey, caeiiiaioe?iaaa aucia UpdateWindow
a oaea EvVScroll.
4) Enneaaeiaaoue ?aaioo i?eeiaeaiey, oaeaeea aucia ooieoeee
InvalidateRect.
5) Eciaieoa oaaeeoeo ?aaeoeee, oaeaeea a iae EV_WM_VSCROLL. Iauynieoa
iiaaaeaiea i?eeiaeaiey.
8.2. Eciaiaiea oeaaoa auaiaeeiie a?aoeee n iiiiuueth eiiiie
A i?eaiaeeiii caeanue oaenoa Windows-i?eeiaeaiey oeaao auaiaeeiuo ia
ye?ai aaiiao?e/aneeo oeao? eciaiyaony i?e iaaeaoee iaeiie ec aeaoo
eiiiie, ?aciauaiiuo a ieia i?eeiaeaiey.
8.2.1. Enoiaeiue oaeno i?ia?aiiu.
#include
#include
#include
#include
#define CM_BUTTON1 100
#define CM_BUTTON2 200
class TMyWin : public TFrameWindow
{
public:
TPoint pn,pk;
int nColor;
TMyWin() : TFrameWindow(0,”The Paint function”)
{
new TButton(this,CM_BUTTON1,”Palette 1″,350,50,80,30);
new TButton(this,CM_BUTTON2,”Palette 2″,350,100,80,30);
pn.x=100;
pn.y=50;
pk.x=300;
pk.y=200;
nColor=1;
}
void Paint(TDC&,BOOL,TRect&);
void CmButton1()
{
nColor=1;
Invalidate();
UpdateWindow();
}
void CmButton2()
{
nColor=2;
Invalidate();
UpdateWindow();
}
DECLARE_RESPONSE_TABLE(TMyWin);
};
DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)
EV_COMMAND(CM_BUTTON1,CmButton1),
EV_COMMAND(CM_BUTTON2,CmButton2),
END_RESPONSE_TABLE;
void TMyWin::Paint(TDC &dc,BOOL,TRect&)
{
TColor color(nColor==1 ? TColor::LtBlue : TColor::LtYellow);
TPen pen1(color);
dc.SelectObject(pen1);
dc.Rectangle(pn,pk);
TPen pen2(nColor==1 ? TColor::Black : TColor::LtRed);
dc.SelectObject(pen2);
dc.Ellipse(pn,pk);
}
class TMyApp : public TApplication
{
public:
TMyApp():TApplication()
{}
void InitMainWindow()
{
MainWindow=new TMyWin();
}
};
int OwlMain(int, char *[])
{
TMyApp app;
return app.Run();
}
8.2.2. Iiyniaiey e i?ia?aiia
Caaieiai/iue oaee owl\button.h niaea?aeeo iienaiea eeanna TButton e aai
/eaiia.
A ia/aei i?ia?aiiu iiiauaiu aee?aeoeau
#define CM_BUTTON1 100
#define CM_BUTTON2 200,
ii?aaeaeythuea eiinoaioiua eaeaioeoeeaoi?u niiauaiee, eioi?ua aoaeoo
iinueaoueny i?ia?aiia eiiieaie a ioaao ia uae/ee iuoueth. CM_BUTTON1
aaia?e?oaony ia?aie eiiieie, CM_BUTTON2 – aoi?ie. Iiaeii aua?aoue
ae?oaea eiaia niiauaiee, ioee/iua io CM_BUTTONn e cia/aiey eiinoaio,
ioee/iua io i?eaaaeaiiuo a i?ia?aiia, ii aeey oiai, /oiau i?ia?aiia
i?aaeeueii ?aaae?iaaea ia niiauaiey eiiiie, iaiaoiaeeii i?aaeeueii
caiieieoue oaaeeoeo ?aaeoeee, ia?aaeaa a ea/anoaa a?aoiaioia iae?inai
oaaeeoeu eiaia eiinoaio e eiaia ooieoeee ioeeeea.
Eiino?oeoi? i?eeeaaeiiai ieia nicaeaao n iiiiuueth iia?aoi?a new aeaa
eiiiee, ia?aaeaaay ei a ea/anoaa a?aoiaioia eaeaioeoeeaoi? ieia,
eaeaioeoeeaoi? oaaaeiieythuaai niiauaiey, eioi?ia aoaeao aaia?e?iaaoue
eiiiea, oaeno iaaeiene ia eiiiea e eii?aeeiaou ?aciauaiey eiiiee a ieia
i?eeiaeaiey.
Ia?aoeoa aieiaiea ia oi, /oi aae?ana nicaeaiiuo iauaeoia-eiiiie ia
i?enaaeaathony oeacaoaeyi. Yoiai ia o?aaoaony aeaeaoue iioiio, /oi a
i?ia?aiia iao iaiaoiaeeiinoe nnueaoueny ia yoe iauaeou.
Ooieoeee ioeeeea ia niiauaiey eiiiie CmButton1 e CmButton2 eciaiytho
i?eciae oeaaoa aaiiao?e/aneeo oeao? e iauyaeytho i iaiaoiaeeiinoe
ia?a?eniaee ieia i?eeiaeaiey.
Oaaeeoea ioeeeea eiino?oe?oaony oae aea, eae yoi aeaeaeinue i?e
eniieueciaaiee iaith. Iia niaea?aeeo eaeaioeoeeaoi?u oaaaeiieythueo
niiauaiee, i?eoiaeyueo io eiiiie e eiaia ooieoeee eeanna i?eeeaaeiiai
ieia, ioaa/athueo ca ia?aaioeo aeaiiuo niiauaiee.
8.2.3. Caaeaiea.
1) Nicaeaoue i?eeiaeaiea e enneaaeiaaoue aai ?aaioo.
2) Eciaieoue a?aoiaiou eiino?oeoi?a (oaeno eiiiee, eii?aeeiaou, ?acia? e
o. ae.) TButton iaeiie ec eiiiie.
3) Enneaaeoeoa ?aaioo i?eeiaeaiey, caeiiiaioe?iaaa aucia Invalidate a
iaeiie ec ooieoeee ioeeeea.
9. Aaiae e ?aaeaeoe?iaaiea oaenoa
Aeaiiay oaia aoaeao iinayuaia iaiaeyi aaiaea e ?aaeaeoe?iaaiey – iaeiie
ec iiioey?iaeoeo eiiiiiaio Windows.
Eniieueciaaiea iaiaee aaiaea e ?aaeaeoe?iaaiey oaenoa iicaieyao
i?eeiaeaieth aaanoe e i?e iaiaoiaeeiinoe io?aaeaeoe?iaaoue iaeio eee
ianeieueei no?ie oaenoa.
Iaiaeue ?aaeaeoe?iaaiey nicaeaaony, eae iauaeo eeanna TEdit e iiaeao
auoue ?aciauaia a ethaii i?eeeaaeiii ieia. Aeaiiay iaiaeue i?aaenoaaeyao
niaie noaiaea?oiue oaenoiaue ?aaeaeoi? Windows, a eioi?ii aeinooiiu ana
iia?aoeee ?aaeaeoe?iaaiey oaenoa – anoaaea e caiaia oaenoa, oaeaeaiea
neiaieia e ?aaioa n aooa?ii iaiaia Windows.
?acee/atho aeaa oeia iaiaeae ?aaeaeoe?iaaiey – iaeiino?i/iay e
iiiaino?i/iay.
Nicaeaiea iaiaeae ?aaeaeoe?iaaiey e ?aciauaiea eo a ieia i?eeiaeaiey
inouanoaeythony aiaeiae/ii nicaeaieth eiiiie e iiein i?ie?ooee. Iauaeo
nicaeaaony ec eeanna TEdit. Eiino?oeoi?o iauaeoa ia?aaeaaony
eaeaioeoeeaoi? ieia, a eioi?ii aoaeao ?aciauaia iaiaeue, eiinoaioiue
eaeaioeoeeaoi? iaiaee, oaeno, eioi?ue aoaeao iiiauai a ?aaeaeoi? e
eii?aeeiaou iaiaee a ieia i?eeiaeaiey. Aeiiieieoaeueii eiino?oeoi?o
ia?aaeaaony noeeue iaiaee ?aaeaeoe?iaaiey: TRUE, anee nicaeaaony
iiiaino?i/iay iaiaeue, FALSE, anee iaiaeue – iaeiino?i/iay (ni ?acaeae
10.7).
9.1. I?eia? eniieueciaaiey iaeiino?i/iiai oaenoiaiai ?aaeaeoi?a aeey
aaiaea e ?aaeaeoe?iaaiey oaenoa
I?eaaaeaiiia a yoii ?acaeaea i?eeiaeaiea nicaeaao iaeiino?i/iue
oaenoiaue ?aaeaeoi? e auaiaeeo eiiee yoie no?iee a ieia i?eeiaeaiey.
9.1.1. Enoiaeiue oaeno i?eeiaeaiey
#include
#include
#include
#include
#include
#define ID_ONELINER 150
#define CM_BUTTON 160
#define TEXTLEN 10
class TMyWin: public TFrameWindow
{
TEdit *oneLiner;
char txt[TEXTLEN];
public:
TMyWin(): TFrameWindow(0,”the TEdit object”)
{
oneLiner=new TEdit(this,ID_ONELINER,”Input one
line”,10,10,100,30,TEXTLEN,FALSE);
new TButton(this,CM_BUTTON,”Update”,10,100,70,25);
txt[0]=’\0′;
}
protected:
void CmButton();
void Paint(TDC&,BOOL,TRect&);
DECLARE_RESPONSE_TABLE(TMyWin);
};
DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)
EV_COMMAND(CM_BUTTON,CmButton),
END_RESPONSE_TABLE;
void TMyWin::CmButton()
{
oneLiner->GetLine(txt,TEXTLEN,0);
Invalidate();
//UpdateWindow();
}
void TMyWin::Paint(TDC& dc,BOOL,TRect&)
{
for (int i=1;i
#include
#include
#include
#include
#define ID_MULTILINER 150
#define CM_BUTTON 160
class TMyWin: public TFrameWindow
{
TEdit *multiLiner;
char *txt;
public:
TMyWin(): TFrameWindow(0,”the TEdit object”)
{
multiLiner=new TEdit(this,ID_MULTILINER,”Input
lines”,10,10,200,100,0,TRUE);
new TButton(this,CM_BUTTON,”Update”,10,130,70,25);
}
protected:
void CmButton();
void Paint(TDC&,BOOL,TRect&);
DECLARE_RESPONSE_TABLE(TMyWin);
};
DEFINE_RESPONSE_TABLE1(TMyWin,TFrameWindow)
EV_COMMAND(CM_BUTTON,CmButton),
END_RESPONSE_TABLE;
void TMyWin::CmButton()
{
Invalidate();
//UpdateWindow();
}
void TMyWin::Paint(TDC& dc,BOOL,TRect&)
{
for (int i=1;iGetNumLines();i++)
{
int lineLength= multiLiner->GetLineLength(i-1);
txt= new char[lineLength];
multiLiner->GetLine(txt,lineLength,i-1);
dc.TextOut(250,50+i*20,txt);
delete txt;
}
}
class TMyApp:public TApplication
{
public:
TMyApp(): TApplication(){};
void InitMainWindow()
{
MainWindow=new TMyWin();
}
};
int OwlMain(int,char *[])
{
return TMyApp().Run();
}
9.2.2. Caaeaiea
1) N?aaieoa eenoeiae i?ia?aii, i?eaiaeeiua a 9.2.1 e a 9.1.1, oaeaeea
iniaia aieiaiea ia ?acee/ey a eiino?oe?iaaiee iaeiino?i/iie e
iiiaino?i/iie iaiaeae ?aaeaeoe?iaaiey.
2) Nicaeaeoa e auiieieoa i?eeiaeaiea.
3) Nicaeaeoa yeaiaio iaith i?eeeaaeiiai ieia, aucuaathuee iaeiino?i/iue
eee iiiaino?i/iue yeaiaio ?aaeaeoe?iaaiey.
9.3. Iaiiiai aiaeeeneiai
to edit – ?aaeaeoe?iaaoue
GetLine – to get a line – iieo/eoue no?ieo
GetLineLength – to get a line length – iieo/eoue aeeeio no?iee
10. I?eeiaeaiea. Eeannu aeaeeioaee OWL.
10.1. Ea?a?oey eeannia aeaeeioaee OWL, eniieuecoaiuo a iiniaee
10.2. Eeann TApplication
I?iecaiaeiue io eeanna TModule. Eniieuecoaony aeey ii?iaeaeaiey eeanna
aeey iauaeoa-i?eeiaeaiey Windows.
Eeann TApplication niaea?aeeo 7 /eaiia-aeaiiuo e 35 /eaiia-ooieoeee, ec
eioi?uo a aeaiiii iiniaee eniieuecothony:
10.2.1. *eai-aeaiiia:
TFrameWindow *MainWindow; public
Oeacaoaeue ia aeaaiia ieii i?eeiaeaiey.
10.2.2. *eai-ooieoeee:
virtual void InitApplication(); protected
Auiieiyao ethaoth eieoeeaeecaoeeth, iaiaoiaeeioth oieueei aeey ia?aiai
yecaiiey?a i?eeiaeaiey. Ii oiie/aieth InitApplication ieaai ia
auiieiyao.
virtual void InitInstance(); protected
Auiiiyaony aeey eaaeaeiai yecaiiey?a i?eeiaeaiey. InitInstance aucuaaao
InitMainWindow, a caoai nicaeaao e aunaa/eaaao ia ye?aia aeaaiia ieii
iooai auciaa niioaaonoaaiii TWindow::Create e TWindow::Show.
virtual int Run(); public
Eieoeeaeece?oao yecaiiey? i?eeiaeaiey, aucuaay InitApplication aeey
ia?aiai yecaiiey?a e InitInstance aeey anao inoaeueiuo. Anee
eieoeeaeecaoeey i?ioea oniaoii, Run aucuaaao MessageLoop e caioneaao
i?eeiaeaiea.
virtual void InitMainWindow(); protected
Ii oiie/aieth InitMainWindow nicaeaao iaiauaiiue iauaeo – aeaaiia ieii n
eiaiai i?eeiaeaiey a ea/anoaa caaieiaea. Aeey nicaeaiey o?aaoaiiai
aeaaiiai ieia iaiaoiaeeii ia?aii?aaeaeeoue InitMainWindow, ia caaua
naeaeaoue nnueeo a MainWindow ia nicaeaiiia aeaaiia ieii (eeanna
TFrameWindow).
TAplication( const far*name=0); public
Yoio eiino?oeoi? nicaeaao iauaeo eeanna TApplication.
name – oeacaoaeue ia eiy i?eeiaeaiey.
Yoio eiino?oeoi? eniieuecoaony a oaea ooieoeee OwlMain.
10.3. Eeann TFrameWindow
I?iecaiaeiue io TWindow. Oi?aaeyao iiaaaeaieai aeaaiiai ieia
iin?aaenoaii oi?aaeaiey eeaaeaoo?ie e ia?aaioeie eiiaiae iaith.
Eeann TFrameWindow niaea?aeeo 4 /eai-aeaiiuo e 25 /eai-ooieoeee, ec
eioi?uo a aeaiiii iiniaee eniieuecothony:
10.3.1. *eai-ooieoeee:
virtual BOOL AssignMenu(TResId menuId); public
Onoaiaaeeaaao Attr.Menu ?aaiui a?aoiaioo menuId e oaeaeyao i?aaeuaeouaa
iaith ieia
void SetupWindow(); protected
Aucuaaao TWindow::SetupWindow() aeey nicaeaiey ieii a nienea iioiieia.
SetupWindow() auiieiyao ia/aeueioth iiaeaioiaeo iieueciaaoaeueneiai
ieia, anee iii nouanoaoao, naycuaaao iaith ?aiee n ?ano?nii iaith.
TFrameWindow(TWindow *parent, const char far *title=0, TWindow
*clientWnd=0, BOOL shrinkToClient=FALSE, TModule *module=0); public
Nicaeaao iauaeo-ieii n ieiii i?aaeeii, ia eioi?ia oeacuuaaao parent.
Onoaiaaeeaaao iiceoeee e iiey ?acia?ia no?oeoo?u Attr ?aaiuie
noaiaea?oiui cia/aieyi.
title – eiy caaieiaea nicaeaaaaiiai ieia.
10.4. Eeann TWindow
I?iecaiaeiue io eeannia TEventHandler e TStreamableBase. Iaania/eaaao
niaoeeoe/aneia iiaaaeaiea ieii.
Eeann TWindow niaea?aeeo 12 /eai-aeaiiuo e 175 /eai-ooieoeee, ec eio?uo
a aeaiiii iiniaee eniieuecothony:
10.4.1. *eai-aeaiiua:
TWindowAttr Attr; public
Nio?aiyao no?oeoo?o TWindowAttr, niaea?aeauoth ao?eaoou nicaeaiey ieia.
TWindow *parent; public
Oeacuaaao ia eioa?oaeniue iauaeo, neoaeauee ieiii-i?aaeeii aeey aeaiiiai
eioa?oaeniiai iauaeoa.
char far *title; public
Oeacuaaaoia caaieiaie ieia.
10.4.2. *eai-ooieoeee:
TWindow(TWindow *parent, const char far *title=0, TModule *module=0);
public
Eiino?oeoi? eeanna TWindow. Aeiaaaeyao this e nieneo ieii-iioiieia
parent, anee this ia 0.
Oaeaea onoaiaaeeaaao caaieiaie ieia title e eieoeeaeece?oao ao?eaoou
nicaeaiey ieia.
virtual BOOL CanClose(); public
Aica?auaao TRUE, anee annioeee?iaaiiue eioa?oaeniue yeaiaio iiaeao auoue
cae?uo. Eia/a aica?auaao FALSE.
inline TApplicacion*GetApplication(); public
Iieo/aao oeacaoaeue ia iauaeo TApplication, naycaiiue n this.
int MessageBox(const far*text, const char far* caption=0, UINT
type=MB_OK); public
Nicaeao e auaiaeeo ieii niiauaiee, niaea?aeauaa niiauaiea text,
caaieiaie caption e ieeoia?aiiu eee eiiiee type.
Oei type iiaeao niaea?aeaoue eiiaeiaoeee eiinoaio MB_XXX: IDABORT,
IDCANCEL, IDIGNORE, IDNO, IDOK, IDRETRY, IDYES.
virtual void Paint(TDC& dc, BOOL erase, TRect& rect); public
Aucuaaaony aaciauie eeannaie i?e ?aaae?iaaiee(ioeeeea) ia niiauaiea
WM_PAINT.
Paint aucuaaaony n iiiiuueth EvPaint e aaoiiaoe/anee cai?aoeaaaony
nenoaiie Windows aeey iiaoi?iiai auaiaea niaea?aeeiiai ieia.
dc yaeyaony eiioaenoii ioia?aaeaiey ?eniaaiey, ia?aaeaaaaiui ooieoeeyi
?eniaaiey oae noa e a?aoe/aneiai auaiaea.
Caaeaiiay nnueea ia no?oeoo?o TRect i?aaenoaaeyao niaie ia?aie/eaathuee
i?yiioaieueiee iaeanoe, o?aaothuae ia?a?eniaee.
erase iieacuaaao, ioaeii ee noe?aoue oii.
10.5. Eeann TDC
ssaeyaony ei?iaaui eeannii aeey aniiiiaaoaeueiuo eeannia eiioaenoia
ono?ienoa GDI. Eeann TDC niaea?aeeo 8 /eai-aeaiiuo e 149 /eai-ooieoeee,
ec eioi?uo a aeaiiii iiniaee eniieuecothony:
10.5.1. *eai-ooieoeee:
inline BOOL Ellipse(int x1, int y1, int x2, int y2); public
inline BOOL Ellipse(const TPoint& p1, const TPoint& p2);
?enoao e caiieiyao yeeein a aeaiiii eiioaenoa, eniieuecoy aua?aiiua
iauaeou – ia?i e eenoue. Oeaio? yeeeina – oeaio? ia?aie/eaathuaai
i?yiioaieueieea.
Aica?auaao TRUE, anee aucia oniaoiue, eia/a – FALSE.
inline BOOL Rectangle(int x1, int y1, int x2, int y2); public
inline BOOL Rectangle(const TPoint& point, const TSize& size);
inline BOOL Rectangle(const TRect& rect);
?enoao e caiieiyao i?yiioaieueiee caaeaiiiai ?acia?a a aeaiiii eiioaenoa
n eniieueciaaieai oaeouaai ia?a e eenoe.
Aica?auaao TRUE i?e oniaoiii caaa?oaiee e FALSE a i?ioeaiii neo/aa.
void SelectObject(const TPen& pen); public
Auae?aao caaeaiiia ia?i a caaeaiiii eiioaenoa ono?ienoaa. Aua?aiiue
?aiaa iauaeo nio?aiyaony a niioaaonoaothuai yeaiaioa aeaiiuo.
inline virtual TColor SetTextColor(TColor color); public
Onoaiaaeeaaao oaeouee oeaao oaenoa a aeaiiii eiioaenoa a caaeaiiia
cia/aiea color. Oeaao oaenoa ii?aaeaeyao oeaao, eniieuecoaiue a
TDC::TextOut.
inline virtual BOOL TextOut(int x, int y, const char far* string, int
count=-1); public
inline virtual BOOL TextOut(const TPoint& point, const char far* string,
int count=-1);
?enoao aei count neiaieia caaeaiiie, caeai/eaathuaeny ioeai, no?iee
string a aeaiiii eiioaenoa ono?ienoaa. Anee count=-1(ii oiie/ieth),
?enoaony any no?iea. A?aoiaiou x,y caaeatho eiae/aneea eii?aeeiaou
iii?iie oi/ee, eioi?ay eniieuecoaony aeey au?aaieaaiey ia?aiai neiaiea.
10.6. Eeann TScrollBar
Iauaeou oeia TScrollBar i?aaenoaaeytho naiinoiyoaeueiua aa?oeeaeueiua e
ai?eciioaeueiua eeiaeee i?ie?ooee. Aieueoeinoai /eai-ooieoeee TScrollBar
oi?aaeytho iiceoeeae e aeeaiaciiii ia?aiauaiey aaaoiea eeiaeee
i?ie?ooee.
Eeann TScrollBar niaea?aeeo 2 /eai-aeaiiuo e 18 /eai-ooieoeee, ec
eioi?uo a aeaiii iiniaee eniieuecothony:
10.6.1. *eai-ooieoeee:
TScrollBar(TWindow* parent, int id, int x, int y, int w, int h, BOOL
isHScrollBar, TModule* module=0); public
Nicaeaao e eieoeeaeece?oao iauaeo oeia TScrollBar a caaeaiiii ieia n
eaeaioeoeeaoi?ii id, a iiceoeee x,y e ?acia?aie w,h. Anee isHScrollBar
?aaai TRUE, oi nicaeaaony ai?eciioaeueiay eeiaeea i?ie?ooee, eia/a –
aa?oeeaeueiay.
inline virtual int GetPosition(); public
Aica?auaao oaeouoth iiceoeeth aaaoiea eeiaeee i?ie?ooee.
inline virtual void SetRange(int min, int max); public
Onoaiaaeeaaao eeiaeeo i?ie?ooee a aeeaiaciia io min aei max.
10.7. Eeann TEdit
Eeann TEdit eniieuecoaony i?e nicaeaiee iauaeoa “iaiaeue
?aaeaeoe?iaaiey”. TEdit yaeyaony i?iecaiaeiui io eeanna TStatic, eioi?ue
a naith i/a?aaeue ii?iaeaeai io eeanna TControl.
Nouanoaoao aeaa ?aciiaeaeiinoe iaiaee ?aaeaeoe?iaaiey – iaeiino?i/iay e
iiiaino?i/iay. ssaeyynue eioa?oaeniui yeaiaioii, iaiaeue ?aaeaeoe?iaaiey
iicaieyao aaanoe oaeno e ?aaeaeoe?iaaoue aai.
*eai-ooieoeee eeanna TEdit ia?aaaouaatho oaeno iaiaee ?aaeaeoe?iaaiey.
Eeann TEdit niaea?aeeo 1 /eai-aeaiiia e 52 /eai-ooieoeee, ec eioi?uo a
aeaiiii iiniaee eniieuecothony:
TEdit(TWindow *parent, int id, const char far *text, int x, int y, int
w, int h, UINT textlen, BOOL multiline=FALSE, TModule *module=0);
public
Eiino?oe?oao iaiaeue ?aaeaeoe?iaaiey a ieia parent, caaeaaay
eaeaioeoeeaoi? iaiaee id, ianoiiieiaeaiea x,y e ?acia?u iaiaee w,h,
aeeeio aaiaeeiiai oaenoa textlen. A?aoiaio multiline caaeaao aeae
iaiaee ?aaeaeoe?iaaiey(iaeiino?i/iay eee iiiaino?i/iay).
BOOL GetLine(char far* str, int strSize, int lineNumber); public
Iieo/aao oaenoiaoth no?ieo n iiia?ii lineNumber ec iaiaee
?aaeaeoe?iaaiey e aica?auaao aa a no?iea str, caeai/eaathuaeny ioeai.
strSize caaeaao eiee/anoai iieo/aaiuo neiaieia.
int GetLineLength(int lineNumber); public
Aica?auaao eiee/anoai neiaieia a no?iea, caaeaiiie iiia?ii lineNumber.
inline int GetNumLines(); public
Aica?auaao eiee/anoai no?ie, aaaaeaiiuo a iiiaino?i/ioth iaiaeue
?aaeaeoe?iaaiey. Aica?auaao ioeue, anee oaeno ionoonoaoao.
EEOA?AOO?A
1. Ni?aai/iee ii aeaeeioaea ObjectWindows 2.0 aeey C++. / Nino. Y.I.
Ai?iaay e ae?. – Eeaa: “Aeeaeaeoeea”, 1995 – 494 n.
2. Oii Naai. I?ia?aiie?iaaiea aeey Windows a Borland C++. Ia?. n aiae. –
I: AEIII, 1995 – 480 n.
PAGE 46
( Iaaeaaaeaa A. E., Noaiaiia ?. A. ANIEO, EAE.
PAGE 1
I?aeoe/aneee eo?n i?ia?aiie?iaaiey ia BORLAND C++
Нашли опечатку? Выделите и нажмите CTRL+Enter