求助大神,CInternetFile::Write这函数具体是做什么的?

SureGOGOGO 2016-10-10 09:43:10
我从网上找的一段代码,我修改能运行起来了,但是没办法上传文件。。。

try
{
pHttpConnection = Session.GetHttpConnection(defServerName,nPort);
pHTTP = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, defObjectName);
pHTTP->AddRequestHeaders(MakeRequestHeaders(strHTTPBoundary));
pHTTP->SendRequestEx(dwTotalRequestLength, HSR_SYNC | HSR_INITIATE);

#ifdef _UNICODE
pHTTP->Write(W2A(strPreFileData), strPreFileData.GetLength());
#else
pHTTP->Write((LPSTR)(LPCSTR)strPreFileData, strPreFileData.GetLength());
#endif

dwReadLength = -1;
while (0 != dwReadLength)
{
strDebugMessage.Format("%u / %u\n", fTrack.GetPosition(), fTrack.GetLength());
TRACE(strDebugMessage);
dwReadLength = fTrack.Read(pBuffer, dwChunkLength);
if (0 != dwReadLength)
{
pHTTP->Write(pBuffer, dwReadLength);

}
}



//上述用到的变量
CInternetSession Session("PostFile");
CHttpConnection *pHttpConnection = NULL;
INTERNET_PORT nPort = 80;

CFile fTrack;
CHttpFile* pHTTP;
CString strHTTPBoundary;

CString strPreFileData;
CString strPostFileData;
DWORD dwTotalRequestLength;

DWORD dwChunkLength;
DWORD dwReadLength;

DWORD dwResponseLength;
TCHAR szError[MAX_PATH];

void* pBuffer;
LPSTR szResponse;

CString strResponse;
BOOL bSuccess = TRUE;

CString strDebugMessage;

if (FALSE == fTrack.Open(_mFilePath, CFile::modeRead | CFile::shareDenyNone))
{
//MessageBoxW(NULL, pBuffer, L"Text", MB_OK); //显示
MessageBox(NULL,"Unable to open the file.","Text",MB_OK);
return FALSE;
}


pHTTP->Write(pBuffer, dwReadLength); 按道理来说这一句是往服务器写入数据,但是发现这句执行完了,服务器没有变化。
...全文
587 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
SureGOGOGO 2016-10-13
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
[quote=引用 12 楼 lishunihaoa 的回复:] [quote=引用 11 楼 zhao4zhong1 的回复:] 《Http权威指南》?
可能真的是后台的问题,我装了个PostMan,测试Post文件,发现发挥一样成功,就是没有上传到图片。 不搞了,心累。[/quote] 与其临渊羡鱼,不如退而结网。 抱一本《Http权威指南》,沐浴、更衣、焚香、闭关修炼至少一个月再出关。你就会有一种脱胎换骨的感觉了。 (虽然我也没读过这本书,嘻嘻!)[/quote] 赵老师说的有道理。
赵4老师 2016-10-12
  • 打赏
  • 举报
回复
逐字节对比两种环境下抓的包的内容。
SureGOGOGO 2016-10-12
  • 打赏
  • 举报
回复
引用 7 楼 VisualEleven 的回复:
http://blog.csdn.net/cyforce/article/details/6195664
我的程序就是参考这里的,而且我抓包得到发送数据是这样的,是严格按照格式发送过去的
Content-Type: multipart/form-data; boundary=GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG
--GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG
Content-Disposition: form-data;name="pic";filename="C:\test.jpg"
Content-Type: image/pjpeg
Content-Transfer-Encoding: binary

