當前位置:首頁 » 操作系統 » mfc項目源碼

mfc項目源碼

發布時間: 2022-09-25 19:28:32

① mfc工程怎麼查看包含了哪些mfc源碼文件

僅供參考:
1、項目源文件:可以在工程屬性界面看到,或者到工程目錄里查看
2、系統文件:工程文件列表裡有一項依賴項,里邊都是用到的相關文件

② 【急求】mfc 實現串口編程的源代碼

1.建立項目:打開VC++6.0,建立一個基於對話框的MFC應用程序SCommTest(與我源代碼一致,等會你會方便一點);
2.在項目中插入MSComm控制項 選擇Project菜單下Add To Project子菜單中的 Components and Controls…選項,在彈出的對話框中雙擊Registered ActiveX Controls項(稍等一會,這個過程較慢),則所有注冊過的ActiveX控制項出現在列表框中。 選擇Microsoft Communications Control, version 6.0,,單擊Insert按鈕將它插入到我們的Project中來,接受預設的選項。(如果你在控制項列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安裝VC6時沒有把ActiveX一項選上,重新安裝VC6,選上ActiveX就可以了),
這時在ClassView視窗中就可以看到CMSComm類了,(注意:此類在ClassWizard中看不到,重構clw文件也一樣),並且在控制項工具欄Controls中出現了電話圖標(如圖1所示),現在要做的是用滑鼠將此圖標拖到對話框中,程序運行後,這個圖標是看不到的。
3.利用ClassWizard定義CMSComm類控制對象 打開ClassWizard->Member Viariables選項卡,選擇CSCommTestDlg類,為IDC_MSCOMM1添加控制變數:m_ctrlComm,這時你可以看一看,在對話框頭文件中自動加入了//{{AFX_INCLUDES() #i nclude "mscomm.h" //}}AFX_INCLUDES (這時運行程序,如果有錯,那就再從頭開始)。
4.在對話框中添加控制項 向主對話框中添加兩個編輯框,一個用於接收顯示數據ID為IDC_EDIT_RXDATA,另一個用於輸入發送數據,ID為IDC_EDIT_TXDATA,再添加一個按鈕,功能是按一次就把發送編輯框中的內容發送一次,將其ID設為IDC_BUTTON_MANUALSEND。別忘記了將接收編輯框的Properties->Styles中把Miltiline和Vertical Scroll屬性選上,發送編輯框若你想輸入多行文字,也可選上Miltiline。
再打開ClassWizard->Member Viariables選項卡,選擇CSCommTestDlg類, 為IDC_EDIT_RXDATA添加CString變數m_strRXData, 為IDC_EDIT_TXDATA添加CString變數m_strTXData。說明: m_strRXData和m_strTXData分別用來放入接收和發送的字元數據。
5.添加串口事件消息處理函數OnComm() 打開ClassWizard->Message Maps,選擇類CSCommTestDlg,選擇IDC_MSCOMM1,雙擊消息OnComm,將彈出的對話框中將函數名改為OnComm,(好記而已)OK。
這個函數是用來處理串口消息事件的,如每當串口接收到數據,就會產生一個串口接收數據緩沖區中有字元的消息事件,我們剛才添加的函數就會執行,我們在OnComm()函數加入相應的處理代碼就能實現自已想要的功能了。請你在函數中加入如下代碼:
void CSCommTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //設置BYTE數組 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值為2表示接收緩沖區內有字元
{ ////////以下你可以根據自己的通信協議加入處理代碼
variant_inp=m_ctrlComm.GetInput(); //讀緩沖區
safearray_inp=variant_inp; //VARIANT型變數轉換為ColeSafeArray型變數
len=safearray_inp.GetOneDimSize(); //得到有效數據長度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//轉換為BYTE型數組
for(k=0;k<len;k++) //將數組轉換為Cstring型變數
{
BYTE bt=*(char*)(rxdata+k); //字元型
strtemp.Format("%c",bt); //將字元送入臨時變數strtemp存放
m_strRXData+=strtemp; //加入接收編輯框對應字元串
}
}
UpdateData(FALSE); //更新編輯框內容
}

