導航:首頁 > 編程語言 > mfc怎麼編程

mfc怎麼編程

發布時間:2022-02-01 08:25:31

❶ C++和MFC編程

為什麼非要用控制台來處理線程,再用MFC寫界面呢?都在MFC中處理不就不用考慮介面的問題了么,MFC中提供的對多線程的支持很豐富的,你具體的要寫什麼樣的程序呢?
----------------------------------------------------------------------
具體的我也不是太清楚,其實是不是控制台沒關系,你設計好各自的類,在MFC裡面添加你的類,然後實例化,我這只是說說,我感覺你就算自己寫類的話,也要繼承MFC裡面的線程類?不是很清楚,你去CSDN上面問問,那裡牛人比較多

❷ MFC 編程 ,

MFC是微軟的VC++帶的視窗用的基本庫。 MFC編程就是調用這個基本庫,寫出類似於IE瀏覽器這種程序,就是用滑鼠,鍵盤為工具的人機會話式的程序。 學MFC的要點是會用visual Studio 建程序框架,用VC++語言添加程序內容,編譯和運行。關鍵要會VC++。 專門討論MFC的專業論壇: microsoft.public.vc.mfc comp.os.ms-windows.programmer.tools.mfc microsoft.public.vc.mfc.docview

❸ 如何學好MFC編程

可以看一下《MFC類庫詳解》中文版 + 《新編win32API大全》應該對你有幫助。

❹ 如何用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();

❺ 如何學習MFC編程

MFC是基於 C C++ 開發一個 類庫。如果你不懂MFC,我猜你是不是 還沒有學習 C C++。
我建議你網路搜索這篇文章

網路搜索: csdn 編程是什麼,什麼是編程
看這篇文章 先了解編程一個輪廓。看看自己是不是合適。

然後覺得自己合適編程,在搜索如下文章看看,注意最好找到原文地址,不然排版很亂。

如何正確入門Windows系統下C/C++學習領域?
掌握C/C++後,如何在Windows系統下開發有界面的程序?
如何正確入門Windows系統下驅動開發領域?
如何正確進入基於x86-64Bit Windows系統商業軟體破解領域?
如何正確的待匯編學習和反匯編學習?
成為VC++程序員,我需要學會哪些東西?

❻ 如何學好mfc 具體步驟

先學win32的SDK,也就是API, 再學MFC,這么一來呢,就先有個基礎,MFC是API的封裝, 如果API用的熟了,MFC上手就輕松的多了。 我覺得呢,現在不少WINDOWS編程入門的好書很多,多買一些,多看看,多想想。不要心浮氣躁。我的經驗就是一邊看書,一邊寫程序,看看是不是書上說的那樣。看書看明白了不行,自己做對了這個過程體會就不一樣了,做的多了,就慢慢會有「悟」的感覺。就入了門了。一般從剛開始學WINDOWS編程(前提是C/C++至少要懂得C的一般常用概念)到基本熟悉,一年時間也差不多,如果在公司里,可能會快一些,主要取決於自己,如果每天都很多時間看書就要快許多。 《Visual c++ 技術內幕》和《深入淺出MFC》不可不買 。 內功=演算法+數據結構+編譯原理+CAO作系統原理+軟體工程+英文。 學編程急不得,上來就學VC肯定碰一頭灰,說VC難就難在這點上了。如果硬上,意志堅強的話也許能挺過來,但也是會缺乏後勁,不得不回過頭來補習基礎知識。意志不堅強的話,很有可能就此放棄了,並留下一個VC難得不得了的印象。其實,只要踏踏實實一步一步來,VC也就是很簡單點事。在這里我說一下,如果你還只是一個初中生,那麼你就應當仔細考慮一下了。首先,限於你的知識和思維能力,學學C語言還應該沒問題,但要學VC是要下相當大的功夫的。而且,你現在學到的東西將來一定會過時,所以不如把精力放在演算法的研究上,畢竟這些東西永遠都不會過時。 我覺著如果走對路子,入門VC,一個暑假應該夠用了。 雖說學VC並不是傳說的那麼難,可不下些苦功夫是學不成的。在學VC前,你必須確定,你是因為熱愛編程才學VC的,而不是出於炫耀或其他。否則,恐怕你堅持不到勝利的那一天。 在選書方面,盡量看外國人寫的。不解釋。

滿意請採納

❼ MFC 編程

這是一個雙緩沖的標准代碼,在視圖類的OnDraw函數中。
意思就是,第一次進入OnDraw的時候,執行if之內的代碼,初始化內存DC(ChessAll、Buffer)和內存DC需要的點陣圖。
st是靜態變數,因此if代碼只會執行一次。

❽ MFC編程方法

從網上找些代碼看看
多看幫助文檔(MSDN),盡快熟悉MFC類的了解
其實現在你應該能做些東西了,有機會的進軟體公司, 真正的東西還是從工作中學習的
大家都是一步步走出來的

❾ mfc編程入門問題

樓主要是能從MFC里看出C++的思想來,那麼MFC就算真入門了,也不會覺得好多文件很亂了。

MFC編程是不是直接以界面為線索編程,這個要看需求吧,用MFC寫庫存管理跟寫游戲,側重點肯定是不同的。

你說的灰色文字,應該是說的代碼裡面生成出來的吧,那些是開發環境自動生成的一些宏之類的,不能隨便改,現在可以不用管它,等以後對MFC熟悉了再考慮。

MFC訪問資料庫我見得最多的就是通過 ADO,樓主可以在網上找下這方面的資料,很泛濫的。

另:不知道樓主學沒學過 Win32,如果跳過了Win32直接學的MFC,建議先花點時間看些Win32編程,再搞MFC,就清楚多了 ^_^

❿ 怎麼用MFC編程啊

雖然我沒用過MFC,

但是貌似是個 庫

應該是 引入頭文件(.h) 然後靜態連接(.lib)MFC的庫,如果有動態連接庫(.dll)的話可能需要安裝
最後在調用裡面的類
例如:
#include " xxxxx.h"
#pragma comment(lib,"xx.h")

xxxxxxx xxx ()
{
XXXXX xxxx;
xxxx.aaaaa = ???;
xxxx.bbbbb = ???;
}
差不多之類的操作把.
具體裡面不同的"X"要看你要用什麼類和庫了

閱讀全文

與mfc怎麼編程相關的資料

熱點內容
海康威視設備已加密 瀏覽:663
自適應路由演算法 瀏覽:313
pythonxlwt寫入一列 瀏覽:993
性之助app哪裡可以下載 瀏覽:414
安卓如何自己改圖標 瀏覽:848
如何去掉app資源庫的建議 瀏覽:730
中興研發面試要寫演算法嗎 瀏覽:65
linux系統配置文件 瀏覽:601
php登錄網頁模板 瀏覽:931
windownginxphp 瀏覽:509
resync命令 瀏覽:536
dos命令手冊 瀏覽:287
矽谷編程二維數組 瀏覽:41
inside游戲什麼時候移植安卓 瀏覽:944
極光安卓是什麼 瀏覽:541
如何減少pdf文件大小 瀏覽:84
ios屏幕新建文件夾 瀏覽:298
單片機固定座 瀏覽:323
一名程序員的生活 瀏覽:990
伺服器電源卡插頭如何拔 瀏覽:488