(Socket程序设计)通院11级软件设计报告格式(通信学院).doc_第1页
(Socket程序设计)通院11级软件设计报告格式(通信学院).doc_第2页
(Socket程序设计)通院11级软件设计报告格式(通信学院).doc_第3页
(Socket程序设计)通院11级软件设计报告格式(通信学院).doc_第4页
(Socket程序设计)通院11级软件设计报告格式(通信学院).doc_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通信与信息工程学院2013 /2014 学年 第 二 学期软件设计 实验报告模 块 名 称 TCP/IP Socket软件设计 专 业 电子信息工程 学 生 班 级 B110111 学 生 学 号 B11011111 学 生 姓 名 张汉勇 指 导 教 师 赵建立,高建国,李虹,余雪勇,姚锡林设计题目街道主任选举网络化管理任务要求l 实现总投票管理站与分头投票站信息的网络化管理。l 可实时显示各投票站投票情况。l 相关信息统计与查询查询。实验设备及软件pc, visual studio 2010同组人员学号及姓名Q11010216 闫宗月B11011211 冯顺钦Q11010313 字国李参考文献1.殷肖川,刘志宏 网络编程与开发技术 西安交通大学出版社2.吴礼发 网络程序设计教程 北京希望电子出版社3. 李强 贾云霞 编著Visual C+ 项目开发实践(第一版),出版单位:中国铁道出版社,出版年度: 2003年 8月。报告内容(粗体 宋体 小二)(正文为宋体 小四)题目1 获取计算机的名称和IP地址1实验目的获取计算机的名称和IP地址2实验内容获取计算机的名称和IP地址。掌握在程序中获取网络参数的方法。3实验过程新建一个工程,命名为“GetIp_张汉勇_B11011111”。 工程名的选择一定要正确,添加项要注意否则程序一定会出错,GetIP是一个基本对话框的一个文件格式,所以我们要选择基本对话框一栏。因为它是一个插件类的文件,所以我们要勾选sockets一栏,这是几大注意点首先绘制改程序的基本框架,定义对话框类,编写程序执行文件。运行程序。这些text、edit、listbox格式的属性我们也是要注意的,常规、样式之类的勾选栏要认真检查。尤其要注意ID的名称,千万不能有相同项。4实验结果及其分析单击“获取网络信息”后获取的本机IP等信息5关键代码#include stdafx.h#include 09003719getip.h#include 09003719getipDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endifclass CAboutDlg : public CDialogpublic:CAboutDlg();enum IDD = IDD_ABOUTBOX ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV supportprotected:DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD)void CAboutDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)END_MESSAGE_MAP()CMy09003719getipDlg:CMy09003719getipDlg(CWnd* pParent /*=NULL*/): CDialog(CMy09003719getipDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMy09003719getipDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);DDX_Control(pDX, IDC_HOSTNAME, m_HostName);DDX_Control(pDX, IDC_IPADDR, m_IPAddr);BEGIN_MESSAGE_MAP(CMy09003719getipDlg, CDialog)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_QUERY, OnQuery)END_MESSAGE_MAP()BOOL CMy09003719getipDlg:OnInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconreturn TRUE; / return TRUE unless you set the focus to a controlvoid CMy09003719getipDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void CMy09003719getipDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();HCURSOR CMy09003719getipDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void CMy09003719getipDlg:OnQuery() char szHostName128;char szT20;if( gethostname(szHostName, 128) = 0 )m_HostName.SetWindowText(szHostName);struct hostent * pHost;int i; pHost = gethostbyname(szHostName); for( i = 0; pHost!= NULL & pHost-h_addr_listi!= NULL; i+ ) char str100; char addr20;int j; LPCSTR psz=inet_ntoa (*(struct in_addr *)pHost-h_addr_listi); m_IPAddr.AddString(psz);6、实验中遇到的问题及改进的设想新建工程时没有选取Windows Sockets导致程序无法编译。题目2 聊天室设计1实验目的设计一个文本聊天室2、实验内容聊天室功能模块可分为两个部分,每个部分根据实际应用又可以再分成两级功能模块,双方进行聊天的过程,大致可分三步:连接聊天通话完毕退出。3、实验过程用户界面的设计是很重要的,需要一个合理的布局。先新建一个工程,名称09003719chatroom,然后添加相关的控件,这样就完成了基本界面的设计添加界面,界面如下:随后进行代码的实现。4 实验结果及其分析单击“建立服务器” 随后就可进行文本聊天5关键代码 客户端的相关代码:1、连接服务器的相关代码: BOOL CClientSocket:SendMessage(CMessg * msg)if (m_aSessionOut != NULL)msg-Serialize(*m_aSessionOut);m_aSessionOut-Flush();return TRUE;elsem_bClose=true;CloseSocket();m_dlg-CloseSessionSocket();return FALSE;2、获取IP的相关代码:void CClientSocket:OnClose(int nErrorCode) m_bClose=true;CloseSocket();m_dlg-CloseSessionSocket();CSocket:OnClose(nErrorCode);int CClientSocket:GetLocalHostName(CString &sHostName)char szHostName256;int nRetCode;nRetCode=gethostname(szHostName,sizeof(szHostName);if(nRetCode!=0)sHostName=_T(没有取得);return GetLastError();sHostName=szHostName;return 0;int CClientSocket:GetIpAddress(const CString &sHostName, CString &sIpAddress)/获得本地IPstruct hostent FAR * lpHostEnt=gethostbyname(sHostName);if(lpHostEnt=NULL)sIpAddress=_T();return GetLastError();LPSTR lpAddr=lpHostEnt-h_addr_list0;if(lpAddr)struct in_addr inAddr;memmove(&inAddr,lpAddr,4);sIpAddress=inet_ntoa(inAddr);if(sIpAddress.IsEmpty() sIpAddress=_T(没有取得);return 0;int CClientSocket:GetIpAddress(const CString &sHostName, BYTE &f0,BYTE &f1,BYTE &f2,BYTE &f3)/获得本地IPstruct hostent FAR * lpHostEnt=gethostbyname(sHostName);if(lpHostEnt=NULL)f0=f1=f2=f3=0;return GetLastError();LPSTR lpAddr=lpHostEnt-h_addr_list0;if(lpAddr)struct in_addr inAddr;memmove(&inAddr,lpAddr,4);f0=inAddr.S_un.S_un_b.s_b1;f1=inAddr.S_un.S_un_b.s_b2;f2=inAddr.S_un.S_un_b.s_b3;f3=inAddr.S_un.S_un_b.s_b4;return 0;服务器的相关代码: 创建服务器的相关代码: BOOL CServerSocket:Init(UINT port, C09003719chatroomDlg* dlg)m_uPort=port;m_dlg=dlg;if(Create(m_uPort)=FALSE)AfxMessageBox(Server Socket Create Error);return FALSE;if(this-Listen()=FALSE)AfxMessageBox(Server Listen Error);return FALSE;m_dlg-SetDlgItemText(IDC_SHOWTEXT,Server Has Been Set OK!);return TRUE;void CServerSocket:OnAccept(int nErrorCode) m_dlg-ProcessPendingAccept();CSocket:OnAccept(nErrorCode);*+对话框的相关代码: BOOL C09003719chatroomDlg:OnInitDialog()CDialog:OnInitDialog();ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);if(AfxSocketInit(NULL)=0)AfxMessageBox(CSocket Inital Error);BYTE f0,f1,f2,f3;CString name;CClientSocket:GetLocalHostName(name);CClientSocket:GetIpAddress(name,f0,f1,f2,f3);(CIPAddressCtrl *)(GetDlgItem(IDC_IPADDRESS)-SetAddress(f0,f1,f2,f3);m_bInit=false;m_bClient=false;return TRUE;void C09003719chatroomDlg:OnSysCommand(UINT nID, LPARAM lParam)if (nID & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:OnSysCommand(nID, lParam);void C09003719chatroomDlg:OnPaint() if (IsIconic()CPaintDC dc(this); / device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;dc.DrawIcon(x, y, m_hIcon);elseCDialog:OnPaint();HCURSOR C09003719chatroomDlg:OnQueryDragIcon()return (HCURSOR) m_hIcon;void C09003719chatroomDlg:OnInputText()if(!m_bInit)AfxMessageBox(Not Connection to The Server);return;CString in;CMessg msg;GetDlgItemText(IDC_INPUTTEXT,in);if(in.GetLength()2)m_sMsgList+=in;SetDlgItemText(IDC_SHOWTEXT,m_sMsgList);int m_iLineCurrentPos=(CEdit *)(GetDlgItem(IDC_SHOWTEXT)-GetLineCount();(CEdit *)(GetDlgItem(IDC_SHOWTEXT)-LineScroll(m_iLineCurrentPos);msg.m_strText=in;if(!m_bClient)POSITION pos;for(pos=m_connectionList.GetHeadPosition();pos!=NULL;)CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);t-SendMessage(&msg);elsem_clientsocket.SendMessage(&msg);void C09003719chatroomDlg:ProcessPendingAccept()CClientSocket* pSocket = new CClientSocket();if (m_pListenSocket.Accept(*pSocket)CMessg msg;msg.m_strText=一个游客进入聊天室了;m_sShowString+=一个游客进入聊天室了n;POSITION pos;for(pos=m_connectionList.GetHeadPosition();pos!=NULL;)CClientSocket * t= (CClientSocket *)m_connectionList.GetNext(pos);t-SendMessage(&msg);pSocket-Init(this);m_connectionList.AddTail(pSocket);elsedelete pSocket;void C09003719chatroomDlg:ClearContent()if(m_bClient)m_clientsocket.Close();elsem_pListenSocket.Close();m_connectionList.RemoveAll();m_bInit=false;m_sMsgList=;SetDlgItemText(IDC_INPUTTEXT,);SetDlgItemText(IDC_SHOWTEXT,);void C09003719chatroomDlg:OnClearconnection() ClearContent();void C09003719chatroomDlg:CloseSessionSocket()if(!m_bClient)for(POSITION pos=m_connectionList.GetHeadPosition();pos!=NULL;)POSITION t_pos=pos;CClientSocket * t = (CClientSocket*)m_connectionList.GetNext(pos);if(t-m_bClose=true)m_connectionList.RemoveAt(t_pos);void C09003719chatroomDlg:OnConnectserver() if(!m_bInit)BYTE f0,f1,f2,f3;CString name;(CIPAddressCtrl *)(GetDlgItem(IDC_IPADDRESS)-GetAddress(f0,f1,f2,f3);CString ip;ip.Format(%d.%d.%d.%d,f0,f1,f2,f3);m_bClient=true;m_clientsocket.Create();if(m_clientsocket.Connect(ip,GetDlgItemInt(IDC_PORT)m_clientsocket.Init(this);SetDlgItemText(IDC_SHOWTEXT,Client Connection Succeed);m_bInit=true;elsem_clientsocket.Close();AfxMessageBox(client connection failed);m_bInit=false;void C09003719chatroomDlg:OnSetserver() if(!m_bInit)m_bClient=false;m_bInit=true;if(m_pListenSocket.Init(GetDlgItemInt(IDC_PORT),this)=FALSE)m_bInit=false;return;6实验中遇到的问题及改进的设想作为聊天室来说,这个程序实现的功能整体上来说还是显得单薄,界面也不够美观。本来计划要添加背景图片以及添加菜单栏的。然而,虽然程序在编译的时候没有问题,但是运行后功能却没有实现,分析之后,觉得可能是Class 中的函数有问题,缺少一些必要的链接函数,但是查找了一些资料,尝试解决,但是仍旧没有成功。再加上时间的限制,最后还是先放在一边了,以后再继续努力。题目3 简单浏览器的实现1实验目的设计一个简单的浏览器2实验内容通过Socket编程,设计一个浏览器,能实现收藏夹,显示超文本等多种功能。3实验过程首先启动Visual C+6.0,生成一个名为MYIE单文档项目,项目的视图类的基类为ChtmlView,该类的Navigate2()成员函数专门用来现实超文本格式的文档。在主框架类CmainFrame中定义CStatusBar m_wndStatusBar(状态条对象)、CToolBar m_wndToolBar(工具栏对象)、CReBar m_wndReBar(、CComboBoxEx m_wndAddress(扩展的组合框对象,用来作为地址栏)、CAnimateCtrl m_wndAnimate(动画控件,用来在工具栏上显示动画)、图像列表对象CImageList img(存放显示在工具栏上的图标)等对象。向当前项目AVI资源文件,ID标志IDR_MFCAVI,添加Bitmap(位图)资源,ID标志分别为IDB_COLDTOOLBAR、IDB_HOTTOOLBAR, IE风格界面的实现主要在主框架类的CMainFrame:OnCreate()函数中实现,它的主要思想如下: CReBar对象用来作为工具条、地址栏、动画控件的容器,CImageList对象,然后分别装载工具栏上按钮的热点图像和正常状态下显示的图像,并将该对象附给工具条对象,使之建立关联。为了显示扁平工具栏,需要用CreateEx()函数创建CToolBar对象m_wndToolBar,用ModifyStyle()函数将工具栏的风格设为扁平类型。 CToolBar 类不支持TBSTYLE_FLAT,要解决这个问题,必须绕过CToolBar类,使用CWnd:ModifyStyle()。要将某一个工具栏按钮设置为附带有下拉按钮,可以调用SetButtonInfo()设置按钮的风格为TBSTYLE_DROPDOWN。当用户点击按钮上的下拉箭头时,将出现相应的菜单,为了实现这个功能,手下需要在CMainFrame.cpp文件的消息映射中添加消息映射:ON_NOTIFY(TBN_DROPDOWN, AFX_IDW_TOOLBAR, OnDropDown);在CmainFrame.h文件中添加消息映射函数声明:afx_msg void OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult);最后添加代码。当用户在地址栏上输入网页地址并按下回车键后,浏览器将显示该网页的内容,并将在地址栏中记录下该地址。因为回车键按下后对应的消息ID为IDOK,为此,需要在CmainFrame类中添加消息映射ON_COMMAND(IDOK, OnNewAddressEnter)和消息响应函数afx_msg void OnNewAddressEnter()。同理,还要在CmainFrame类中为地址栏(ID 为AFX_IDW_TOOLBAR + 1)添加消息映射ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)和消息响应函数OnNewAddress,用来处理用户从地址栏组合框中选择网址的操作。4实验结果及其分析5关键代码IE风格工具条int CMainFrame:OnCreate(LPCREATESTRUCT lpCreateStruct)CImageList img; /图像列表对象;CString str; /字符串对象;if (CFrameWnd:OnCreate(lpCreateStruct) = -1)return -1;if (!m_wndReBar.Create(this) /创建CReBar对象; TRACE0(Failed to create rebarn);return -1; if (!m_wndToolBar.CreateEx(this) /使用CreateEx()函数创建工具条对象; TRACE0(Failed to create toolbarn);return -1; m_wndToolBar.GetToolBarCtrl().SetButtonWidth(50, 150);m_wndToolBar.GetToolBarCtrl().SetExtendedStyle(TBSTYLE_EX_DRAWDDARROWS);img.Create(IDB_HOTTOOLBAR, 22, 0, RGB(255, 0, 255);m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);img.Detach();img.Create(IDB_COLDTOOLBAR, 22, 0, RGB(255, 0, 255);m_wndToolBar.GetToolBarCtrl().SetImageList(&img);img.Detach();m_wndToolBar.ModifyStyle(0, TBSTYLE_FLAT | TBSTYLE_TRANSPARENT);m_wndToolBar.SetButtons(NULL, 9);m_wndToolBar.SetButtonInfo(0, ID_GO_BACK, TBSTYLE_BUTTON, 0);str.LoadString(IDS_BACK);m_wndToolBar.SetButtonText(0, str);m_wndToolBar.SetButtonInfo(1, ID_GO_FORWARD, TBSTYLE_BUTTON, 1);str.LoadString(IDS_FORWARD);m_wndToolBar.SetButtonText(1, str);m_wndToolBar.SetButtonInfo(2, ID_VIEW_STOP, TBSTYLE_BUTTON, 2);str.LoadString(IDS_STOP);m_wndToolBar.SetButtonText(2, str);m_wndToolBar.SetButtonInfo(3, ID_VIEW_REFRESH, TBSTYLE_BUTTON, 3);str.LoadString(IDS_REFRESH);m_wndToolBar.SetButtonText(3, str);m_wndToolBar.SetButtonInfo(4, ID_GO_START_PAGE, TBSTYLE_BUTTON, 4);str.LoadString(IDS_HOME);m_wndToolBar.SetButtonText(4, str);m_wndToolBar.SetButtonInfo(5, ID_GO_SEARCH_THE_WEB, TBSTYLE_BUTTON, 5);str.LoadString(IDS_SEARCH);m_wndToolBar.SetButtonText(5, str);m_wndToolBar.SetButtonInfo(6, ID_FAVORITES_DROPDOWN, TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 6);str.LoadString(IDS_FAVORITES);m_wndToolBar.SetButtonText(6, str);m_wndToolBar.SetButtonInfo(7, ID_FILE_PRINT, TBSTYLE_BUTTON, 7);str.LoadString(IDS_PRINT);m_wndToolBar.SetButtonText(7, str);m_wndToolBar.SetButtonInfo(8, ID_FONT_DROPDOWN, TBSTYLE_BUTTON | TBSTYLE_DROPDOWN, 8);str.LoadString(IDS_FONT);m_wndToolBar.SetButtonText(8, str);CRect rectToolBar;m_wndToolBar.GetItemRect(0, &rectToolBar);m_wndToolBar.SetSizes(rectToolBar.Size(), CSize(30,20);if (!m_wndAddress.Create(CBS_DROPDOWN | WS_CHILD, CRect(0, 0, 200, 120), this, AFX_IDW_TOOLBAR + 1) TRACE0(Failed to create comboboxn);return -1; m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 10, 10), this, AFX_IDW_TOOLBAR + 2);m_wndAnimate.Open(IDR_MFCAVI);m_wndReBar.AddBar(&m_wndToolBar);m_wndReBar.AddBar(&m_wndAnimate, NULL, NULL, RBBS_FIXEDSIZE | RBBS_FIXEDBMP);str.LoadString(IDS_ADDRESS);m_wndReBar.AddBar(&m_wndAddress, str, NULL, RBBS_FIXEDBMP | RBBS_BREAK);m_wndToolBar.SetBarStyle(m_wndToolBar.GetBarStyle() |CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_FIXED);if (!m_wndStatusBar.Create(this) | !m_wndStatusBar.SetIndicators(indicators,sizeof(indicators)/sizeof(UINT) TRACE0(Failed to create status barn);return -1; return 0;工具条上的下拉菜单void CMainFrame:OnDropDown(NMHDR* pNotifyStruct, LRESULT* pResult)NMTOOLBAR* pNMToolBar = (NMTOOLBAR*)pNotifyStruct;CRect rect;m_wndToolBar.GetToolBarCtrl().GetRect(pNMToolBar-iItem, &rect);rect.top = rect.bottom;:ClientToScreen(pNMToolBar-hdr.hwndFrom, &rect.TopLeft();if(pNMToolBar-iItem = ID_FONT_DROPDOWN)CMenu menu;CMenu* pPopup;menu.LoadMenu(IDR_FONT_POPUP);pPopup = menu.GetSubMenu(0);pPopup-TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd();else if(pNMToolBar-iItem = ID_FAVORITES_DROPDOWN)CMenu* pPopup;pPopup = GetMenu()-GetSubMenu(3);pPopup-TrackPopupMenu(TPM_LEFTALIGN | TPM_LEFTBUTTON, rect.left, rect.top + 1, AfxGetMainWnd();*pResult = TBDDRET_DEFAULT;工具条上的动画实现IDR_MFCAVI:m_wndAnimate.Create(WS_CHILD | WS_VISIBLE, CRect(0, 0, 10, 10), this, AFX_IDW_TOOLBAR + 2);m_wndAnimate.Open(IDR_MFCAVI);地址栏的操作void CMainFrame:OnNewAddressEnter()CString str;m_wndAddress.GetEditCtrl()-GetWindowText(str);(CMfcieView*)GetActiveView()-Navigate2(str, 0, NULL);/显示该网页;COMBOBOXEXITEM item;item.mask = CBEIF_TEXT;item.iItem = -1;item.pszText = (LPTSTR)(LPCTSTR)str;m_wndAddress.InsertItem(&item);同理,还要在CmainFrame类中为地址栏(ID 为AFX_IDW_TOOLBAR + 1)添加消息映射ON_CBN_SELENDOK(AFX_IDW_TOOLBAR + 1,OnNewAddress)和消息响应函数OnNewAddress,用来处理用户从地址栏组合框中选择网址的操作,代码如下:void CMainFrame:OnNewAddress()CString str;m_wndAddress.GetLBText(m_wndAddress.GetCurSel(), str);(CMYIEView*)GetActiveView()-Navigate2(str, 0, NULL);实现收藏菜单TCHAR GetDir( ) /得到存放用户收藏网址的目录;TCHAR szMAX_PATH;TCHAR szPathMAX_PATH;HKEY hKey;DWORD dwSize;CMenu* pMenu;pMenu = GetMenu()-GetSubMenu(3);while(pMenu-DeleteMenu(0, MF_BYPOSITION);if(RegOpenKey(HKEY_CURRENT_USER, _T(SoftwareMicrosoftWindowsCurrentVersionExplorerUser Shell Folders), &hKey) != ERROR_SUCCESS)TRACE0(Favorites folder not foundn);return 0;dwSize = sizeof(sz);RegQueryValueEx(hKey, _T(Favorites), NULL, NULL, (LPBYTE)sz, &dwSize);ExpandEnvironmentStrings(sz, szPath, MAX_PATH);RegCloseKey(hKey);Return szPathint CMainFrame:BuildFavoritesMenu(LPCTSTR pszPath, int nStartPos, CMenu* pMenu)CString strPath(pszPath);CString strPath2;CString str;WIN32_FIND_DATA wfd;HANDLE h;int nPos;int nEndPos;int nNewEndPos;int nLastDir;TCHAR bufINTERNET_MAX_PATH_LENGTH;CStringArray astrFavorites;CStringArray astrDirs;CMenu* pSubMenu;if(strPathstrPath.GetLength() - 1 != _T()strPath += _T();strPath2 = strPath;s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论