到目前為止還不能在接收編輯框中看到數據,因為我們還沒有打開串口,但運行程序不應該有任何錯誤,不然,你肯定哪兒沒看仔細,因為我是打開VC6對照著做一步寫一行的,運行試試。沒錯吧?那麼做下一步:
6.打開串口和設置串口參數 你可以在你需要的時候打開串口,例如在程序中做一個開始按鈕,在該按鈕的處理函數中打開串口。現在我們在主對話框的CSCommTestDlg::OnInitDialog()打開串口,加入如下代碼:
// TODO: Add extra initialization here
if(m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(FALSE);
m_ctrlComm.SetCommPort(1); //選擇com1
if( !m_ctrlComm.GetPortOpen())
m_ctrlComm.SetPortOpen(TRUE);//打開串口
else
AfxMessageBox("cannot open serial port");
m_ctrlComm.SetSettings("9600,n,8,1"); //波特率9600,無校驗,8個數據位,1個停止位
m_ctrlComm.SetInputMode(1); //1:表示以二進制方式檢取數據
m_ctrlComm.SetRThreshold(1);
//參數1表示每當串口接收緩沖區中有多於或等於1個字元時將引發一個接收數據的OnComm事件
m_ctrlComm.SetInputLen(0); //設置當前接收區數據長度為0
m_ctrlComm.GetInput();//先預讀緩沖區以清除殘留數據

現在你可以試試程序了,將串口線接好後,打開串口調試助手,並將串口設在com2,選上自動發送,也可以等會手動發送。再執行你編寫的程序,接收框里應該有數據顯示了。
7.發送數據 先為發送按鈕添加一個單擊消息即BN_CLICKED處理函數,打開ClassWizard->Message Maps,選擇類CSCommTestDlg,選擇IDC_BUTTON_MANUALSEND,雙擊BN_CLICKED添加OnButtonManualsend()函數,並在函數中添加如下代碼:
void CSCommTestDlg::OnButtonManualsend()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE); //讀取編輯框內容
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//發送數據
}
運行程序,在發送編輯框中隨意輸入點什麼,單擊發送按鈕,我們通過把RS232的2.3兩口短接,在一台電腦上顯示串口的收發數據!
最後說明一下,由於用到VC控制項,在沒有安裝VC的計算機上運行時要從VC中把mscomm32.ocx、msvcrt.dll、mfc42.dll拷到Windows目錄下的System子目錄中(win2000為System32)並再進行注冊設置

③ 如何閱讀mfc源碼

首先你要知道你的程序是做什麼的。
然後先看下程序界面,大體知道實現的流程。
然後看源碼一般從初始化函數開始看起,結合之前或多或少了解的流程,看下去就能理解。

④ 如何看懂mfc項目源代碼

這個問題 問的比較廣泛了,,需要您對MFC 有個大概了解,對C++語言非常清楚,對VS自動生成的 各個文件要大概清楚其作用,建議先學習C++基礎語法,然後再學習W32應用程序開發機制,消息映射機制,然後再看看MFC,
《深入淺出MFC》

希望能幫到您!望採納。。

⑤ vc 如何打開MFC項目源代碼

雙擊xxx.rc文件打開資源編輯器,在資源視圖中點擊右鍵添加資源,選擇菜單(menu),在菜單行上面添加"文件","幫助"等,然後打開對話框資源,在屬性窗口中找到"menu"這項,選擇剛剛建立的菜單資源即可,
f5運行就看到了

⑥ MFC資料庫編程源代碼

