18.01.2015 Views

Untitled - Xakep Online

Untitled - Xakep Online

Untitled - Xakep Online

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!