亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ch18.htm

?? Learning language of Visual C++6
?? HTM
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
    CMC_TYPE_INDIVIDUAL,
    "SMTP:kate@gregcons.com",
    CMC_ROLE_TO,
    CMC_RECIP_LAST_ELEMENT,
    NULL };
</PRE>
<P>The type, role, and flags use one of these predefined values:</P>
<P>
<H4>Listing 18.1&#160;&#160;(Excerpt from \MSDev\Include\XCMC.H) Command Definitions</H4>
<PRE>/* NAME TYPES */
#define CMC_TYPE_UNKNOWN                    ((CMC_enum) 0)
#define CMC_TYPE_INDIVIDUAL                 ((CMC_enum) 1)
#define CMC_TYPE_GROUP                      ((CMC_enum) 2)
/* ROLES */
#define CMC_ROLE_TO                         ((CMC_enum) 0)
#define CMC_ROLE_CC                         ((CMC_enum) 1)
#define CMC_ROLE_BCC                        ((CMC_enum) 2)
#define CMC_ROLE_ORIGINATOR                 ((CMC_enum) 3)
#define CMC_ROLE_AUTHORIZING_USER           ((CMC_enum) 4)
/* RECIPIENT FLAGS */
#define CMC_RECIP_IGNORE                    ((CMC_flags) 1)
#define CMC_RECIP_LIST_TRUNCATED            ((CMC_flags) 2)
</PRE>
<PRE>#define CMC_RECIP_LAST_ELEMENT              ((CMC_flags) 0x80000000)
</PRE>
<P>There is a message structure you could fill in the same way or by presenting the
user with a dialog box to enter the message details. This structure includes a pointer
to the recipient structure you have already filled. Your program then calls cmc_logon(),
cmc_send(), and cmc_logoff() to complete the process.</P>
<P><B>Extended MAPI&#160;&#160;</B>Extended MAPI is based on COM, the Component Object
Model. Messages, recipients, and many other entities are defined as objects rather
than as C structures. There are far more object types in Extended MAPI than there
are structure types in CMC. Access to these objects is through OLE (ActiveX) interfaces.
The objects expose properties, methods, and events. These concepts are discussed
in Part IV, Chapter 13, &quot;ActiveX Concepts.&quot;</P>
<P><B>Active Messaging&#160;&#160;</B>If you understand Automation (described in
Chapter 16, &quot;Building an Automation Server&quot;), you will easily understand
Active Messaging. Your application must be an Automation client, however, and building
such a client is beyond the scope of this chapter. Various ways to use Active Messaging
are in Visual Basic programming and VBA scripts for programs such as Excel. Your
program would set up objects and then set their exposed properties (for example,
the subject line of a message object) and invoke their exposed methods (for example,
the Send() method of a message object).</P>
<P>The objects used in Active Messaging include the following:</P>

<UL>
	<LI>Session
	<P>
	<LI>Message
	<P>
	<LI>Recipient
	<P>
	<LI>Attachment
</UL>

<P>Active messaging is part of the Collaboration Data Objects (CDO) library. A detailed
reference of these objects, as well as their properties and methods, can be found
in MSDN under Platform SDK, Database and Messaging Services, Collaboration Data Objects,
CDO Library, and Reference. You'll find three articles on using Active Messaging,
and sample applications, under Technical Articles, Database and Messaging Services,
Microsoft Exchange Server.</P>
<P>
<H2><A NAME="Heading7"></A>Using the WinInet Classes</H2>
<P>MFC 4.2 introduced a number of new classes that eliminate the need to learn socket
programming when your applications require access to standard Internet client services.
Figure 18.4 shows the way these classes relate to each other. Collectively known
as the WinInet classes, they are the following:</P>