10.sql Server7.0/2000資料庫
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL); // 初始化OLE/COM庫環境 ,為訪問ADO介面做准備
_RecordsetPtr m_pRecordset("ADODB.Recordset");
_ConnectionPtr m_pConnection("ADODB.Connection");
_bstr_t bstrSQL("select * from stu_info"); //查詢語句
char * query_cmd = "DELETE FROM stu_info WHERE sname = 』本拉登』";
try
{
// 創建Connection對象
m_pConnection.CreateInstance("ADODB.Connection");
// 設置連接字元串,必須是BSTR型或者_bstr_t類型
_bstr_t strConnect= "Provider=SQLOLEDB;Server=(local);Database=db2; uid=; pwd=;";
//若資料庫在網路上則Server為形如(192.168.1.5,3340)
//用戶sa和密碼123隻是針對我的庫
m_pConnection->Open(strConnect,"","",adModeUnknown);
if(m_pConnection==NULL)
cerr<<"Lind data ERROR!\n";
// 創建記錄集對象
m_pRecordset.CreateInstance(_uuidof(Recordset));
// 取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
_variant_t vsnum,vsname,vsage,vssex,vsmajor; //對應庫中的snum,sname,sage,ssex,smajor
cout << "學號 姓名 年齡 姓別 專業";
cout << "\n----------------------------------------------------------------\n";
while (!m_pRecordset->EndOfFile)
{
vsnum = m_pRecordset->GetCollect(_variant_t((long)0));//這兒給欄位編號和欄位名都可以
vsname = m_pRecordset->GetCollect("sname");
vsage = m_pRecordset->GetCollect("sage");
vssex = m_pRecordset->GetCollect("ssex");
vsmajor = m_pRecordset->GetCollect("smajor");
if (vsnum.vt != VT_NULL && vsname.vt != VT_NULL && vsage.vt != VT_NULL
&& vssex.vt != VT_NULL && vsmajor.vt != VT_NULL)
{
cout.setf(ios::left);
cout << setw(14) << (char*)(_bstr_t)vsnum;
cout << setw(14) << (char*)(_bstr_t)vsname;
cout << setw(8) << vsage.lVal;
cout << setw(8) << (char*)(_bstr_t)vssex;
cout <<setw(20) << (char*)(_bstr_t)vsmajor;
cout.unsetf(ios::left);
cout << endl;
}
m_pRecordset->MoveNext(); ///移到下一條記錄
}
cout << "\n----------------------------------------------------------------\n";
cout << "\n請輸入你要添加的學生信息\n";
cout << "學號:";
cin >> student.snum;
cout << "\n姓名:";
cin >> student.sname;
cout << "\n年齡:";
cin >> student.sage;
cout << "\n姓別:";
cin >> student.ssex;
cout << "\n專業:";
cin >> student.smajor;
m_pRecordset->MoveFirst(); //移動到第一條記錄
m_pRecordset->AddNew(); ///添加新記錄
m_pRecordset->PutCollect("snum",_variant_t(student.snum));
m_pRecordset->PutCollect("sname",_variant_t(student.sname));
m_pRecordset->PutCollect("sage",_variant_t(student.sage));
m_pRecordset->PutCollect("ssex",_variant_t(student.ssex));
m_pRecordset->PutCollect("smajor",_variant_t(student.smajor));
m_pRecordset->Update();
m_pConnection->Execute(query_cmd,NULL,1); //用Execute執行sql語句來刪除
m_pRecordset->Close(); // 關閉記錄集
}
// 捕捉異常
catch(_com_error e)
{
// 顯示錯誤信息
cerr << "\nERROR:" << (char*)e.Description();//拋出異常
}
if(m_pConnection->State)
m_pConnection->Close();
::CoUninitialize();

20.資料庫存入二進制欄位數據
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False"); //C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
_variant vtSource;
vtSource.vt=VT_ERROR;
_bstr_t bstrUser(L"");
_bstr_t bstrPass(L"");
pStream->Type=adTypeBinary;
pStream->Open(vtSource,adModeUnknown,adOpenStreamUnspecified,bstrUser,bstrPass);
pStream->LoadFromFile(_bstr_t(%%3)); //"C:\\mypic.bmp"
pRs->AddNew();
pRs->Fields->GetItem(_variant_t(%%2))->put_Value(_variant_t(pStream->Read(adReadAll))); //"Image"
pRs->();
pStream->Close();
pRs->Close();
CoUninitialize();

