青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life is game

(本色)
posts - 11, comments - 4, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

以下為轉(zhuǎn)貼(http://www.chinaaspx.com/club/topic_6_16277.htm
----------------------------------

作者:富 亮

--------------------------------------------------------------------------------

用ASP寫網(wǎng)頁(yè)的程序員,一定對(duì)VBSript語(yǔ)句“Set Conn=Server.Object(‘ADODB.Connection’)”非常熟悉。該語(yǔ)句是利用ASP的Server對(duì)象創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù)控件,它提供了一系列的方法和屬性,可以幫助我們?cè)贏SP中方便的實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作。類似的,在Visual InteDev6.0中,我們還可以看到一些ASP的內(nèi)置組件如“Scripting.FileSystemObject”。但是,在有的場(chǎng)合,僅利用這些是不夠的或復(fù)雜的,而且ASP的Script語(yǔ)言遠(yuǎn)不如C++語(yǔ)言功能強(qiáng)大(如建立鏈表,B+樹結(jié)構(gòu)等),這就使我們想到,是否可以在開發(fā)網(wǎng)頁(yè)時(shí)使用具有良好數(shù)據(jù)結(jié)構(gòu)的C++語(yǔ)言。雖然CGI,ISAPI等都可謂是用C/C++開發(fā)網(wǎng)頁(yè)的先驅(qū),但我們知道CGI,ISAPI的開發(fā)周期很長(zhǎng),且不與網(wǎng)頁(yè)結(jié)合,直觀性差,編寫、調(diào)試?yán)щy;而在穩(wěn)定性上,由于ISAPI是動(dòng)態(tài)鏈接的方式,因此在執(zhí)行若出現(xiàn)問題,會(huì)使得Web服務(wù)器一起癱瘓。而ASP正好能補(bǔ)足這些缺點(diǎn)。
由此可見,如果能學(xué)會(huì)編寫ASP組件就能結(jié)合ASP的長(zhǎng)處編寫出強(qiáng)大的網(wǎng)頁(yè)。可惜的是,筆者在市面上很少看到有專門講如何用VC++來(lái)制作ASP組件的書籍。一般VC書籍只講一些寫Windows窗口程序或再加上編寫普通的動(dòng)態(tài)鏈接庫(kù)。而ASP書籍更是只談ASP中內(nèi)置組件的使用方法。其實(shí),如果要真正掌握編寫ASP組件的機(jī)制,要牽涉到大量的COM技術(shù)的知識(shí)。而一些講COM技術(shù)的書是很深?yuàn)W的,且很少能結(jié)合有用的實(shí)例。為此,筆者想借此文以最簡(jiǎn)單的方法向大家介紹編寫過程。所謂簡(jiǎn)介,正說明將不涉及COM知識(shí)的具體細(xì)節(jié),僅給出實(shí)現(xiàn)方法。
一、建立工程
打開VC++6.0,選擇New Projects中的ALT COM AppWizard, 并輸入好工程名(如MyStudio),記住該工程名將成為ASP組件名的一部分(其實(shí)可以修改,但很麻煩),在下一頁(yè)上選擇Server Type 為DLL,并可考慮在Support MFC前打勾(想必使用MFC編程的人不少)。按Finish結(jié)束。在生成的代碼中有四個(gè)標(biāo)準(zhǔn)的導(dǎo)出函數(shù)注冊(cè)DLL的,我們不必關(guān)心。
::點(diǎn)擊圖片在新窗口中打開::
二、創(chuàng)建COM對(duì)象(新建ATL活動(dòng)模版庫(kù)類)
在菜單上選擇Insert New Class,并新建一個(gè)ATL Class,如取名為CmyComponent,你會(huì)發(fā)現(xiàn)在接口表中出現(xiàn)了一個(gè)ImyComponent,以后創(chuàng)建該接口的方法和屬性就可以在ASP中使用了。把Aggregatable選項(xiàng)去掉,我們不需要它。保持其他不變。
::點(diǎn)擊圖片在新窗口中打開::
三、添加接口方法
在ClassView中,右擊ImyComponent,在出現(xiàn)的菜單中按Add Method。如圖,在Method Name中可寫上方法名如InitMyComp。在Parameters中寫上方法的參數(shù)如[in]int Number1,[out,retbal]int* Number2。這里要特別說明的是參數(shù)的寫法。
::點(diǎn)擊圖片在新窗口中打開::
1.對(duì)于傳入的參數(shù)必須在參數(shù)前加上[in],然后可跟上如int n或float f等。且每個(gè)傳入?yún)?shù)前都必須寫明。
2.對(duì)于調(diào)用方法的返回,不再是該方法名前的類型(因?yàn)樗羞@些方法都返回HRESULT,即表明是否調(diào)用成功),所以使用傳出的參數(shù),在參數(shù)前必須加上[out,retval],然后可跟上如int* n 或者float* f等(如果返回的是int 或float 類型值時(shí))。且每個(gè)方法僅限于返回一個(gè)這樣的參數(shù)。在函數(shù)體中可如寫上如“*Number2=Number1;”,表示把輸入?yún)?shù)作為傳出參數(shù)。
::點(diǎn)擊圖片在新窗口中打開::
3.對(duì)于最常用的字符串參數(shù)在此我們使用BSTR str而不是通常的char* 或CString,所以在參數(shù)中需要寫作[in]BSTR str 或[out,retval]BSTR* str。需要特別注意與CString的轉(zhuǎn)換。如新建一個(gè)函數(shù)StrConv([in]BSTR bstr1,[out,retval]BSTR* bstr2),在函數(shù)體中可寫上如:
CString str;
str=bstr1;
str=str.Left(str.GetLength()-1);
*bstr2=str.AllocSysString();
4.對(duì)于想把一個(gè)ASP對(duì)象作為參數(shù)的方法(如Request對(duì)象),可以使用[in]Iunkown *pIUnk,在函數(shù)體內(nèi),可用如下語(yǔ)句:(具體請(qǐng)查閱MSDN中的相關(guān)類的內(nèi)容)
IRequest* pIRequest;
HRESULT hr = pIUnk->QueryInterface(IID_IRequest, reinterpret_cast<LPVOID*>(&pIRequest));
Long m_lDataSize;
HRESULT hr = pIRequest->get_TotalBytes(&m_lDataSize);
if (FAILED(hr))
return hr;
if (m_lDataSize == 0L)
{
return S_OK;
}