<UL>
	<LI>CInternetSession
	<P>
	<LI>CInternetConnection
	<P>
	<LI>CInternetFile
	<P>
	<LI>HttpConnection
	<P>
	<LI>CHttpFile
	<P>
	<LI>CGopherFile
	<P>
	<LI>CFtpConnection
	<P>
	<LI>CGopherConnection
	<P>
	<LI>CFileFind
	<P>
	<LI>CFtpFileFind
	<P>
	<LI>CGopherFileFind
	<P>
	<LI>CGopherLocator
	<P>
	<LI>CInternetException
</UL>



<BLOCKQUOTE>
	<P>
<HR>
<strong>TIP:</strong> These classes help you write Internet <I>client</I> applications,
	with which users interact directly. If you want to write <I>server</I> applications,
	which interact with client applications, you'll be interested in ISAPI, discussed
	in the next section. 
<HR>


</BLOCKQUOTE>

<P>First, your program establishes a session by creating a CInternetSession. Then,
if you have a uniform resource locator (URL) to a Gopher, FTP, or Web (HTTP) resource,
you can call that session's OpenURL() function to retrieve the resource as a read-only
CInternetFile. Your application can read the file, using CStdioFile functions, and
manipulate that data in whatever way you need.</P>
<P><A HREF="javascript:popUp('18uvc04.gif')"><B>FIG. 18.4</B></A><B> </B><I>The WinInet
classes make writing Internet client programs easier.</I></P>
<P>If you don't have an URL or don't want to retrieve a read-only file, you proceed
differently after establishing the session. Make a connection with a specific protocol
by calling the session's GetFtpConnection(), GetGopherConnection(), or GetHttpConnection()
functions, which return the appropriate connection object. You then call the connection's
OpenFile() function. CFtpConnection::OpenFile() returns a CInternetFile; CGopherConnection::OpenFile()
returns a CGopherFile; and CHttpConnection::OpenFile() returns a CHttpFile. The CFileFind
class and its derived classes help you find the file you want to open.</P>
<P>Chapter 19, &quot;Internet Programming with the WinInet Classes,&quot; works through
a sample client program using WinInet classes to establish an Internet session and
retrieve information.</P>


<BLOCKQUOTE>
	<P>
<HR>
<strong>NOTE:</strong> Though email is a standard Internet application, you'll notice that
	the WinInet classes don't have any email functionality. That's because email is handled
	by MAPI. There is no support for Usenet news either, in the WinInet classes or elsewhere.
	
<HR>


</BLOCKQUOTE>

<H2><A NAME="Heading8"></A>Using Internet Server API (ISAPI) Classes</H2>
<P>ISAPI is used to enhance and extend the capabilities of your HTTP (World Wide
Web) server. ISAPI developers produce <I>extensions</I> and <I>filters</I>. Extensions
are DLLs invoked by a user from a Web page in much the same way as CGI (common gateway
interface) applications are invoked from a Web page. Filters are DLLs that run with
the server and examine or change the data going to and from the server. For example,
a filter might redirect requests for one file to a new location.</P>


<BLOCKQUOTE>
	<P>
<HR>
<strong>NOTE:</strong> For the ISAPI extensions and filters that you write to be useful,
	your Web pages must be kept on a server that is running an ISAPI-compliant server
	such as the Microsoft IIS Server. You must have permission to install DLLs onto the
	server, and for an ISAPI filter, you must be able to change the Registry on the server.
	If your Web pages are kept on a machine administered by your Internet service provider
	(ISP), you will probably not be able to use ISAPI to bring more power to your Web
	pages. You may choose to move your pages to a dedicated server (a powerful Intel
	machine running Windows NT Server 4.0 and Microsoft IIS is a good combination) so
	that you can use ISAPI, but this will involve considerable expense. Make sure that
	you understand the constraints of your current Web server before embarking on a project
	with ISAPI.<BR>
	</P>

	<P>One of the major advantages of ActiveX controls for the Internet (discussed in
	Chapter 20, &quot;Building an Internet ActiveX Control&quot;) is that you don't need
	access to the server in order to implement them.&#160;n 
<HR>


</BLOCKQUOTE>

<P>The five MFC ISAPI classes form a wrapper for the API to make it easier to use:</P>