?? JFIF     ? C  (B+(%%(Q:=0B`Ued_U][jx檨jq恠[]叺啇灒玤€忌害菣ǐ?? C(#(N++N]nいいいいいいいいいいいいいいいいいいいいいいいいい?  ? ?" ?              ? <       !1AQ"2aq態”?R?b裂%3CDTr倰擇?              ? !         !1AQ"aq?   ? 鷋垁垐垁垜wTRX€r|爓pL沙庘瓕+@钊??~>X軴?玹"M;T商缮蕓l+EB煄?滓K.鰈?碇?\姚%〦y椯燮m?'測哺w !糓躏?蟧?咣?轏uTGi?畒H烌q咲w搱0睶&?#Q+?岯r俴A?j?sw 彍攄讂6>?"G聦u㎡.藋収楣H!旪f萌~vz″??鬖艿_Ny腺bI晫?蘀蔅xχ铁}嫦
嵌nJ昻??諹誓轻穋\?n轜6?戔?}旌黩;殦/m^麐爃蒍岎阌趽鬄┠p??9嗘?lVc謜楯殧N嘲@DDD@DDD@DDD@H桖N;?? d虈额*舚-皎
u"Ac'婻杧} 式倔?夤Gy.:罼僮謃牧?皵?~怖]F蚟兺稦谤梥,/耝卣U\塸U<; 肧 €?p^g|d趑?凢栢鈥}嘂(o?鸒1撃鹕9?魩颻B>z?l羅Y0誰L鼃癕#胳D?f鎝谋糪S禊?暨諫埐?3G&@篁o渋?%(DDD@DDD@DD?rS?屽?j ?銸]槩徟2?V獛顀鶰Z隞怶Z匭?_嘼.2?髙蝳L? 蕴('b&? """ p?"錞司G缀鄒滏??樶?N黬鷖?牂淿趶h秦全?蘻KXY#+籉?鱻?rOz?凞@DDD@DD窋?頊t洲鮴┛ぶce餰鵜^v趖~_?I蛟{N?摫@DDD@DD&?媎b灂?J区~?另1搁?&PR?猩I糌R轏Q貓€垐垁垐9gX題?晔彊冱咫诪部??k詞*堠?神Zc挫囗;4%啝wq皘鎫f3阝靗僝?Xz=8}鱘dPjt:?蘄ɑ8H絁?Φ嘆eU崗X?表Gl寢X賎袽=激 擭N?{L?滭&哳鑿笟嚧蹄?勢? ~bJO+?j慂?旛搂Z毙?
僤趄摙+T翑鶊冎"%垁垐'BV任?窄貤n迹葄?赾g悖d踀"趾逆p9u弦KF?陨?嶆P荎h馭?)c哾洬澅AⅪ<刚N曌桯儾荤%#U{N腾

??K薫`
??鳁D鼓香c瘀矠孹.?3谝|]l摃?瓣b篪Y清?[f=玛?lu鯚SVC緐旈BV奜蚱?T?J坣鉲H?]M蚆€r?鶉襓,媙綏&沶zQ羫??溗W?!jz鶖佋渿饀玍c^鮚~+^o貄=i镐[a厄4\糸+,键媠,&芔G要? &?蕓渂\u党?騲???!OC=kDU?k?跳k甞C	-蔄堝*z铷杹$
塯-f蘈鰳?v諒姧薅芽ぶg
7@?#噯吴7f0軭9*'觚R}D	??W?柕R?w護脊镣~仕P?睍厷孢s垭'w坪??课孉灅x媺["?3%粧d摫f"&? ""堙暶?灞澰呭`诉F]?T覕V+? ?┢?j?mv蓉苄?r麱绿?Z#"€
諂FV竀eu?塻h) v咤=鴰%?赜r巑鷫鍧`舌藨W殇w 震栈嵨
??曫2n葼=詘G宿涚-?拴8塆;僻bJ頔玈躰zO泹=偠硵o?S 叇?k ?u3隠?珰髌莖??闘袢头?#鉟B惑?模冈經栐Y^6=\髫(? fC聳n譵8闂o噑i玣逫睆B裐BT箩??"觺Cws貄€? N腗D@DDD@DDD@蚬y懬獞鵏?嫅?2?s4浌橒嬆p阬Z睌卻薻7虎w劭溚"?;b猊-g圵?讥笴勢nF[{r[?髼鍍?(DD?vA肪?r?賐?簂欐銢??s;_疝奶誥l*璷︺?媇慡琕?v搠24 酀?垁垐垁垜鎋X?a?穗	〥媲瑆?嶪澧骠B)?濠|k憕&F闐???曲o髿S嵴=4脏U 藎弥"飅D媲瑅攙'	?劝?鄲<鄁T8禡D.@?iv歬j@嫿镕频嘎d?ā]仵檺〥婺煨D?€A??剚??i檻炟焖鄮m嶢編7腚4蟘13暙?Y碛x巼╚繑??9r式墤e蛂跴@枸?<?鶔膄眑+畀狨瀨=Z埏綐0刈&鵺|僩禌5D'8駡>~Bf逈?錬?9?]?	?趞?砵B捏巆a?怪礲茾u&k嶉焄屷蔋?	桙D挼┑?敥??
?b'蟚nQ箵U鴿u駕/?*z\';u瓘湺拊?脄虢梃萹桥_qP?軦鶭?蕮欃v蟧*兵簫蝢U#U唚n絬M齯归贤砦楌2??z(?3r覛,*殁(鳬膂?;?時(u??]瓒袃D?冧7-古'	}_o肧*基妔ht賀鶲;螳K攣广亽盓蘒蚤
_#*dV韈?箟登蘫B-闉<%錯iS沋苍vD鍉U骶.侺^*蕐~
谨? 蔰袬?鑊9PX净 妍?A6苭祏Z +:,In懌藙軏橓第*!琑羬?鐡栐轚S?梥?U.鍣??攗:? 玟╊B Q暮?%縌,遦
蚠!]v;e蝍+?騝2襴絽瀪蠠 5_{塪鍁t硊玗N绋PL辰?j?氡逤=)?耦K巰&ひ敗H?A;覎G~R鋿y疪??齡潿Me┯督藿蜕?'-K/*uU ?听L薛ァ?U簉檰&@緟砕'?囈%~宗鳰退?棧焅瑡耀瘊]l_y|C??躂泭碻諑挠?u]?9烁}7?砮傭忂鯑釲]华Tp蘾w2o齡甆7碦?*?yK[m趥?B幚jU~屩5湦3?.母Kg匤竨副? c粼頝9Z駑毙:2訧摿穧圳祒U株闔*紵Q;nv怎瀬?S,Dyx
u挺+貞贏1/k?豮╈%垊菂X芦-uc?橗?豼6@紡? ?楷?姧W签赵?8€瀹@b?蹧瑪?i?F鏱y~r/_22?H铸'?1謯V挫o?遲垐垁垐垁垐垁垐	葓
	貓垁垐垁垐?
--GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG--
中间的乱码就是发送的图片的数据。。。,可能是服务器后台不处理,所以就这样了。。。。。
赵4老师 2016-10-12
  • 打赏
  • 举报
回复
引用 12 楼 lishunihaoa 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] 《Http权威指南》?
可能真的是后台的问题,我装了个PostMan,测试Post文件,发现发挥一样成功,就是没有上传到图片。 不搞了,心累。[/quote] 与其临渊羡鱼,不如退而结网。 抱一本《Http权威指南》,沐浴、更衣、焚香、闭关修炼至少一个月再出关。你就会有一种脱胎换骨的感觉了。 (虽然我也没读过这本书,嘻嘻!
SureGOGOGO 2016-10-12
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
《Http权威指南》?
可能真的是后台的问题,我装了个PostMan,测试Post文件,发现发挥一样成功,就是没有上传到图片。 不搞了,心累。
赵4老师 2016-10-12
  • 打赏
  • 举报
回复
《Http权威指南》?
SureGOGOGO 2016-10-12
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
逐字节对比两种环境下抓的包的内容。
比较过了,今天早上就是搞这事情,但是还是没用。。。其实我真正的目的是,请求
http://www.test/game/upload.php?"+"userid=hello&userpic=world
这样的一个连接,但是我要上传图片这个服务器。。。 如果单单是提交账号和密码的的话,可以直接提交,但是像这样既有这样的参数提交,又要提交一个图片。。。从
https://my.oschina.net/u/1014520/blog/194539
可以找到这样的说明,普通提交参数的Post请求application/x-www-form-urlencoded是这样的方式,但是Post文件的格式却是以multipart/form-data,所以发送前面的那两个参数,应该是
Content-Type: application/x-www-form-urlencoded
userid=Hello&userpic=name
但是发送后面的图片,发送的是
--GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG
Content-Disposition: form-data;name="Hello";filename="test"
Content-Type: image/pjpeg/r/nContent-Transfer-Encoding: binary

....图片的内容
--GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG--
,所以请求头,应该怎么填写?? 还是
Content-Type: multipart/form-data; boundary=GASDHSAFSAFBDSNVKSDGIDSJGSDGKDSHG
这样么? 假如是这样,会不会跟
Content-Type: application/x-www-form-urlencoded 
,发送普通数据的矛盾了? 我猜70%是我填写错这个东西,所以才传不了。。。
SureGOGOGO 2016-10-11
  • 打赏
  • 举报
回复
引用 1 楼 zgl7903 的回复:
CHttpFile::SendRequestEx 的注释部分有这样的说明 After content is written to the file, call EndRequest to end the operation. CString strData = “Some very long data to be POSTed here!”; pServer = sess.GetHttpConnection("mooseboy"); pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, "/isapi.dll?"); pFile->SendRequestEx(strData.GetLength()); pFile->WriteString(strData); pFile->EndRequest();
你这个我知道,CHttpFile::SendRequestEx函数在MSDN上找到以下说明,This function allows your application to send data using the Write and WriteString methods of CInternetFile. You must know the length of the data to send before calling either override of this function. The first override allows you to specify the length of data you'd like to send. The second override accepts pointers to INTERNET_BUFFERS structures, which can be used to describe the buffer in great detail 但是明明是用CHttpFile::Write 写了,为何没有上传到的?,文件是肯定读取到的了,我做了测试输出到本地的地方。 难道是协议头的问题?我的协议头的内容是
Content-Disposition: form-data; name="trackdata"; filename="test.jpg"
Content-Type: image/pjpeg
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="submitted"
不太熟悉这方面的东西,我单步过,每一步走执行正常,难道是服务器处理的问题?但是服务器能读到我其提交的其他参数。我打开了一个类似www.baidu/upload?userid=hello&picname=test这样的请求,,服务器读取到hello和test这两个参数。。
zgl7903 2016-10-11
  • 打赏
  • 举报
回复
CHttpFile::SendRequestEx 的注释部分有这样的说明 After content is written to the file, call EndRequest to end the operation. CString strData = “Some very long data to be POSTed here!”; pServer = sess.GetHttpConnection("mooseboy"); pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, "/isapi.dll?"); pFile->SendRequestEx(strData.GetLength()); pFile->WriteString(strData); pFile->EndRequest();
SureGOGOGO 2016-10-11
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
引用 4 楼 lishunihaoa 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] 建议楼主先学会使用抓包软件比如wireshark
等我学会这个项目就结了,今天之内必须搞好的。
心急吃不了热豆腐。[/quote] 赵老师啊,我听你说去抓了包,但是主要问题是我不清楚这种Multipart/form-data POST文件上传的格式,我按照网上的一个字一个字的检查了,但是找不出问题,你看下我代码,这样填写的话,有错误吗?错在哪里?
try 
	{ 
		INTERNET_PORT nPort = 80; 
		DWORD dwRet = 0;   
		CHttpConnection* pServer = session.GetHttpConnection(hostName.c_str(), nPort); //跟服务器连接,指定80端口

		CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, pathName.c_str());  //post方式打开请求
		CString HeadPost("Content-Type:multipart/form-data;boundary=ZnAAAAAAAAAAGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC\r\n");
	
		CString FilePost("Content-Disposition: form-data;name=\"test.jpg\"; filename=\"C:\\test.jpg\"\r\n\r\n");
		FilePost+="Content-Type: image/pjpeg\r\n";
		FilePost+="Content-Transfer-Encoding:binary\r\n";

		pFile->AddRequestHeaders(HeadPost); //增加到请求头

		CString PreBoundaryPost("--ZnAAAAAAAAAAGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC\r\n");
		CString LastBoundaryPost("--ZnAAAAAAAAAAGpDtePMx0KrHh_G0X99Yef9r8JZsRJSXC--\r\n");


		//读取文件
		if (FALSE == f.Open("C:\\test.jpg", CFile::modeRead | CFile::shareDenyNone))
		{
			MessageBox(NULL,"Unable to open the file.","Text",MB_OK);
			return FALSE;
		}
		int gloLen=HeadPost.GetLength()+PreBoundaryPost.GetLength()+FilePost.GetLength()+f.GetLength()+LastBoundaryPost.GetLength();
		pFile->SendRequestEx(gloLen,HSR_SYNC | HSR_INITIATE); //发送数据的大小
        CFile f1;
		f1.Open("C:\\2.dat",CFile::modeCreate |CFile::modeWrite);

		f1.Write(HeadPost,HeadPost.GetLength());
		pFile->Write((LPSTR)(LPCSTR)HeadPost,HeadPost.GetLength()); //写入请求头,包括boundary的格式

		f1.Write(PreBoundaryPost,PreBoundaryPost.GetLength());
		pFile->Write((LPSTR)(LPCSTR)PreBoundaryPost,PreBoundaryPost.GetLength()); //写入前边界
		f1.Write(FilePost,FilePost.GetLength());
		pFile->Write((LPSTR)(LPCSTR)FilePost,FilePost.GetLength()); //写入文件信息
        
		//写入文件内容
		DWORD dwReadLength = -1;
        pBuffer=malloc(64*10240);
		while (0 != dwReadLength)
		{
			dwReadLength = f.Read(pBuffer, f.GetLength());
			if (0 != dwReadLength)
			{
		      
				pFile->Write(pBuffer, dwReadLength);
				
			}
		}

		f1.Write(pBuffer, f.GetLength());
	
		pFile->Write((LPSTR)(LPCSTR)LastBoundaryPost,LastBoundaryPost.GetLength()); //写入后边界
        f1.Write(LastBoundaryPost,LastBoundaryPost.GetLength());

		f1.Close();
		pFile->EndRequest(HSR_SYNC);

		DWORD dwResponseLength = pFile->GetLength();
		LPSTR szResponse=NULL;
		CString strResponse("");

		while (0 != dwResponseLength)
		{
			szResponse = (LPSTR)malloc(dwResponseLength + 1);
			szResponse[dwResponseLength] = '\0';
			pFile->Read(szResponse, dwResponseLength);
			strResponse += szResponse;
			free(szResponse);
			dwResponseLength = pFile->GetLength();
		}
		MessageBox(NULL,strResponse,"网页应答数据",MB_OK);

	 
	}
赵4老师 2016-10-11
  • 打赏
  • 举报
回复
引用 4 楼 lishunihaoa 的回复:
引用 3 楼 zhao4zhong1 的回复:
建议楼主先学会使用抓包软件比如wireshark
等我学会这个项目就结了,今天之内必须搞好的。
心急吃不了热豆腐。
SureGOGOGO 2016-10-11
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
建议楼主先学会使用抓包软件比如wireshark
等我学会这个项目就结了,今天之内必须搞好的。
赵4老师 2016-10-11
  • 打赏
  • 举报
回复
建议楼主先学会使用抓包软件比如wireshark
MFC类目录及头文件 类 描述 头文件 CAnimateCtrl 自动化通用控件 afxcmn.h CArchive afx.h CArchiveException afx.h CArray afxtempl.h CAsyncMonikerFile 在ActiveX控件中提供对异步标记的支持 afxole.h CAsyncScoket 封装Windows Sockets API,参看CSocket afxsock.h CBitmap afxwin.h CBitmapButton afxext.h CBrush afxwin.h CButton 按钮控件对象 afxwin.h CByteArray afxcoll.h CCachedDataPathProperty 允许一个ActiveX控件异步传输属性数据和缓冲内存中的数据,参考CDataPathProperty afxctl.h CCheckListBox afxwin.h CClientDC afxwin.h CCmdTarget 所有能够接收和响应消息的对象的基类 afxwin.h CCmdUI afxwin.h CColorDialog 颜色选择的通用对话框,提供为显示系统定义的颜色列表 afxdlgs.h CComboBox 组合框对象 afxwin.h CComboBoxEx CComboBox类的派生类,用于支持在组合框控件中的图像列表 afxcmn.h CCommandLineInfo afxwin.h CCommonDialog afxdlgs.h CConnectionPoint afxdisp.h CControlBar afxext.h CCreateContext afxext.h CCriticalSection afxmt.h CCtrlView afxwin.h CDaoDatabase afxdao.h CDaoException afxdao.h CDaoFieldExchange afxdao.h CDaoQueryDef afxdao.h CDaoRecordset 代表选自数据源的记录集。CDaoRecordset对象可用于三种格式:表类型记录集,动态集类型记录集和快照类型记录集 afxdao.h CDaoRecordView 提供表单视图,以在控件中显示数据库记录。表单视图是CDaoRecordset对象的一部分。参考CFormView和CRecordView afxdao.h CDaoTableDef afxdao.h CDaoWorkspace afxdao.h CDatabase afxdb.h CDataExchange afxwin.h CDataPathProperty 实现一个ActiveX控件属性,它能够异步加载其数据。这个类允许ActiveX控件在后台下载属性数据时被激活 afxctl.h CDateTimeCtrl 封装新的日期/时间选取器控件 afxdtctl.h CDBException afxdb.h CDBVariant afxdb.h CDC afxwin.h CDialog 用于包含控件窗口的对话框对象 afxwin.h CDialogBar afxext.h CDocItem afxole.h CDockState afxadv.h CDocObjectServer afxdocob.h CDocObjectServerItem afxdocob.h CDocTemplate afxwin.h CDocument 用于管理程序的数据的类 afxwin.h CDragListBox Windows列表框,允许用户把其中的项拖放到不同的位置 afxcmn.h CDumpContext afx.h CDWordArray afxcoll.h CEdit 用于文本输入的子窗口控件 afxwin.h CEditView 提供Windows编缉控件的功能。因为CEditView派生于Cedit,该对象可同文件和文件模板一同使用 afxext.h CEvent afxmt.h CException afx.h CFieldExchange afxdb.h CFile afx.h CFileDialog 通用文件对话框,提供Open和Save As对话框中的功能 afxdlgs.h CFileException afx.h CFileFind afx.h CFindReplaceDialog afxdlgs.h CFont afxwin.h CFontDialog 通用字体对话框,用于显示当前已装入系统的字体列表 afxdlgs.h CFontHolder afxctl.h CFormView 包含对话框控件的窗口 afxext.h CFrameWnd SDI(单窗口界面)框架窗口 afxwin.h CFtpConnection afxinet.h CFtpFileFind afxinet.h CGdiObject afxwin.h CGopherConnection afxinet.h CGopherFile afxinet.h CGopherFileFind afxinet.h CGopherLocator afxinet.h CHeaderCtrl 标题通用控件 afxcmn.h CHotKeyCtrl 热键通用控件 afxcmn.h CHtmlStream afxisapi.h CHtmlView 实现Web Browser控件的视图类,能够访问当地或Web上的HTML文件。 afxhtml.h CHttpConnection afxinet.h CHttpFile afxinet.h CHttpFilter 创建并处理超文传输协议过滤器对象,该对象用于过滤用于HTTP请求的服务器通知 afxisapi.h CHttpFilterContext afxisapi.h CHttpServer Internet Server API(ISAPI)的包装类 afxisapi.h CHttpServerContext afxisapi.h CImageList afxcmn.h CInternetConnection afxinet.h CInternetException afxinet.h CInternetFile afxinet.h CInternetSession afxinet.h CIPAddressCtrl IP地址控件。类似于编缉框,该控件接收Internet 协议格式的地址 afxcmn.h CList afxtempl.h CListBox 列表框对象 afxwin.h CListCtrl 列表视通用控件 afxcmn.h ClistView 简化CListCtrl的使用,添加了对文件和视图的支持 afxcview.h CLongBinary afxdb_.h CMap afxtempl.h CMapPtrToPtr afxcoll.h CMapPtrToWord afxcoll.h CMapStringToOb afxcoll.h CMapStringToPtr afxcoll.h CMapStringToString afxcoll.h CMapWordToOb afxcoll.h CMapWordToPtr afxcoll.h CMDIChildWnd MDI(多文档界面)子框架窗口 afxwin.h CMDIFrameWnd afxwin.h CMemFile afx.h CMemoryException afx.h CMemoryState CMenu afxwin.h CMetaFileDC afxext.h CMiniFrameWnd 半高的框架窗口,主要用于浮动工具栏。一个小框架窗口没有最小化和最大化按钮,但其他都类似于正常的框架窗口 afxwin.h CMonikerFile afxole.h CMonthCalCtrl 月历控件,用于显示一个用户可选择日期的日历 afxdtctl.h CMultiDocTemplate afxwin.h CMultiLock afxmt.h CMutex afxmt.h CNotSupportedException afx.h CObArray afxcoll.h CObject afx.h CObList afxcoll.h COleBusyDialog afxodlgs.h COleChangeIconDialog afxodlgs.h COleChangeSourceDialog afxodlgs.h COleClientItem afxole.h COleCmdUI afxdocob.h COleControl afxctl.h COleControlModule afxctl.h COleConvertDialog afxodlgs.h COleCurrency afxdisp.h COleDataObject afxole.h COleDataSource afxole.h COleDateTime afxdisp.h COleDateTimeSpan afxdisp.h COleDBRecordView afxoledb.h COleDialog afxodlgs.h COleDispatchDriver afxdisp.h COleDispatchException afxdisp.h COleDocObjectItem afxole.h COleDocument 把一个文件看作为CDocItem对象的一个集合。包容器和服务器都需要这个结构,因为它们的文件必须能够包含OLE项 afxole.h COleDropSource afxole.h COleDropTarget afxole.h COleException afxdisp.h COleInsertDialog afxodlgs.h COleIPFrameWnd afxole.h COleLinkingDoc OLE包容器文件的基类,这些文件支持对它们所包含项的链接 afxole.h COleLinksDialog afxodlgs.h COleMessageFilter afxole.h COleObjectFactory afxdisp.h COlePasteSpecialDialog afxodlgs.h COlePropertiesDialog afxodlgs.h COlePropertyPage afxctl.h COleResizeBar afxole.h COleSafeArray afxdisp.h COleServerDoc OLE服务器文件的基类 afxole.h COleServerItem 为OLE项提供一个服务器界面 afxole.h COleStreamFile afxole.h COleTemplateServer afxdisp.h COleUpdateDialog afxodlgs.h COleVariant afxdisp.h CPageSetupDialog afxdlgs.h CPaintDC afxwin.h CPalette afxwin.h CPen afxwin.h CPictureHolder afxctl.h CPoint atltypes.h CPrintDialog 通用打印对话框,提供Print和Print Setup对话框中的功能 afxdlgs.h CPrintInfo CProgressCtrl 通用进程指示器控件 afxcmn.h CPropertyPage 代表属性表单中的一页 afxdlgs.h CPropertyPageEx CPropertySheet 属性表,也叫多选项卡对话框。一个属性表由一个CPropertySheet对象和几个CPropertyPage对象组成 afxdlgs.h CPropertySheetEx CPropExchange afxctl.h CPtrArray afxcoll.h CPtrList afxcoll.h CReBar afxext.h CReBarCtrl afxcmn.h CRecentFileList afxadv.h CRecordset 用于访问数据库表或查询的类 afxdb.h CRecordView 包含对话框控件的窗口 afxdb.h CRect atltypes.h CRectTracker afxext.h CResourceException afxwin.h CRgn afxwin.h CRichEditCntrItem afxrich.h CRichEditCtrl 用户能够输入和编缉文本的窗口,提供字符和程序段格式,以及对嵌入OLE项的支持 afxcmn.h CRichEditDoc afxrich.h CRichEditView afxrich.h CRuntimeClass CScrollBar 滚动条对象 afxwin.h CScrollView 可滚动的窗口,派生于CView afxwin.h CSemaphore afxmt.h CSharedFile afxadv.h CSingleDocTemplate afxwin.h CSingleLock afxmt.h CSize atltypes.h CSliderCtrl 提供包含一个滑块和可选的刻度线的窗口 afxcmn.h CSocket Windows Socket API的包装类 afxsock.h CSocketFile afxsock.h CSpinButtonCtrl 提供箭头按钮,用户可单击它,以增加或减少某个控件中的一个值 afxcmn.h CSplitterWnd afxext.h CStatic 用于标识另一个控件或给用户提供消息的简单文本框 afxwin.h CStatusBar afxext.h CStatusBarCtrl 提供一个层次窗口,通常放于父窗口的底部,用于显示关于应用程序的状态信息 afxcmn.h CStdioFile afx.h CString afx.h CStringArray afxcoll.h CStringList afxcoll.h CSyncObject afxmt.h CTabCtrl 允许应用程序在一个窗口或对话框的同一区域显示多个页面 afxcmn.h CTime afx.h CTimeSpan afx.h CToolBar afxext.h CToolBarCtrl 工具栏通用控件 afxcmn.h CToolTipCtrl 提供工具提示控件的功能,它以一个小弹出窗口的样子显示,包含描述某个工具用途的一行文本 afxcmn.h CTreeCtrl 显示项的分层结构列表 afxcmn.h CTreeView 简化CTreeCtrl的用法 afxcview.h CTypedPtrArray afxtempl.h CTypedPtrList afxtempl.h CTypedPtrMap afxtempl.h CUIntArray afxcoll.h CUserException afxwin.h CView 用于显示程序数据的类 afxwin.h CWaitCursor afxwin.h CWinApp afxwin.h CWindowDC afxwin.h CWinThread 代表一个应用程序中的一个线程 afxwin.h CWnd afxwin.h CWordArray afxcoll.h ......

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