You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ÎÑÅË ÍÀ ÑËÓÆÁÅ ËÞÄÅÉ<br />
ÑÒÐ. 90<br />
ÊÎÄÈÌ ÑÎÊÅÒÛ ÍÀ MFC<br />
Ïèøåì áåñêîíå÷íûå<br />
ñåòåâûå êðåñòèêè-íîëèêè<br />
ïðè ïîìîùè MFC êëàññà<br />
CSocket.<br />
ÑÒÐ. 94<br />
ÏÀÐÑÈÌ ÏÐÎÑÒÎÐÛ XML<br />
Ïðîãðàììèðóåì ñâîé<br />
ìîäóëü äëÿ ïåðåâîäà<br />
XML äàííûõ â MySQL è<br />
îáðàòíî.<br />
navNoReadFromCache - íå èñïîëüçîâàòü<br />
÷òåíèå èç êýøà.<br />
navNoWriteToCache - íå çàïèñûâàòü<br />
íè÷åãî â êýø.<br />
navAllowAutosearch - ðàçðåøàòü àâòîïîèñê,<br />
åñëè íè÷åãî íå íàéäåíî (ïîìíèøü ïåðåáîð<br />
.com, .mil, .edu è âñå îñòàëüíîå Îõ, êàê<br />
ýòî ìíîãèõ áåñèò :)).<br />
Õîòÿ, åñëè òåáå íàäî ïåðåäàòü íà ñåðâàê,<br />
íàïðèìåð, ñîäåðæèìîå ôîðìû ñ ïîìîùüþ<br />
POST, òåáå ïðèãîäèòñÿ è PostData.<br />
Íàïðèìåð, âûçîâ WebBrowser1.Navigate<br />
('www.xakep.ru', navNoHistory); ïðèâåäåò ê<br />
òîìó, ÷òî íè îäíà æèâàÿ äóøà íå óçíàåò î<br />
òâîåì ïîñåùåíèè ñàéòà www.xakep.ru â ðàáî÷åå<br />
âðåìÿ ;).<br />
Òåïåðü ñàìîå âðåìÿ âçãëÿíóòü íà toolbar.<br />
Òàì íåò íè÷åãî ñëîæíîãî, îíêëèêè áîëüøèíñòâà<br />
êíîïîê òû íàéäåøü â òàáëèöå.<br />
OLECMDEXECOPT_DONTPROMP-<br />
TUSER - âûïîëíÿòü, íå ñïðàøèâàÿ þçåðà.<br />
OLECMDEXECOPT_SHOWHELP - ïðîñòî<br />
âûâåñòè õåëï î êîìàíäå.<br />
Îñòàëüíûå ïàðàìåòðû îñîáîãî çíà÷åíèÿ<br />
íå èìåþò, ïðàâäà, íàäî ïîìíèòü, ÷òî íå âñå<br />
êîìàíäû ìîãóò ïîääåðæèâàòüñÿ. ×òîáû ïîëó÷èòü<br />
ñïèñîê äîñòóïíûõ, âîñïîëüçóéñÿ ìåòîäîì<br />
QueryStatusWB.<br />
Äàëåå ÿ ðåøèë ñîçäàòü ãëàâíîå ìåíþ äëÿ<br />
ñâîåãî áðàóçåðà. Ñ ïîìîùüþ TMainMenu ÿ<br />
ñîçäàë "ôàéë" è "ñåðâèñ". Â ìåíþ "ôàéë" èççà<br />
ìîåé ëåíè ïîìåñòèëîñü òîëüêî "ñîõðàíèòü<br />
êàê" è "àâòîíîìíî", ïîýòîìó äàâàé âûææåì â<br />
îáðàáîò÷èêàõ èõ îíêëèêîâ ñîîòâåòñòâåííî:<br />
WebBrowser1.ExecWB(OLECMDID_SAVEAS,<br />
OLECMDEXECOPT_DODEFAULT); - ñîõðàíåíèå<br />
Ðèñ. 1. Ïðèìèòèâíåé íåêóäà...<br />
ÑÏÈÑÎÊ ÊÍÎÏÎÊ<br />
Êíîïêà "Íàçàä" - îáðàáîò÷èê OnClick - WebBrowser1.GoBack;<br />
Êíîïêà "Âïåðåä" - îáðàáîò÷èê OnClick -<br />
WebBrowser1.GoForward;<br />
Êíîïêà "Ñòîï" - îáðàáîò÷èê OnClick - WebBrowser1.Stop;<br />
Êíîïêà "Refresh" - îáðàáîò÷èê OnClick - WebBrowser1.Refresh;<br />
Êíîïêà "Home" - îáðàáîò÷èê OnClick - WebBrowser1.GoHome;<br />
Âîò, ñîáñòâåííî, è âñå èõ êîðîòêèå<br />
OnClick'è. Òàê èì è íàäî. À ìû ñåé÷àñ çàéìåìñÿ<br />
áîëåå èíòåðåñíûìè âåùàìè: ïå÷àòü,<br />
ïîèñê è ñîõðàíåíèå ñòðàíèöû. Ñàìûé ïðîñòîé<br />
ñïîñîá ïå÷àòè (îí æå OnClick êíîïêè<br />
"Print") âûãëÿäèò òàê:<br />
IF N4.Checked then webbrowser1.offline:= false else<br />
webbrowser1.offline:= true; - ïîäïóíêò "Àâòîíîìíî"<br />
Âîò, ñîáñòâåííî, è âñå, ÷òî êàñàåòñÿ ñîçäàíèÿ<br />
ñâîåãî îñëèêà. Îí óæå óìååò äîâîëüíî<br />
ìíîãîå, à ïîñëå ïðî÷òåíèÿ ñòàíäàðòíîãî<br />
äåëüôèéñêîãî õåëïà è MSDN òåáå îòêðîþòñÿ<br />
âñå âîçìîæíîñòè äëÿ ñîçäàíèÿ ñâîåãî<br />
opera-killer'a.<br />
Ðèñ. 2. Íó âûëèòûé ïàïî÷êà :)<br />
ÌÎÄÅÐÍÈÇÈÐÓÅÌ ÈÍÒÅÐÔÅÉÑ<br />
Ñóùåñòâóåò ëèøü íåáîëüøîå êîëè÷åñòâî êîìïîíåíòîâ,<br />
çàòî÷åííûõ ïîä óïðàâëåíèå IE. Â<br />
ïðèíöèïå, ýòî ïðàâèëüíî - äîâîëüíî ãëóïî ïèñàòü<br />
êîìïîíåíòû, ïîìîãàþùèå ïðîãðàììèñòó<br />
íàñèëîâàòü ÷óæóþ ïðîãó. Òàêèå âåùè íàäî<br />
óìåòü äåëàòü ñàìîìó. Íåñìîòðÿ íà ýòî, íà<br />
äèñêå òû ìîæåøü íàéòè ôàéë "IE5tools.pas",<br />
ñîäåðæàùèé â ñåáå î÷åíü ìíîãî ïîëåçíûõ<br />
ôóíêöèé äëÿ ðàáîòû ñ IE. Çàãëÿíóâ â åãî íåäðà,<br />
òû óçíàåøü, êàêèå êëþ÷è ðååñòðà íàäî ðåäàêòèðîâàòü<br />
è êàêèå êîìàíäû îòäàâàòü, ÷òîáû<br />
äîáèòüñÿ íóæíîãî ðåçóëüòàòà. À ïîêà ÿ ïîçíàêîìëþ<br />
òåáÿ ñ íåêîòîðûìè ôóíêöèÿìè:<br />
WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT);<br />
Ìåòîä "ExecWB" âîîáùå äîâîëüíî íåïëîõàÿ<br />
âåùü. Â ñóùíîñòè, îí ïðåäñòàâëÿåò ñîáîé<br />
îäèí èç ñïîñîáîâ îáðàùåíèÿ ê èíòåðôåéñó<br />
IOleCommandTarget (îá ýòîì ïîäðîáíåå<br />
òû ìîæåøü ïî÷èòàòü íà msdn):<br />
procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXE-<br />
COPT; var pvaIn: OleVariant; var pvaOut: OleVariant); overload;<br />
Ïðî÷òåíèå ýòîé ñòàòüè âïîëíå<br />
ìîæåò ïðåâðàòèòü òåáÿ â çëîáíîãî<br />
îôèñíîãî òèðàíà :).<br />
Çäåñü cmdID - êîìàíäà. Âîò ÷òî îíà ìîæåò<br />
äåëàòü:<br />
OLECMDID_SAVEAS - âûçûâàåò äèàëîã<br />
"ñîõðàíèòü êàê".<br />
OLECMDID_PRINTPREVIEW - âûçûâàåò<br />
ïðåäïðîñìîòð ïåðåä ïå÷àòüþ.<br />
OLECMDID_FIND - îòêðûâàåò ñòàíäàðòíûé<br />
âèíäîâûé äèàëîã "ïîèñê ôàéëîâ è ïàïîê".<br />
OLECMDID_PROPERTIES - âûâîäèò<br />
"ñâîéñòâà ñòðàíèöû".<br />
Cmdexecopt - ñïîñîá âûïîëíåíèÿ. Ìîæåò<br />
ïðèíèìàòü çíà÷åíèÿ:<br />
OLECMDEXECOPT_DODEFAULT - âûïîëíÿòü<br />
ñ íàñòðîéêàìè ïî óìîë÷àíèþ.<br />
OLECMDEXECOPT_PROMPTUSER - ñíà-<br />
÷àëà ñïðàøèâàòü ó ïîëüçîâàòåëÿ, ïîòîì âûïîëíÿòü.<br />
Íàïðèìåð, âûâåñòè äèàëîã "Save As...".<br />
È âñå-òàêè îí âåðòèòñÿ!<br />
87