21.資料庫取出二進制欄位數據
/*
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF", "EndOfFile")
*/
CoInitialize(NULL);
_RecordsetPtr pRs=NULL;
_StreamPtr pStream=NULL;
pRs.CreateInstance(_uuidof(Recordset));
pStream.CreateInstance(__unidof(Stream));
_bstr_t ConnectString(("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%%1;Persist Security Info=False");//C:\\mydb.mdb
pRs->Open(_bstr_t("Blob"),ConnectString,adOpenKeyset,adLockOptimistic,adCmdTable);
pStream->Write(_variant_t(pRs->Fields->GetItem(_variant_t(%%2))->GetValue())); //"Image"
pStream->SaveToFile(_bstr_t(%%3),adSaveCreateOverWrite); //"C:\\mypic.bmp"
pStream->Close();
pRs->Close();
CoUninitialize();

⑦ vs2013 ultimate版本怎麼看MFC源碼

mfc.bsc是可以查看MFC源代碼的文件,其位置在MFC源代碼文件夾下,Visual Studio版本不一樣的話,位置也不一樣。
vc6.0位置:C:/Program Files/Microsoft Visual Studio/VC98/MFC/SRC/
vc2008sp1位置:D:/Program Files/Microsoft Visual Studio 9.0/VC/atlmfc/src/mfc
類似的位置搜索下就可以找得到,MSDN上有三種方法添加.bsc文件到工程,如下原文:
To open the .bsc file

* On the File menu, click Open and open the .bsc file.

The .bsc file will be available to all projects in the solution until you either reload the solution or delete the .bsc file from Solution Explorer or the Object Browser.

To attach the .bsc file to your project

1.In Solution Explorer, right-click the project node and click Add Existing Item on the shortcut menu.
2.Browse to the .bsc file and add it to your project.

The .bsc file will only be available in the project to which it is added. You can save the project so that the .bsc file will be available the next time that you open the project. You can delete the .bsc file from Solution Explorer

To add the .bsc file to the Object Browser

*In the Object Browser, click the Customize button and browse to the desired .bsc file.

When you add .bsc files to the Object Browser with the Customize button, the files are available to all projects in any solution that you open. This setting will persist across Visual Studio sessions.

The .bsc file that is referenced in each method will then appear in the Object Browser.
這里介紹第三種方法,單擊「視圖」→「對象瀏覽器」,在彈出的「對象瀏覽器」面板上「瀏覽」→「編輯自定義組件集」→「瀏覽」→「文件類型」→「源瀏覽器文件(*.bsc)」,然後在MFC源代碼文件夾下選擇mfc.bsc→「添加」→「確定.

⑧ MFC獲取url源碼

申請著作權,一般最多提交3000行代碼。如果你的文件較多,代碼量大,那麼復制主要部分就足夠了,如果代碼不多,全部復制也容易。3000行代碼復制,打開相應的頭文件和源文件,全選、復制、粘貼到word,一共就是2、3分鍾的事情吧,沒那麼麻煩。MFC代碼提交,需要注意的是APP類必須在最前面,因為這個是程序入口類;其它文件一般按照先頭文件、再對應cpp文件的格式順序粘貼即可。

熱點內容
php雲開發 發布:2025-05-18 03:12:41 瀏覽:447
sql語句顯示表 發布:2025-05-18 03:12:30 瀏覽:690
資料庫系統的例子 發布:2025-05-18 03:02:42 瀏覽:191
數字化儲存與編譯是什麼 發布:2025-05-18 02:56:55 瀏覽:217
個人網站模板源碼 發布:2025-05-18 02:51:17 瀏覽:490
主伺服器ip地址 發布:2025-05-18 02:46:29 瀏覽:856
電腦配置太低玩不了絕地求生怎麼辦 發布:2025-05-18 02:38:39 瀏覽:797
存儲過程怎麼出錯了 發布:2025-05-18 02:37:16 瀏覽:368
32寸演算法 發布:2025-05-18 02:22:14 瀏覽:744
寶塔資料庫備份 發布:2025-05-18 02:14:18 瀏覽:193