COleVariant varBytesToRead;
COleSafeArray sarrayBytes;
varBytesToRead = m_lDataSize;
sarrayBytes.CreateOneDim(VT_UI1, m_lDataSize);
hr = pIRequest->BinaryRead(&varBytesToRead, &sarrayBytes);
if (FAILED(hr))
{
sarrayBytes.Clear();
return hr;
}

5.對(duì)于不定個(gè)數(shù)參數(shù),可使用SAFEARRAY,但使用方法較為復(fù)雜。可以在參數(shù)中輸入如下的內(nèi)容[in]SAFEARRAY array,并按Attribute…按鈕,在Name中選擇vararg。按確定后修改idl文件在把[in]SAFEARRAY array改為[in]SAFEARRAY(VARIANT) array。然后再打開MyComponent.h文件把該函數(shù)的參數(shù)SAFEARRAY array改為SAFEARRAY* array。再打開MyComponent.cpp文件修改參數(shù),在函數(shù)體內(nèi)使用COleSafeArray類實(shí)現(xiàn)該參數(shù)的控制,如“COleSafeArray SArray(array,VT_BSTR)”,具體操作可查閱MSDN中的該類的成員函數(shù)。
四、添加接口屬性
在ClassView中,右擊ImyComponent,在出現(xiàn)的菜單中按Add Property。如圖,在Property中可選擇屬性類型如float,在下面可寫上屬性名如MyFloat。保持其他不變。這里需要說明的是在生成的put_MyFloat和get_MyFloat函數(shù)體中的書寫。
::點(diǎn)擊圖片在新窗口中打開::
不妨舉個(gè)小例:
1.在CMyComponent 中添加成員變量m_myFloat
2.在put_MyFloat 中寫上:m_myFloat=newVal;
3.在get_MyFloat中寫上:*pVal=m_myFloat
有成員變量也是它優(yōu)于ISAPI的一個(gè)地方,在ISAPI中要在網(wǎng)頁(yè)間傳遞信息,只能通過URL參數(shù)或者是Cookie來(lái)實(shí)現(xiàn),因?yàn)槊看握{(diào)用都是一次新的鏈接,無(wú)法在網(wǎng)頁(yè)之間仍然是同一次調(diào)用DLL,所以設(shè)置成員變量意義不大,只在一次調(diào)用中有用。而那兩種方法都只能傳遞很有限的字符,除非利用創(chuàng)建服務(wù)器端臨時(shí)文件(此方法很不好)。再說,ASP中的Session對(duì)象本身就是很好的存儲(chǔ)信息的對(duì)象。
至此,我們創(chuàng)建了一個(gè)非常簡(jiǎn)單的沒有什么功能的ASP組件,意在說明如何制作。下面,我們書寫一個(gè)簡(jiǎn)單的ASP網(wǎng)頁(yè),來(lái)看看如何使用。網(wǎng)頁(yè)如下:
<%@ Language=VBScript %>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
</HEAD>
<BODY>
<%
Set Obj=Server.CreateObject("MyStudio.MyComponent")
j=Obj.InitMyComp(5)
Response.Write(j)
%>
<p>
<%
Obj.MyFloat=3.9
j=Obj.MyFloat
Response.Write(j)
%>
<p>
<%
str1="abcd"
str2=Obj.StrConv(str1)
Response.Write(str2)
%>
</BODY>
</HTML>
顯示結(jié)果為:
5
3.9
abc
也許,你現(xiàn)在還看不到編寫ASP組件的巨大魅力。但是,如果你正在編寫搜索引擎,文件上傳,自動(dòng)回復(fù),等等的高級(jí)網(wǎng)頁(yè)制作,你若能夠充分的利用VC++的優(yōu)越編程手段,就不必在CGI,ISAPI中苦苦掙扎,可以比較方便的編寫這些功能。比方說用戶想在你的網(wǎng)頁(yè)上搜索幾個(gè)著名新聞網(wǎng)站上當(dāng)前的重要新聞,你就可以使用ASP組件在后臺(tái)實(shí)時(shí)的打開各網(wǎng)站獲得信息,篩選匹配后顯示給用戶。又比方說,當(dāng)注冊(cè)用戶告知他的email地址,你就可以利用ASP組件自動(dòng)給新注冊(cè)用戶發(fā)出確認(rèn)信函,用最快的方式讓用戶去確認(rèn)并使注冊(cè)成功……其實(shí),你一定還有很多新的想法可以在網(wǎng)頁(yè)上得以實(shí)現(xiàn),趕快行動(dòng)吧。

Feedback

# re: [網(wǎng)頁(yè)]+ [ ALT COM AppWizard]  回復(fù)  更多評(píng)論   

2008-01-02 17:57 by lhj5168
ok

只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产三区精品| 欧美在线视频不卡| 午夜国产精品影院在线观看| 日韩午夜在线视频| 亚洲日本久久| 一本色道88久久加勒比精品 | 国产一区二区三区久久悠悠色av| 国产午夜精品理论片a级探花| 国产亚洲欧美一区| 亚洲国产成人91精品| 妖精视频成人观看www| 亚洲免费一在线| 久久一区精品| 亚洲精品免费在线| 亚洲黄色天堂| 亚洲自拍偷拍福利| 久久综合久久美利坚合众国| 欧美精品aa| 国产三级欧美三级| 国模私拍一区二区三区| 久久久青草婷婷精品综合日韩 | 美女视频黄a大片欧美| 欧美另类一区二区三区| 国产精品成人v| 亚洲国产一区二区在线| 亚洲伊人久久综合| 欧美成人午夜免费视在线看片| 亚洲美女免费精品视频在线观看| 午夜国产精品视频| 欧美激情在线观看| 极品尤物久久久av免费看| 99精品99| 欧美粗暴jizz性欧美20| 午夜精品三级视频福利| 欧美激情四色 | 亚洲欧美日韩精品久久| 欧美成人福利视频| 美女性感视频久久久| 国产精品主播| 亚洲先锋成人| 91久久精品国产91久久性色tv| 欧美一区二区三区精品电影| 欧美视频导航| 一区二区三区黄色| 亚洲激情第一区| 久久视频在线视频| 国产亚洲午夜高清国产拍精品| 亚洲综合成人婷婷小说| 日韩视频在线观看一区二区| 欧美大片一区二区三区| 亚洲高清在线视频| 久久这里只有| 欧美在线精品免播放器视频| 国产精品一区视频网站| 一本色道久久综合亚洲精品婷婷 | 亚洲一区二区免费视频| 亚洲欧洲一区二区三区久久| 久久亚洲一区二区| 黄色亚洲网站| 久久综合色8888| 久久精品国产亚洲a| 国产一区二区丝袜高跟鞋图片| 欧美中文在线观看| 欧美一区二区三区男人的天堂| 国产精品视频免费观看www| 新67194成人永久网站| 亚洲午夜国产一区99re久久| 国产精品久久久久久久久动漫 | 欧美美女视频| 亚洲精品资源| 亚洲经典自拍| 欧美片在线播放| 宅男在线国产精品| 亚洲一区二区日本| 国产婷婷色一区二区三区在线| 久久成人亚洲| 久久免费视频这里只有精品| 最新69国产成人精品视频免费| 国产精品jizz在线观看美国 | 欧美韩日高清| 欧美日韩一区二区三区在线看| 亚洲伊人一本大道中文字幕| 亚洲男女毛片无遮挡| 激情综合在线| 日韩一级欧洲| 国产日韩欧美精品| 欧美成人自拍| 欧美日韩视频专区在线播放| 欧美一区二区三区精品| 久久久久免费观看| 一区二区三区视频在线看| 篠田优中文在线播放第一区| 亚洲黄色高清| 亚洲一区精品在线| 亚洲国产成人久久综合一区| 亚洲精品国产系列| 国产视频在线观看一区二区三区| 欧美77777| 国产精品欧美一区二区三区奶水| 久久这里有精品15一区二区三区| 欧美激情在线免费观看| 欧美一区三区三区高中清蜜桃| 久久久噜噜噜久久中文字幕色伊伊| 一区二区国产日产| 久久久久久伊人| 亚洲欧美综合| 欧美激情一区二区三区蜜桃视频 | 久久精品国产清自在天天线| 一区二区三区高清在线观看| 久久精品亚洲乱码伦伦中文| 亚洲网站在线播放| 麻豆91精品91久久久的内涵| 欧美一区二区三区在线视频| 欧美剧在线免费观看网站| 老牛影视一区二区三区| 国产精品国产三级国产普通话99| 欧美高清视频| 黄色在线成人| 欧美一级久久| 午夜精品久久| 欧美日韩一区二区三区免费看| 久久伊人精品天天| 国产日韩精品在线观看| 一区二区三区波多野结衣在线观看| 欧美精品久久99| 亚洲综合二区| 欧美日本不卡| 欧美国产乱视频| 精品99一区二区三区| 欧美一区二区国产| 欧美一区二区三区免费看| 欧美日韩午夜在线| 最新成人av网站| 最新中文字幕一区二区三区| 久久精品日产第一区二区| 欧美一区1区三区3区公司| 国产精品成人观看视频免费 | 亚洲精品免费电影| 亚洲人成人77777线观看| 快射av在线播放一区| 免费亚洲婷婷| 最新亚洲电影| 欧美区国产区| aa级大片欧美| 午夜精品在线观看| 国产婷婷成人久久av免费高清| 欧美一区二区三区精品| 麻豆成人av| 亚洲精选国产| 欧美日韩国产三区| 夜夜爽av福利精品导航| 亚洲欧美日韩综合| 国产欧美日韩亚州综合| 久久精品九九| 亚洲国产精品国自产拍av秋霞| 91久久精品一区二区别| 欧美日韩日本国产亚洲在线 | 久久野战av| 亚洲第一二三四五区| 欧美国产第一页| 中文av一区二区| 久久久人成影片一区二区三区观看 | 欧美刺激性大交免费视频| 亚洲欧洲精品一区二区| 亚洲一区二区三区视频播放| 国产精品视频免费| 美女久久网站| 亚洲一区二区三区在线看| 久久久在线视频| 亚洲精品美女久久7777777| 欧美视频在线播放| 久久久国产视频91| 日韩亚洲视频在线| 久久久久久久久久码影片| 亚洲人体大胆视频| 国产女人精品视频| 欧美国产日本| 欧美一区二区在线观看| 亚洲人成网站在线观看播放| 欧美在线综合视频| av不卡免费看| 在线播放视频一区| 国产精品丝袜xxxxxxx| 欧美国产三区| 久久视频在线视频| 欧美一区视频在线| 一本久道久久综合婷婷鲸鱼| 日韩视频中文字幕| 亚洲欧美日韩另类| 亚洲高清视频一区二区| 国产精品日日做人人爱| 老司机精品导航| 亚洲午夜av| 亚洲精品国产精品久久清纯直播| 久久久久久久综合色一本| 亚洲制服av| 亚洲一区二区三区精品在线| 亚洲激情网站| 亚洲成人影音| 精品动漫一区二区|