<UL>
	<LI>CHttpServer
	<P>
	<LI>CHttpFilter
	<P>
	<LI>CHttpServerContext
	<P>
	<LI>CHttpFilterContext
	<P>
	<LI>CHtmlStream
</UL>

<P>Your application will have a server or a filter class (or both) that inherits
from CHttpServer or CHttpFilter. These are rather like the classes in a normal application
that inherit from CWinApp. There is only one instance of the class in each DLL, and
each interaction of the server with a client takes place through its own instance
of the appropriate context class. (A DLL may contain both a server and a filter but,
at most, one of each.) CHtmlStream is a helper class that describes a stream of HTML
to be sent by a server to a client.</P>
<P>The ISAPI Extension Wizard is an AppWizard that simplifies creating extensions
and filters. To use this wizard, choose File, New (as always) and then the Project
tab. Scroll down the list on the left and select ISAPI Extension Wizard (as shown
in Figure 18.5). Fill in the project name and folder, and click OK.</P>
<P>Creating a server extension is a one-step process. That step, which is also the
first step for a filter, is shown in Figure 18.6. The names and descriptions for
the filter and extension are based on the project name that you chose.</P>
<P>If you choose to create a filter, the Next button is enabled and you can move
to the second step for filters, shown in Figure 18.7. This list of parameters gives
you an idea of the power of an ISAPI filter. You can monitor all incoming and outgoing
requests and raw data, authenticate users, log traffic, and more.</P>
<P><A HREF="javascript:popUp('18uvc05.gif')"><B>FIG. 18.5</B></A><B> </B><I>The ISAPI
Extension Wizard is another kind of AppWizard.</I></P>
<P><A HREF="javascript:popUp('18uvc06.gif')"><B>FIG. 18.6</B></A><B> </B><I>The first
step in the ISAPI Extension Wizard process is to name the components of the DLL that
you are creating.</I></P>
<P><A HREF="javascript:popUp('18uvc07.gif')"><B>FIG. 18.7</B></A><B> </B><I>The second
step in the ISAPI Extension Wizard process is to set filter parameters.</I></P>
<P>AppWizard shows you a final confirmation screen, like the one in Figure 18.8,
before creating the files. When you create a server and a filter at the same time,
11 files are created for you, including source and headers for the class that inherits
from CHttpServer and the class that inherits from CHttpFilter.</P>
<P><A HREF="javascript:popUp('18uvc08.gif')"><B>FIG. 18.8</B></A><B> </B><I>The ISAPI
Extension Wizard process summarizes the files that will be created.</I></P>
<P>Writing a filter from this shell is quite simple. You have been provided with
a stub function to react to each event for which notification was requested. For
example, the filter class has a function called OnEndOfNetSession(), which is called
when a client's session with this server is ending. You add code to this function
to log, monitor, or otherwise react to this event. When the filter is complete, you
edit the Registry by hand so that the server will run your DLL.</P>
<P>To write an extension, add one or more functions to your DLL. Each function will
be passed a CHttpContext pointer, which can be used to gather information such as
the user's IP address. If the function is invoked from an HTML form, additional parameters
such as values of other fields on the form will also be passed to the function.</P>
<P>The details of what the function does depend on your application. If you are implementing
an online ordering system, the functions involved will be lengthy and complex. Other
extensions will be simpler.</P>
<P>When the function is complete, place the DLL in the executable folder for the
server--usually the folder where CGI programs are kept--and adjust your Web pages
so that they include links to your DLL, like this:</P>
<P>
<PRE>Now you can &lt;A HREF=http://www.company.com/exec/orders.dll&gt;
place an order&lt;/A&gt; online!
</PRE>
<P>For more information on ISAPI programming, be sure to read Que's <I>Special Edition
Using ISAPI</I>. You will discover how ISAPI applications can make your Web site
dynamic and interactive, learn how to write filters and extensions, and cover advanced
topics including debugging ISAPI applications and writing multithreaded applications.</P>
<P>Adding the Internet to your applications is an exciting trend. It's going to make
lots of work for programmers and create some powerful products that simplify the
working life of anyone with an Internet connection. Just a year ago, writing Internet
applications meant getting your fingernails dirty with sockets programming, memorizing
TCP/IP ports, and reading RFCs. The new WinInet and ISAPI classes, as well as improvements
to the old MAPI support, mean that today you can add amazing power to your application
with just a few lines of code or by selecting a box on an AppWizard dialog box.&#160;l</P>
<H1></H1>
<CENTER>
<P>
<HR>
<A HREF="../ch17/ch17.htm"><IMG SRC="../button/previous.gif" WIDTH="128" HEIGHT="28"
ALIGN="BOTTOM" ALT="Previous chapter" BORDER="0"></A><A HREF="../ch19/ch19.htm"><IMG
SRC="../button/next.gif" WIDTH="128" HEIGHT="28" ALIGN="BOTTOM" ALT="Next chapter"
BORDER="0"></A><A HREF="../index.htm"><IMG SRC="../button/contents.gif" WIDTH="128"
HEIGHT="28" ALIGN="BOTTOM" ALT="Contents" BORDER="0"></A> <BR>
</P>

