1. 什麼是MFC編程
MFC(Microsoft Foundation class)微軟基本類(庫),它是一個面向對象的應用程序架構。程序員利用它可以很方便搭建應用程序框架。
MFC結合了面向對象的編程技術和WINDOWS消息驅動的編程技術,並封裝了WIN32API,其設計好處是:消除了WIN32API的復雜性,封裝了WIN32API,統一了程序的概念,而且可擴展。
MFC實際上是微軟提供的,用於在C++環境下編寫應用程序的一個框架和引擎。VC++是Windows下開發人員使用的專業C++SDK,MFC就是掛在它之上的一個輔助軟體開發包。
(1)mfchttp編程擴展閱讀
MFC編程優勢
面對底層程序,它能很輕松的與Windows API或驅動程序結合,就是在自己的代碼中直接使用API函數,而API和驅動程序的資料都是以C語言為基礎的,這使得VC程序員能夠更輕松的使用Windows API。
這樣造成了一個很有意思的現象,即入門時VC程序員要付出更多的努力來學習,但是一旦掌握後,開發其他領域的程序或使用第三方軟體時,如工業控制類的程序,由於底層的程序都是用C語言編寫,反倒是VC程序員能夠更快的掌握該領域的編程技術。而很多其他的編程語言甚至找不到相關的資料。
這就說明VC(MFC)實際上是一種入門困難,但是擴展學習卻很輕松的語言框架。
2. MFC編程是什麼
MFC
(Microsoft
Foundation
Class
Library)中的各種類結合起來構成了一個應用程序框架,它的目的就是讓程序員在此基礎上來建立Windows下的應用程序,這是一種相對SDK來說更為簡單的方法。因為總體上,MFC框架定義了應用程序的輪廓,並提供了用戶介面的標准實現方法,程序員所要做的就是通過預定義的介面把具體應用程序特有的東西填入這個輪廓。Microsoft
Visual
C++提供了相應的工具來完成這個工作:AppWizard可以用來生成初步的框架文件(代碼和資源等);資源編輯器用於幫助直觀地設計用戶介面;ClassWizard用來協助添加代碼到框架文件;最後,編譯,則通過類庫實現了應用程序特定的邏輯。
如前所述,MFC實現了對應用程序概念的封裝,把類、類的繼承、動態約束、類的關系和相互作用等封裝起來。這樣封裝的結果對程序員來說,是一套開發模板(或者說模式)。MFC提供了一個Windows應用程序開發模式,對程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,預定義或實現了許多事件和消息處理,等等。框架或者由其本身處理事件,不依賴程序員的代碼;或者調用程序員的代碼來處理應用程序特定的事件。
MFC是C++類庫,程序員就是通過使用、繼承和擴展適當的類來實現特定的目的。例如,繼承時,應用程序特定的事件由程序員的派生類來處理,不感興趣的由基類處理。實現這種功能的基礎是C++對繼承的支持,對虛擬函數的支持,以及MFC實現的消息映射機制。
3. 怎麼用MFC編程啊
雖然我沒用過MFC,
但是貌似是個 庫
應該是 引入頭文件(.h) 然後靜態連接(.lib)MFC的庫,如果有動態連接庫(.dll)的話可能需要安裝
最後在調用裡面的類
例如:
#include " xxxxx.h"
#pragma comment(lib,"xx.h")
xxxxxxx xxx ()
{
XXXXX xxxx;
xxxx.aaaaa = ???;
xxxx.bbbbb = ???;
}
差不多之類的操作把.
具體裡面不同的"X"要看你要用什麼類和庫了
4. VS2008用MFC寫了一段http下載文件的代碼,結果在某些機器上會超時,請各位指正。
嗯,我有寫過,還寫過一個FTP的,告訴你盡量不要去用ReadString和WriteString,不好用,到現在我還莫名其妙(開始以為結束符編碼問題,後來也不全是), 特別是換了操作系統或者伺服器換了(換了虛擬主機/主頁空間),容易出問題.
盡可能用Read和Write吧. 只是需要自己去控制長度而已.
另外任何網路或遠程操作盡量使用try,然後catch出來判斷,有些如果是因為伺服器問題(也可能網速不穩)的問題可以採用再一次連接, 因為用Read Write方式,所以可以斷點續傳或續載的.
把斷點續傳續載做好,可以省很多事,比如網速斷斷續續或者伺服器負荷大問題等等引起的你不可避免的中途中斷,那再重來一次你就知道好處了.
總之,網路編程和本地差別還是很大的,涉及到遠程操作的,每一步都要考慮可能失敗和如何補救.
5. 如何用MFC實現網路編程
一.客戶端
1.創建一個DialogBased項目:CSockClient。
2.設計對話框
去掉Ok和Cancle兩個按鈕,增加ID_Connect(連接)、ID_Send(發送)、ID_Exit(關閉)按鈕,增加ListBox控制項IDC_LISTMSG和Edit控制項IDC_EDITMSG,並按下表在ClassWizard中為CCSockClientDlg類添加變數。
ControlIDTypeMember
IDC_EDITMSGCEditm_MSG
IDC_LISTMSGClistBoxm_MSGS
3.CAsyncSocket類用DoCallBack函數處理MFC消息,當一個網路事件發生時,DoCallBack函數按網路事件類型:FD_READ、FD_WRITE、FD_ACCEPT、FD_CONNECT分別調用OnReceive、OnSend、OnAccept、OnConnect函數。
由於MFC把這些事件處理函數定義為虛函數,所以要生成一個新的C++類,以重載這些函數,做法如下:以Public方式繼承CAsyncSocket類,生成新類MySock;為MySock類添加虛函數OnReceive、OnConnect、OnSend。
4.在MySock.ccp中添加以下代碼
#include"CSockClient.h"
#include"CSockClientDlg.h"
5.在MySock.h中添加以下代碼
public:
BOOLm_bConnected;//是否連接
UINTm_nLength;//消息長度
charm_szBuffer[4096];//消息緩沖區
6.在MySock.ccp中重載各函數
MySock::MySock()
{
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
m_bConnected=FALSE;
}
MySock::~MySock()
{
//關閉套接字
if(m_hSocket!=INVALID_SOCKET)
Close();
}
voidMySock::OnReceive(intnErrorCode)
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//下面兩行代碼用來獲取對話框指針
CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;
pDlg->m_MSGS.InsertString(0,m_szBuffer);
memset(m_szBuffer,0,sizeof(m_szBuffer));
CAsyncSocket::OnReceive(nErrorCode);
}
voidMySock::OnSend(intnErrorCode)
{
Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//繼續提請一個「讀」的網路事件,接收Server消息
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
voidMySock::OnConnect(intnErrorCode)
{
if(nErrorCode==0)
{
m_bConnected=TRUE;
CCSockClientApp*pApp=(CCSockClientApp*)AfxGetApp();
CCSockClientDlg*pDlg=(CCSockClientDlg*)pApp->m_pMainWnd;
memcpy(m_szBuffer,"Connectedto",13);
strncat(m_szBuffer,pDlg->m_szServerAdr,
sizeof(pDlg->m_szServerAdr));
pDlg->m_MSGS.InsertString(0,m_szBuffer);
AsyncSelect(FD_READ);////提請一個「讀」的網路事件,准備接收
}
CAsyncSocket::OnConnect(nErrorCode);
}
7.新建對話框IDD_Addr,用來輸入IP地址和Port;生成新類CAddrDlg。增加兩個Edit控制項:IDC_Addr、IDC_Port按下表在ClassWizard中為CAddrDlg類添加變數。
ControlIDTypeMember
IDC_AddrCStringm_Addr
IDC_PortIntm_Port
8.在CSockClientDlg.ccp中添加代碼:
#include"AddrDlg.h"
protected:
intTryCount;
MySockm_clientSocket;
UINTm_szPort;
public:
charm_szServerAdr[256];
9.雙擊IDD_CSOCKCLIENT_DIALOG對話框中的「連接」按鈕,添加以下代碼:
voidCCSockClientDlg::OnConnect()
{
m_clientSocket.ShutDown(2);
m_clientSocket.m_hSocket=INVALID_SOCKET;
m_clientSocket.m_bConnected=FALSE;
CAddrDlgm_Dlg;
//默認埠1088
m_Dlg.m_Port=1088;
if(m_Dlg.DoModal()==IDOK&&!m_Dlg.m_Addr.IsEmpty())
{
memcpy(m_szServerAdr,m_Dlg.m_Addr,sizeof(m_szServerAdr));
m_szPort=m_Dlg.m_Port;
//建立計時器,每1秒嘗試連接一次,直到連上或TryCount>10
SetTimer(1,1000,NULL);
TryCount=0;
}
}
10.添加Windows消息WM_TIMER響應函數OnTimer
voidCCSockClientDlg::OnTimer(UINTnIDEvent)
{
if(m_clientSocket.m_hSocket==INVALID_SOCKET)
{
BOOLbFlag=m_clientSocket.Create(0,SOCK_STREAM,FD_CONNECT);
if(!bFlag)
{
AfxMessageBox("SocketError!");
m_clientSocket.Close();
PostQuitMessage(0);
return;
}
}
m_clientSocket.Connect(m_szServerAdr,m_szPort);
TryCount++;
if(TryCount>=10||m_clientSocket.m_bConnected)
{
KillTimer(1);
if(TryCount>=10)
AfxMessageBox("ConnectFailed!");
return;
}
CDialog::OnTimer(nIDEvent);
}
11.雙擊IDD_CSOCKCLIENT_DIALOG對話框中的「發送」按鈕,添加以下代碼:
voidCCSockClientDlg::OnSend()
{
if(m_clientSocket.m_bConnected)
{
m_clientSocket.m_nLength=m_MSG.GetWindowText
(m_clientSocket.m_szBuffer,sizeof(m_clientSocket.m_szBuffer));
m_clientSocket.AsyncSelect(FD_WRITE);
m_MSG.SetWindowText("");
}
}
12.雙擊IDD_CSOCKCLIENT_DIALOG對話框中的「關閉」按鈕,添加以下代碼:
voidCCSockClientDlg::OnExit()
{
//關閉Socket
m_clientSocket.ShutDown(2);
//關閉對話框
EndDialog(0);
}
12.運行此項目,連接時輸入主機名或IP均可,CAsyncSocket類會自動處理。
二.服務端
Server端的編程與Client端的類似,下面主要介紹他的Listen及Accept函數。
1.建立一個CNewSocket類,重載CAsyncSocket類的OnReceive、OnSend函數,如何進行信息的顯示和發送可以參考Client程序。本例中採用將收到信息原封不動發回的方法來實現Echo功能,代碼如下:
CNewSocket::OnReceive(intnErrorCOde)
{
m_nLength=Receive(m_szBuffer,sizeof(m_szBuffer),0);
//直接轉發消息
AsyncSelect(FD_WRITE);
}
CNewSocket::OnSend(intnErrorCode)
{
Send(m_szBuffer,m_nLength,0);
}
2.建立一個CMyServerSocket類,重載CAsyncSocket類的OnAccept函數代碼如下
在MyServerSocket.h中聲明變數
public::
CNewSocket*m_pSocket;
voidCMyServerSocket::OnAccept(intnErrorCode)
{
//偵聽到連接請求,調用Accept函數
CNewSocket*pSocket=newCNewSocket();
if(Accept(*pSocket))
{
pSocket->AsyncSelect(FD_READ);
m_pSocket=pSocket;
}
else
deletepSocket;
}
3.為對話框添加一個「偵聽」按鈕,添加如下代碼:
在CsockServerDlg.ccp中聲明變數
public:
CMyServerSocketm_srvrSocket;
voidCCSockServerDlg::OnListen()
{
if(m_srvrSocket.m_hSocket==INVALID_SOCKET)
{
BOOLbFlag=m_srvrSocket.Create
(UserPort,SOCK_STREAM,FD_ACCEPT);
if(!bFlag)
{
AfxMessageBox(「SocketError!」);
M_srvrSocket.Close();
PostQuitMessage(0);
Return;
}
}
//「偵聽」成功,等待連接請求
if(!m_srvrSocket。Listen(1))
{
intnErrorCode=m_srvrSocket.GetLastError();
if(nError!=WSAEWOULDBLOCK)
{
AfxMessageBox(「SocketError!」);
M_srvrSocket.Close();
6. MFC用什麼類進行HTTP請求
用 CInternetSession 來發起 Http 請求,需要包含頭文件:
#include <afxinet.h>
MFC 發起 HTTP 請求的邏輯,和用 WinINet 函數集 的整體過程類似,主要的步驟在 Steps in a Typical HTTP Client Application 有詳細的描述。
Retrieving a file via. HTTP 一文也對 MFC 發起 HTTP 請求有著非常詳細的介紹。
7. MFC 讀取http文件伺服器上的文件列表,並選擇文件進行下載
你需要學會動態網頁製作,至少簡單的生成TXT文本,就是網站WEB程序讀取目錄中的文件列表,以TXT或XML輸出
你還需要學會MFC網路編程,就是MFC程序訪問/下載某個網址的網頁,其實就是讀取/下載網站WEB程序動態生成的TXT或者XML內容
當然你也可以靜態生成TXT或者XML放置在WEB伺服器上
顯示的話,就是ListControl,ListView一類,可自繪
下載文件和下載/讀取網頁基本相同,只是網頁是文本是string(當然原始也是BYTE[]),而文件就是很多個位元組是BYTE[]
總結的話,就是一個是伺服器端要放置有提供文件列表內容的文件
再一個就是MFC網路訪問/讀取這個文件,解析得到文件列表
學會使用ListControl
和讀取網頁一樣,按位元組接收即可
8. 如何用MFC編寫瀏覽器程序
正好我前幾天剛寫了一個簡單的 能在對話框里打開網路知道,哈哈 我把文件貼給你
下面是f_browerDlg.cpp 和 webbrower2.cpp 如果你要整個文件 加我QQ93695824吧
// f_browserDlg.cpp : implementation file
//
#include "stdafx.h"
#include "f_browser.h"
#include "f_browserDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CF_browserDlg dialog
CF_browserDlg::CF_browserDlg(CWnd* pParent /*=NULL*/)
: CDialog(CF_browserDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CF_browserDlg)
m_address = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CF_browserDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CF_browserDlg)
DDX_Control(pDX, IDC_EXPLORER1, m_search);
DDX_Text(pDX, IDC_EDIT1, m_address);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CF_browserDlg, CDialog)
//{{AFX_MSG_MAP(CF_browserDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CF_browserDlg message handlers
BOOL CF_browserDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CF_browserDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CF_browserDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CF_browserDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CF_browserDlg::OnButton1()
{
GetDlgItemText(IDC_EDIT1,m_address);
m_search.Navigate(m_address,NULL,NULL,NULL,NULL);
}
BEGIN_EVENTSINK_MAP(CF_browserDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CF_browserDlg)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
#include "stdafx.h"
#include "webbrowser2.h"
/////////////////////////////////////////////////////////////////////////////
// CWebBrowser2
// webbrowser2.cpp
//
IMPLEMENT_DYNCREATE(CWebBrowser2, CWnd)
/////////////////////////////////////////////////////////////////////////////
// CWebBrowser2 properties
/////////////////////////////////////////////////////////////////////////////
// CWebBrowser2 operations
void CWebBrowser2::GoBack()
{
InvokeHelper(0x64, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::GoForward()
{
InvokeHelper(0x65, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::GoHome()
{
InvokeHelper(0x66, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::GoSearch()
{
InvokeHelper(0x67, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::Navigate(LPCTSTR URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers)
{
static BYTE parms[] =
VTS_BSTR VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT;
InvokeHelper(0x68, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
URL, Flags, TargetFrameName, PostData, Headers);
}
void CWebBrowser2::Refresh()
{
InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::Refresh2(VARIANT* Level)
{
static BYTE parms[] =
VTS_PVARIANT;
InvokeHelper(0x69, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Level);
}
void CWebBrowser2::Stop()
{
InvokeHelper(0x6a, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
LPDISPATCH CWebBrowser2::GetApplication()
{
LPDISPATCH result;
InvokeHelper(0xc8, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser2::GetParent()
{
LPDISPATCH result;
InvokeHelper(0xc9, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser2::GetContainer()
{
LPDISPATCH result;
InvokeHelper(0xca, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
LPDISPATCH CWebBrowser2::GetDocument()
{
LPDISPATCH result;
InvokeHelper(0xcb, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&result, NULL);
return result;
}
BOOL CWebBrowser2::GetTopLevelContainer()
{
BOOL result;
InvokeHelper(0xcc, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
CString CWebBrowser2::GetType()
{
CString result;
InvokeHelper(0xcd, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
long CWebBrowser2::GetLeft()
{
long result;
InvokeHelper(0xce, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetLeft(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xce, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long CWebBrowser2::GetTop()
{
long result;
InvokeHelper(0xcf, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetTop(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xcf, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long CWebBrowser2::GetWidth()
{
long result;
InvokeHelper(0xd0, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetWidth(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xd0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
long CWebBrowser2::GetHeight()
{
long result;
InvokeHelper(0xd1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetHeight(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0xd1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
CString CWebBrowser2::GetLocationName()
{
CString result;
InvokeHelper(0xd2, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
CString CWebBrowser2::GetLocationURL()
{
CString result;
InvokeHelper(0xd3, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
BOOL CWebBrowser2::GetBusy()
{
BOOL result;
InvokeHelper(0xd4, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::Quit()
{
InvokeHelper(0x12c, DISPATCH_METHOD, VT_EMPTY, NULL, NULL);
}
void CWebBrowser2::ClientToWindow(long* pcx, long* pcy)
{
static BYTE parms[] =
VTS_PI4 VTS_PI4;
InvokeHelper(0x12d, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pcx, pcy);
}
void CWebBrowser2::PutProperty(LPCTSTR Property_, const VARIANT& vtValue)
{
static BYTE parms[] =
VTS_BSTR VTS_VARIANT;
InvokeHelper(0x12e, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
Property_, &vtValue);
}
VARIANT CWebBrowser2::GetProperty_(LPCTSTR Property_)
{
VARIANT result;
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x12f, DISPATCH_METHOD, VT_VARIANT, (void*)&result, parms,
Property_);
return result;
}
CString CWebBrowser2::GetName()
{
CString result;
InvokeHelper(0x0, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
long CWebBrowser2::GetHwnd()
{
long result;
InvokeHelper(DISPID_HWND, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
CString CWebBrowser2::GetFullName()
{
CString result;
InvokeHelper(0x190, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
CString CWebBrowser2::GetPath()
{
CString result;
InvokeHelper(0x191, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
BOOL CWebBrowser2::GetVisible()
{
BOOL result;
InvokeHelper(0x192, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetVisible(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x192, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetStatusBar()
{
BOOL result;
InvokeHelper(0x193, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetStatusBar(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x193, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
CString CWebBrowser2::GetStatusText()
{
CString result;
InvokeHelper(0x194, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetStatusText(LPCTSTR lpszNewValue)
{
static BYTE parms[] =
VTS_BSTR;
InvokeHelper(0x194, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
lpszNewValue);
}
long CWebBrowser2::GetToolBar()
{
long result;
InvokeHelper(0x195, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetToolBar(long nNewValue)
{
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x195, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
nNewValue);
}
BOOL CWebBrowser2::GetMenuBar()
{
BOOL result;
InvokeHelper(0x196, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetMenuBar(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x196, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetFullScreen()
{
BOOL result;
InvokeHelper(0x197, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetFullScreen(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x197, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
void CWebBrowser2::Navigate2(VARIANT* URL, VARIANT* Flags, VARIANT* TargetFrameName, VARIANT* PostData, VARIANT* Headers)
{
static BYTE parms[] =
VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT;
InvokeHelper(0x1f4, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
URL, Flags, TargetFrameName, PostData, Headers);
}
long CWebBrowser2::QueryStatusWB(long cmdID)
{
long result;
static BYTE parms[] =
VTS_I4;
InvokeHelper(0x1f5, DISPATCH_METHOD, VT_I4, (void*)&result, parms,
cmdID);
return result;
}
void CWebBrowser2::ExecWB(long cmdID, long cmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut)
{
static BYTE parms[] =
VTS_I4 VTS_I4 VTS_PVARIANT VTS_PVARIANT;
InvokeHelper(0x1f6, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
cmdID, cmdexecopt, pvaIn, pvaOut);
}
void CWebBrowser2::ShowBrowserBar(VARIANT* pvaClsid, VARIANT* pvarShow, VARIANT* pvarSize)
{
static BYTE parms[] =
VTS_PVARIANT VTS_PVARIANT VTS_PVARIANT;
InvokeHelper(0x1f7, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
pvaClsid, pvarShow, pvarSize);
}
long CWebBrowser2::GetReadyState()
{
long result;
InvokeHelper(DISPID_READYSTATE, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL);
return result;
}
BOOL CWebBrowser2::GetOffline()
{
BOOL result;
InvokeHelper(0x226, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetOffline(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x226, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetSilent()
{
BOOL result;
InvokeHelper(0x227, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetSilent(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x227, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetRegisterAsBrowser()
{
BOOL result;
InvokeHelper(0x228, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetRegisterAsBrowser(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x228, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetRegisterAsDropTarget()
{
BOOL result;
InvokeHelper(0x229, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetRegisterAsDropTarget(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x229, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetTheaterMode()
{
BOOL result;
InvokeHelper(0x22a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetTheaterMode(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x22a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetAddressBar()
{
BOOL result;
InvokeHelper(0x22b, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetAddressBar(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x22b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
BOOL CWebBrowser2::GetResizable()
{
BOOL result;
InvokeHelper(0x22c, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL);
return result;
}
void CWebBrowser2::SetResizable(BOOL bNewValue)
{
static BYTE parms[] =
VTS_BOOL;
InvokeHelper(0x22c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms,
bNewValue);
}
9. MFC 網路編程 - 實現自動更新的問題
用system(" ")命令吧,括弧中間是命令,能打開下面的東東,你試試notepad是txt的程序
dxdiag---查看配置
systeminfo -----查看系統信息
msconfig---------系統配置實用程序
winver---------檢查Windows版本
wmimgmt.msc----打開windows管理體系結構(WMI)
wupdmgr--------windows更新程序
wscript--------windows腳本宿主設置
write----------寫字板
winmsd---------系統信息
wiaacmgr-------掃描儀和照相機向導
winchat--------XP自帶區域網聊天
mem.exe--------顯示內存使用情況
mspaint--------畫圖板
mstsc----------遠程桌面連接
mplayer2-------媒體播放機
magnify--------放大鏡實用程序
mmc------------打開控制台
mobsync--------同步命令
drwtsn32------ 系統醫生
devmgmt.msc--- 設備管理器
dfrg.msc-------磁碟碎片整理程序
diskmgmt.msc---磁碟管理實用程序
dcomcnfg-------打開系統組件服務
ddeshare-------打開DDE共享設置
dvdplay--------DVD播放器
net stop messenger-----停止信使服務
net start messenger----開始信使服務
notepad--------打開記事本
nslookup-------網路管理的工具向導
ntbackup-------系統備份和還原
narrator-------屏幕「講述人」
ntmsmgr.msc----移動存儲管理器
ntmsoprq.msc---移動存儲管理員*作請求
netstat -an----(TC)命令檢查介面
syncapp--------創建一個公文包
sysedit--------系統配置編輯器
sigverif-------文件簽名驗證程序
sndrec32-------錄音機
shrpubw--------創建共享文件夾
secpol.msc-----本地安全策略
syskey---------系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
services.msc---本地服務設置
Sndvol32-------音量控製程序
sfc.exe--------系統文件檢查器
sfc /scannow---windows文件保護
tsshutdn-------60秒倒計時關機命令
tourstart------xp簡介(安裝完成後出現的漫遊xp程序)
taskmgr--------任務管理器
eventvwr-------事件查看器
eudcedit-------造字程序
explorer-------打開資源管理器
packager-------對象包裝程序
perfmon.msc----計算機性能監測程序
progman--------程序管理器
regedit.exe----注冊表
rsop.msc-------組策略結果集
regedt32-------注冊表編輯器
rononce -p ----15秒關機
regsvr32 /u *.dll----停止dll文件運行
regsvr32 /u zipfldr.dll------取消ZIP支持
cmd.exe--------CMD命令提示符
chkdsk.exe-----Chkdsk磁碟檢查
certmgr.msc----證書管理實用程序
calc-----------啟動計算器
charmap--------啟動字元映射表
cliconfg-------SQL SERVER 客戶端網路實用程序
Clipbrd--------剪貼板查看器
conf-----------啟動netmeeting
compmgmt.msc---計算機管理
cleanmgr-------好東西整理
ciadv.msc------索引服務程序
osk------------打開屏幕鍵盤
odbcad32-------ODBC數據源管理器
oobe/msoobe /a----檢查XP是否激活
lusrmgr.msc----本機用戶和組
logoff---------注銷命令
iexpress-------木馬捆綁工具,系統自帶
Nslookup-------IP地址偵測器
fsmgmt.msc-----共享文件夾管理器
utilman--------輔助工具管理器
gpedit.msc-----組策略
xp下運行命令大全.
$Systemroot$Documents and Settingsusername 目錄下
appwiz.cpl------------添加刪除程序
control userpasswords2--------用戶帳戶設置
cleanmgr-------垃圾整理
CMD--------------命令提示符可以當作是 Windows 的一個附件,Ping,Convert 這些不能在圖形環境下 使用的功能要藉助它來完成。
cmd------jview察看Java虛擬機版本。
command.com------調用的則是系統內置的 NTVDM,一個 DOS虛擬機。它完全是一個類似 Virtual PC 的 虛擬環境,和系統本身聯系不大。當我們在命令提示符下運行 DOS 程序時,實際上也 是自動轉移到 NTVDM虛擬機下,和 CMD 本身沒什麼關系。
calc-----------啟動計算器
chkdsk.exe-----Chkdsk磁碟檢查
compmgmt.msc---計算機管理
conf-----------啟動 netmeeting
control userpasswords2-----User Account 許可權設置
devmgmt.msc--- 設備管理器
diskmgmt.msc---磁碟管理實用程序
dfrg.msc-------磁碟碎片整理程序
drwtsn32------ 系統醫生
dvdplay--------啟動Media Player
dxdiag-----------DirectX Diagnostic Tool
gpedit.msc-------組策略編輯器
gpupdate /target:computer /force 強制刷新組策略
eventvwr.exe-----事件查看器
explorer-------打開資源管理器
logoff---------注銷命令
lusrmgr.msc----本機用戶和組
msinfo32---------系統信息
net start (servicename)----啟動該服務
net stop (servicename)-----停止該服務
notepad--------打開記事本
nusrmgr.cpl-------同control userpasswords,打開用戶帳戶控制面板
Nslookup-------IP地址偵測器
oobe/msoobe /a----檢查XP是否激活
perfmon.msc----計算機性能監測程序
progman--------程序管理器
route print------查看路由表
rononce -p ----15秒關機
rsop.msc-------組策略結果集
5回答者: m584880952 - 助理 二級 3-3 02:37
我來評論>> 相關內容
? WINDOWS XP 運行命令詳解 介紹每個命令的用法
? windows-xp運行命令
? WINDOWS XP運行命令都有什?
? 必備資料 103個Windows XP運行命令
? 103個Windows XP運行命令
更多相關問題>>
查看同主題問題:命令
其他回答 共 3 條
開始→運行→輸入的命令集錦
你可以
命令行下輸入 help 就可以看到很多系統命令,每個命令得用法 例如 ping /? 可以獲取系統幫助
gpedit.msc-------------------------組策略
sndrec32-------------------------錄音機
nslookup-------------------------ip地址偵測器
explorer-------------------------打開資源管理器
logoff--------------------------注銷命令
tsshutdn-------------------------60秒倒計時關機命令
lusrmgr.msc-------------------------本機用戶和組
services.msc-------------------------本地服務設置
oobe/msoobe /a----------------------檢查xp是否激活
notepad--------------------------打開記事本
cleanmgr-------------------------垃圾整理
net start messenger-----------------開始信使服務
compmgmt.msc-------------------------計算機管理
net stop messenger-----------------停止信使服務
conf-------------------------啟動
dvdplay-------------------------dvd播放器
charmap-------------------------啟動字元映射表
diskmgmt.msc-------------------------磁碟管理實用程序
calc-------------------------啟動計算器
dfrg.msc-------------------------磁碟碎片整理程序
chkdsk.exe-------------------------chkdsk磁碟檢查
devmgmt.msc--- ----------------------設備管理器
regsvr32 /u *.dll-------------------停止dll文件運行
drwtsn32------ -------------------系統醫生
rononce -p ------------------------15秒關機
dxdiag-------------------------檢查directx信息
regedt32-------------------------注冊表編輯器
msconfig.exe-------------------------系統配置實用程序
rsop.msc-------------------------組策略結果集
mem.exe-------------------------顯示內存使用情況
regedit.exe-------------------------注冊表
winchat-------------------------xp自帶區域網聊天
progman-------------------------程序管理器
winmsd-------------------------系統信息
perfmon.msc-------------------------計算機性能監測程序
winver-------------------------檢查windows版本
sfc /scannow-----------------------掃描錯誤並復原
winver-------------------------檢查windows版本
wmimgmt.msc-------------------------打開windows管理體系結構
wupdmgr-------------------------windows更新程序
w腳本---------------------------windows腳本宿主設置
write-------------------------寫字板
winmsd-------------------------系統信息
wiaacmgr-------------------------掃描儀和照相機向導
winchat-------------------------xp自帶區域網聊天
mem.exe-------------------------顯示內存使用情況
msconfig.exe-------------------------系統配置實用程序
mplayer2-------------------------簡易
mspaint-------------------------畫圖板
mstsc-------------------------遠程桌面連接
mplayer2-------------------------媒體播放機
magnify-------------------------放大鏡實用程序
mmc-------------------------打開控制台
mobsync-------------------------同步命令
dxdiag-------------------------檢查directx信息
drwtsn32------------------------- 系統醫生
devmgmt.msc-?----------------------設備管理器
dfrg.msc-------------------------磁碟碎片整理程序
diskmgmt.msc-------------------------磁碟管理實用程序
dcomcnfg-------------------------打開系統組件服務
ddeshare-------------------------打開dde共享設置
dvdplay-------------------------dvd播放器
net stop messenger-----------------停止信使服務
net start messenger-----------------開始信使服務
notepad-------------------------打開記事本
nslookup-------------------------網路管理的工具向導
ntbackup-------------------------系統備份和還原
narrator-------------------------屏幕「講述人」
nyessmgr.msc-------------------------移動存儲管理器
nyessoprq.msc-------------------------移動存儲管理員操作請求
netstat -an------------------------(tc)命令檢查介面
syncapp-------------------------創建一個公文包
sysedit-------------------------系統配置編輯器
sigverif-------------------------文件簽名驗證程序
sndrec32-------------------------錄音機
shrpubw-------------------------創建共享文件夾
secpol.msc-----====================本地安全策略
syskey---------================系統加密,一旦加密就不能解開,保護windows xp系統的雙重密碼
services.msc---======================本地服務設置
sndvol32-------==================音量控製程序
sfc.exe--------=================系統文件檢查器
sfc /scannow---======================windows文件保護
tsshutdn-------==================60秒倒計時關機命令
tourstart------===================xp簡介(安裝完成後出現的漫遊xp程序)
taskmgr--------=================任務管理器
eventvwr-------==================事件查看器
eudcedit-------==================造字程序
explorer-------==================打開資源管理器
packager-------==================對象包裝程序
perfmon.msc----=====================計算機性能監測程序
progman--------=================程序管理器
regedit.exe----=====================注冊表
rsop.msc-------==================組策略結果集
regedt32-------==================注冊表編輯器
rononce -p ----====================15秒關機
regsvr32 /u *.dll----===============停止dll文件運行
regsvr32 /u zipfldr.dll------=====取消zip支持
cmd.exe--------=================cmd命令提示符
chkdsk.exe-----====================chkdsk磁碟檢查
ceryesgr.msc----=====================證書管理實用程序
calc-----------==============啟動計算器
charmap--------=================啟動字元映射表
cliconfg-------==================sql server 客戶端網路實用程序
clipbrd--------=================剪貼板查看器
conf-----------==============啟動
compmgmt.msc---======================計算機管理
cleanmgr-------==================垃圾整理
ciadv.msc------===================索引服務程序
osk------------=============打開屏幕鍵盤
odbcad32-------==================odbc數據源管理器
oobe/msoobe /a----==================檢查xp是否激活
lusrmgr.msc----=====================本機用戶和組
logoff---------================注銷命令
iexpress-------==================木馬捆綁工具,系統自帶
nslookup-------==================ip地址偵測器
fsmgmt.msc-----====================共享文件夾管理器
utilman--------=================輔助工具管理器
10. 怎樣用MFC發送一個標準的HTTP的GET
您好,(1)請求行 請求行由請求方法欄位、URL欄位和HTTP協議版本欄位3個欄位組成,它們用空格分隔。例如,GET /index.html HTTP/1.1。 HTTP協議的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。