<P>&#169; <A HREF="../copy.htm">Copyright</A>, Macmillan Computer Publishing. All
rights reserved.
</CENTER>


</BODY>

</HTML>

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲福利一区二区三区| 国产精品99久久久久久久vr| 国产成人精品影院| 欧美白人最猛性xxxxx69交| 一区二区久久久| 国产成人综合视频| 亚洲高清视频的网址| 欧美激情中文不卡| 国产成a人亚洲精| 日本一区二区三区四区在线视频| 国产成人在线免费观看| 丝袜a∨在线一区二区三区不卡| 在线视频综合导航| 一级女性全黄久久生活片免费| 久久综合给合久久狠狠狠97色69| 91麻豆国产香蕉久久精品| 欧美国产国产综合| 精品少妇一区二区三区视频免付费| 91福利视频网站| 日本在线播放一区二区三区| 欧美电影免费观看高清完整版| 国产精品一二一区| 麻豆成人91精品二区三区| 国产视频一区二区在线| 91成人网在线| 99re热视频这里只精品| 日日夜夜一区二区| 亚洲一区二区三区中文字幕| 精品99999| 色婷婷精品大在线视频| 日韩一区欧美二区| 午夜精品视频在线观看| 国产日韩三级在线| 精品动漫一区二区三区在线观看| 欧美一级在线视频| 成人福利视频网站| 午夜久久久久久久久久一区二区| 一区二区高清免费观看影视大全| 最新不卡av在线| 2024国产精品| 久久一夜天堂av一区二区三区| 精品久久99ma| 精品动漫一区二区三区在线观看| 2欧美一区二区三区在线观看视频| 日韩视频国产视频| 色屁屁一区二区| 欧美视频一区二区三区在线观看| 成人亚洲一区二区一| 日韩中文字幕不卡| 男男视频亚洲欧美| 亚洲国产三级在线| 丝袜美腿亚洲色图| 看片网站欧美日韩| 亚洲午夜电影在线观看| 亚洲一区二区四区蜜桃| 天堂久久久久va久久久久| 日韩av一二三| 国产精品亚洲专一区二区三区 | 一个色综合av| 成人av电影在线| 91网站最新网址| 欧美精品v国产精品v日韩精品| 国产成人免费网站| 99在线精品观看| 成人app软件下载大全免费| 一本色道久久综合亚洲aⅴ蜜桃 | 中文字幕乱码久久午夜不卡 | 波多野结衣一区二区三区| 99久久精品国产一区| 欧美日产国产精品| 色88888久久久久久影院野外| 欧美日韩一区三区| 91福利国产精品| 日韩限制级电影在线观看| 欧美极品aⅴ影院| 亚洲成av人影院| 亚洲高清视频中文字幕| 国产精品自拍三区| 色呦呦日韩精品| 精品国产凹凸成av人网站| 亚洲天堂免费看| 久久国产欧美日韩精品| 91色婷婷久久久久合中文| 欧美丰满嫩嫩电影| 国产精品国产三级国产aⅴ中文 | 欧美一级淫片007| 国产精品女人毛片| 国产精品美日韩| 轻轻草成人在线| 色屁屁一区二区| 久久精品视频免费| 日本中文在线一区| 91香蕉国产在线观看软件| 精品国产91九色蝌蚪| 洋洋av久久久久久久一区| 久久国产剧场电影| 欧美在线999| 国产精品欧美综合在线| 久久aⅴ国产欧美74aaa| 在线观看av不卡| 亚洲欧洲色图综合| 亚洲资源在线观看| 岛国精品在线观看| 日韩欧美中文一区| 亚洲亚洲人成综合网络| 成人午夜激情视频| 精品理论电影在线| 偷窥国产亚洲免费视频| 91福利资源站| 国产欧美一区二区三区沐欲| 男女男精品网站| 欧美日韩综合不卡| 亚洲影视在线观看| 色天天综合久久久久综合片| 精品无人码麻豆乱码1区2区| 久久99国内精品| 欧美精品在线视频| 亚洲大尺度视频在线观看| www.亚洲精品| 国产精品麻豆欧美日韩ww| 国产乱子轮精品视频| 国产精品 欧美精品| 日韩免费视频一区二区| 丝瓜av网站精品一区二区 | 成人爽a毛片一区二区免费| 精品伦理精品一区| 美女视频第一区二区三区免费观看网站| 欧美日韩在线电影| 性做久久久久久免费观看欧美| 色狠狠综合天天综合综合| 亚洲欧美一区二区三区极速播放 | 国产精品美女久久久久高潮| 国产精品综合一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 日本sm残虐另类| 日韩一级黄色片| 久久国产精品72免费观看| 欧美mv日韩mv国产网站app| 蜜桃免费网站一区二区三区| 欧美一区在线视频| 毛片不卡一区二区| 精品国产成人在线影院| 国产成人精品免费一区二区| 亚洲国产精品成人综合| eeuss鲁片一区二区三区| √…a在线天堂一区| 日本久久精品电影| 午夜精品福利一区二区蜜股av| 91精品国产欧美一区二区18| 精品一二三四区| 国产欧美在线观看一区| 成人sese在线| 亚洲一区二区成人在线观看| 欧美天堂一区二区三区| 免费观看91视频大全| 久久久久久一级片| 日韩精品亚洲一区二区三区免费| 欧美一区二区啪啪| 激情欧美一区二区| 日韩一级片网址| 国产精品一二三| 一区二区三区视频在线观看| 欧美精品色一区二区三区| 麻豆国产精品官网| 欧美激情在线一区二区三区| 91国产福利在线| 天使萌一区二区三区免费观看| 欧美va在线播放| 99精品视频中文字幕| 午夜久久电影网| 亚洲精品在线一区二区| 色综合咪咪久久| 久久精品国产久精国产爱| 国产精品欧美一区喷水| 欧美日韩国产综合草草| 国产一区二区三区综合| 一区二区三区欧美激情| 精品国产免费人成在线观看| 99久久777色| 欧美亚洲自拍偷拍| 久久精品国产一区二区三| 亚洲视频你懂的| 精品sm捆绑视频| 欧美午夜精品久久久久久超碰 | 国产欧美一区二区精品忘忧草| 日韩精品一区第一页| 91麻豆精品视频| 精品久久久久av影院| 自拍视频在线观看一区二区| 精品一区二区在线免费观看| av资源站一区| 7777精品伊人久久久大香线蕉经典版下载| 亚洲国产视频网站| 激情成人综合网| 国产精品三级视频| 一本色道a无线码一区v| 国模套图日韩精品一区二区| 尤物在线观看一区| 欧美性一二三区| 国产精品亚洲成人|