![VisualC++系統(tǒng)設(shè)計(jì)大作業(yè)_第1頁(yè)](http://file4.renrendoc.com/view14/M00/23/2A/wKhkGWa32yyAEyLNAAEtN48ElDc003.jpg)
![VisualC++系統(tǒng)設(shè)計(jì)大作業(yè)_第2頁(yè)](http://file4.renrendoc.com/view14/M00/23/2A/wKhkGWa32yyAEyLNAAEtN48ElDc0032.jpg)
![VisualC++系統(tǒng)設(shè)計(jì)大作業(yè)_第3頁(yè)](http://file4.renrendoc.com/view14/M00/23/2A/wKhkGWa32yyAEyLNAAEtN48ElDc0033.jpg)
![VisualC++系統(tǒng)設(shè)計(jì)大作業(yè)_第4頁(yè)](http://file4.renrendoc.com/view14/M00/23/2A/wKhkGWa32yyAEyLNAAEtN48ElDc0034.jpg)
![VisualC++系統(tǒng)設(shè)計(jì)大作業(yè)_第5頁(yè)](http://file4.renrendoc.com/view14/M00/23/2A/wKhkGWa32yyAEyLNAAEtN48ElDc0035.jpg)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
一、密碼登錄界面設(shè)計(jì)..............................................1
1、登錄前的界面..................................................1
2、登錄后的界面..................................................2
二、簡(jiǎn)易計(jì)算器設(shè)計(jì).................................................2
三、畫(huà)圖版設(shè)計(jì).....................................................3
四、結(jié)合課題實(shí)現(xiàn)具體功能...........................................5
五、制作步驟.......................................................5
1、建立基于MFC的單文檔工程.....................................5
2、標(biāo)定對(duì)話框的制作.............................................5
3、測(cè)量對(duì)話框的制作.............................................5
六、功能實(shí)現(xiàn).......................................................6
1、功能模塊1——訪問(wèn)權(quán)限的控制(見(jiàn)登錄界面設(shè)計(jì))..................6
2、功能模塊2——圖片的全屏顯示..................................6
3、功能模塊3——圖像采集........................................8
程序源代碼........................................................10
0
一、密碼登錄界面設(shè)計(jì)
1、登錄前的界面
密碼為9位,允許輸錯(cuò)3次
(UnknownScope)
AFX_STATICBOOLAFXAPIIsHelpKey(LPMSGlpMsg)
//returnTRUEonlyfornon-repeatFlkeydowns.
returnlpMsg->message==W_KEYD0¥N城
lpMsg->wPara?=VK_F1&&
!(HI¥ORD(lpMsg->lParam)&KF」
GetKeyState(VK_SHIFT)>=0
GetKeyState(VK_CONTROL)>=01
GetKeyState(VK_MENU)>=0;
-AFX.STATICinlineBOOLIsEnterKey(LPMSG
{returnlpMsg->?essage==VM_KEYDOW1
-AFX.STATICinlineBOOLIsButtonUp(LPMSG
{returnIpMsg-Message=¥M_LBUTTO1
-BOOLCVinThread::ProcessMessageFilter(in-
if(lpMsg—NULL)
returnFALSE.//nothandled
CFrameWnd*pTopFrameWnd:
CWnd*pMaintfnd:
CWnd*pMsgVnd.
switch(code)
100%
1
2、登錄后的界面
SJ
06。
Hello,大安奸.我陽(yáng)趙?I,Welcome
這邊有計(jì)算器功能相面圖功能
由干能力有R#.只能實(shí)現(xiàn)某些自單的功能.THANKYOU!
二、簡(jiǎn)易計(jì)算器設(shè)計(jì)
實(shí)現(xiàn)常見(jiàn)的加、減、乘、除功能(這邊顯示的為30+3=33)
XWBT7
D8Qf
1ello.
□□
jJjd山上l
,U.±J_U
_LI_ua二
山山d
2
三、畫(huà)圖版設(shè)計(jì)
1、畫(huà)直線,顏色分別為紅、綠、藍(lán),線寬為1、2、3
3
2、畫(huà)矩形,顏色設(shè)置為綠色,線寬為3
3、畫(huà)橢圓,顏色任意,線寬任意
4
四、結(jié)合課題實(shí)現(xiàn)具體功能
本文結(jié)合本人的研究課題,設(shè)計(jì)并實(shí)現(xiàn)了基于MFC的單文檔工程。它具有以
下功能:
1、單目結(jié)構(gòu)光視覺(jué)系統(tǒng)標(biāo)定用照片的采集;
2、順序投射特定的編碼圖案(對(duì)應(yīng)全屏顯示圖案),并按順序采集測(cè)量一
組圖案,并保存為特定文件名;
3、實(shí)現(xiàn)用戶訪問(wèn)權(quán)限的控制——當(dāng)用戶輸入正確的用戶名和密碼時(shí),后續(xù)
的標(biāo)定、測(cè)量功能方可使用。(訪問(wèn)權(quán)限設(shè)計(jì)見(jiàn)第一點(diǎn)登錄界面設(shè)計(jì))
五、制作步驟
1、建立基于MFC的單文檔工程
2、標(biāo)定對(duì)話框的制作
它是基于opencv實(shí)現(xiàn)攝像機(jī)對(duì)外部環(huán)境的圖像采集。其制作流程與登錄界
面對(duì)話框大致相同。單擊“開(kāi)始”按鈕,準(zhǔn)備外部圖像的采集;每單擊“圖像采
集”按鈕一次,存儲(chǔ)一張外部圖像。
3、測(cè)量對(duì)話框的制作
它也是基于opencv實(shí)現(xiàn)攝像機(jī)對(duì)外部環(huán)境的圖像采集。它的制作流程與登
錄界面對(duì)話框大致相同,增加的控件為位圖圖像和開(kāi)始按鈕。其主要難點(diǎn)在于圖
片的全屏顯示:由于圖片只能顯示在工作區(qū)內(nèi),因此,需要求出屏幕的分辨率和
工作區(qū)的大小,顯示時(shí)的對(duì)話框外框超出屏幕,使圖像剛好充滿整個(gè)屏幕。主屏
幕全屏顯示圖片使投影機(jī)投射相應(yīng)的編碼圖案,采集測(cè)量圖案可獲得經(jīng)過(guò)編碼圖
案調(diào)制的目標(biāo)物體圖像,如圖1所示。
圖1、目標(biāo)物體經(jīng)編碼圖案調(diào)制后獲得的圖案
最后,將三個(gè)對(duì)話框整合到單文檔界面內(nèi),如圖2所示。
5
色無(wú)標(biāo)題~nextIkJ回區(qū)
文件名)編輯(1)查看也)幫助但)用尸登錄標(biāo)定測(cè)量
口蘇IHX電電I昌號(hào)
就緒數(shù)字
圖2、主界面
六、功能實(shí)現(xiàn)
1、功能模塊1——訪問(wèn)權(quán)限的控制(見(jiàn)登錄界面設(shè)計(jì))
2、功能模塊2——圖片的全屏顯示
for(m_pp=0;m_pp<12;m_pp++)〃顯示順序顯示12張圖片
(
GetWindowPlacement(&m_01dWndPlacement);
CRectWindowRect;〃定義窗口的CRect
GetWindowRectC&WindowRect);〃獲取窗口的左上、右下角的坐標(biāo)
CRectClientRect;〃定義客戶區(qū)
RepositionBars(0,Oxffff,AFX_IDW_PANE_FIRST,reposQuery,
&ClientRect);
ClientToScreen(&C1ientRect);
intnFullWidth=GetSystemMetrics(SM_CXSCREEN);//獲取屏幕的分辨率
intnFullHeight=GetSystemMetrics(SM_CYSCREEN);
//將除控制條外的客戶區(qū)全屏顯示到從(0,0)到(nFullWidth,nFullHeight)
區(qū)域,
〃將(0,0)和(nFullWidth,nFullHeight)兩個(gè)點(diǎn)外擴(kuò)充原窗口和除控制條之
外的客
〃戶區(qū)位置間的差值,就得到全屏顯示的窗口位置
m_FulIScreenRect.left=WindowRect.left-ClientRect.left;
mFulIScreenRect.top=WindowRect.top-ClientRect.top;
mFulIScreenRect.right=WindowRect.right-ClientRect.right+nFullWidth;
m_FulIScreenRect.bottom=WindowRect.bottom-ClientRect.bottom+nFullHeig
ht;
6
m_bFullScreen=TRUE;//設(shè)置全屏顯示標(biāo)志為TRUE
//進(jìn)入全屏顯示狀態(tài):
WINDOWPLACEMENTwndpl;
wndp1.1ength=sizeof(WINDOWPLACEMENT);
wndpl.flags=0;
wndpl.showCmd=SW_SHOWNORMAL;
wndpl.rcNormalPosition=mFullScreenRect;
SetWindowPlacement(fewndpl);〃設(shè)定窗口的顯示狀態(tài)及最小化、最大化等
的位置
Seticon(m_hlcon,TRUE);//Setbigicon
Seticon(m_hlcon,FALSE);//Setsmallicon
CPaintDCde(this);//devicecontextforpainting
RECTrcclient;
GetClientRect(&rcclient);〃獲取窗口客戶區(qū)的坐標(biāo)
intnBmpX;〃源矩形的寬度和高度
intnBmpY;
HDChDC;
〃將待處理的圖像載入hBitmap中
wsprintf(filename,_T(〃pic%d.bmp〃),m_kk);
HBITMAP
hBitmap=(HBITMAP)::LoadImage(NULL,filename,IMAGE_BITMAP,0,0,LR_LOADFR
OMFILE|LR_CREATEDIBSECTION);
BITMAPbmp;〃定義一個(gè)BITMAP結(jié)構(gòu)的對(duì)象bmp
GetObject(hBitmap,sizeof(bmp),&bmp);
nBmpX=bmp.bmWidth;〃得到圖像的寬度和高度
nBmpY=bmp.bmHeight;
intclient_Width;
client_Width=rcclient.right-rcclient.left;
intclient_Height;
client_Height=rcclient.bottom-reelient.top;
nBmpX=client_Width;
nBmpY=c1ient_Height;
hDC=CreateCompatibleDC(NULL);〃開(kāi)辟一個(gè)可用的DC
SelectObject(hDC,hBitmap);〃把對(duì)象hBitmap存入DC中
StretchBlt(de,0,0,client_Width,
client_Height,hDC,0,0,nBmpX,nBmpY,SRCCOPY);〃將圖片從源矩形復(fù)制到
目標(biāo)矩法
7
圖3、圖像的全屏、采集圖像對(duì)話框
3、功能模塊3——圖像采集
功能介紹:鼠標(biāo)左擊開(kāi)始,則進(jìn)入標(biāo)定狀態(tài),準(zhǔn)備采集圖案;單擊圖像采集,
則攝像機(jī)順序采集圖像并存儲(chǔ)為指定文件名。這有助完成結(jié)構(gòu)光視覺(jué)系統(tǒng)的標(biāo)定
工作。如圖6所示。
相應(yīng)模塊的程序段如下:
CvCapture*capture=0;〃用于輔助獲取圖像幀
intncams=cvcamGetCamerasCount();〃獲取攝像頭的個(gè)數(shù)
charfilenamel[20];〃保存圖像的文件名
IplImage*frame=NULL;〃用于存儲(chǔ)圖片
capture=cvCaptureFromCAM(-l);〃使用默認(rèn)的攝像頭
Sleep(800);〃系統(tǒng)等待0.8秒
frame=cvQueryFrame(capture);〃從攝像頭或者文件中抓
取并返回幀
Sleep(200);〃系統(tǒng)等待0.2秒
wsprintf(filenamel,(/zgetpic%d.bmpz,),m_kk);〃字符串處理
cvSaveImage(fi1ename1,frame);〃保存圖像為指定文件名
cvReleaseCapture(&capture);〃停止攝像機(jī)采集圖像
8
標(biāo)定
圖4、標(biāo)定對(duì)話框
9
程序源代碼
在CALcpp文件中添加如下代碼:
voidCCA1::OnButtonO()〃計(jì)算器
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult二二FALSE)
(
numl+二〃0〃;
m_result=numl;
UpdateData(FALSE);
)
else
{
num2+=〃0”;
m_result=num2;
UpdateData(FALSE);
)
)
voidCCA1::0nButtonl()
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult二二FALSE)
(
numl+=〃l〃;
m_result=numl;
UpdateData(FALSE);
)
else
(
num2+=〃l〃;
m_result=num2;
UpdateData(FALSE);
)
}
voidCCA1::OnButtonlO()
(
//TODO:Addyourcontrolnotificationhandlercodehere
CStringstr二〃一〃;
io
if(isresult二二FALSE)
(
str+=numl;
m_result=str;
UpdateData(FALSE);
)
else
{
str+=num2;
m_result=str;
UpdateData(FALSE);
)
)
voidCCA1::OnButtonll()
{
//TODO:Addyourcontrolnotificationhandlercodehere
isresult=true;
witch=l;
}
voidCCA1::0nButtonl2()
(
//TODO:Addyourcontrolnotificationhandlercodehere
isresult=true;
witch=2;
)
voidCCA1::0nButtonl3()
{
//TODO:Addyourcontrolnotificationhandlercodehere
isresult=true;
witch=3;
voidCCA1::0nButtonl4()
(
//TODO:Addyourcontrolnotificationhandlercodehere
isresult=true;
witch=4;
)
voidCCA1::0nButtonl5()
11
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresu1t==FALSE)
(
numl+=z/.
m_result=numl;
UpdateData(FALSE);
)
else
(
num2+=〃.〃;
m_result=num2;
UpdateData(FALSE);
)
)
voidCCA1::0nButtonl6()
(
//TODO:Addyourcontrolnotificationhandlercodehere
doublenl=atof(numl);
doublen2=atof(num2);
doubleresult;
switch(witch)
(
case1:
result=nl+n2;
break;
case2:
result=nl-n2;
break;
case3:
result二nl*n2;
break;
case4:
result=nl/n2;
break;
}
m_result=//z,;
m_result.Formatresult);
UpdateData(FALSE);
)
voidCCA1::0nButton2()
(
//TODO:Addyourcontrolnotificationhandlercodehere
12
if(isresult二二FALSE)
(
numl+二〃2〃;
m_result=numl;
UpdateData(FALSE);
)
else
{
num2+=〃2〃;
m_result=num2;
UpdateData(FALSE);
)
)
voidCCA1::0nButton30
{
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult==FALSE)
(
numl+=〃3〃;
m_result=numl;
UpdateData(FALSE);
)
else
(
num2+=”3〃;
m_result=num2;
UpdateData(FALSE);
)
)
voidCCA1::0nButton4()
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult二二FALSE)
(
numl+=〃4”;
m_result=numl;
UpdateData(FALSE);
)
else
(
num2+="4”;
m_result=num2;
13
UpdateData(FALSE);
}
voidCCA1::0nButton50
{
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult==FALSE)
(
numl+=〃5〃;
m_result=numl;
UpdateData(FALSE);
else
num2+=〃5〃;
m_result=num2;
UpdateData(FALSE);
voidCCA1::0nButton6()
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult=FALSE)
(
numl+二〃6〃;
m_result=numl;
UpdateData(FALSE);
else
num2+=〃6〃;
m_result=num2;
UpdateData(FALSE);
voidCCA1::0nButton7()
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult==FALSE)
num]+=〃7〃;
14
m_result=numl;
UpdateData(FALSE);
else
(
num2+=〃7〃;
m_resultz:num2;
UpdateData(FALSE);
)
)
voidCCA1::0nButton8()
(
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult-FALSE)
(
numl+=〃8”;
m_result=numl;
UpdateData(FALSE);
)
else
{
num2+=〃8〃;
m_result=num2;
UpdateData(FALSE);
}
)
voidCCA1::0nButton90
{
//TODO:Addyourcontrolnotificationhandlercodehere
if(isresult==FALSE)
(
研出十二*〃;
mjesult=numl;
UpdateData(FALSE);
)
else
(
num2+=〃9〃;
mresult=num2;
UpdateData(FALSE);
)
15
在DlgLcpp中添力口如下代碼:
CDlgl::CDlgl(CWnd*pParent/*=NULL*/)
:CDialog(CDlgl::IDD,pParent)
(
m_count=0;
m_correct=_TC130220030");
//{{AFX_DATA_INIT(CDlgl)
m_passwd=_T(〃〃);
//}}AFX_DATA_INIT
)
voidCDlgl::0n0K()
{
//TODO:Addextravalidationhere
UpdateDataO;
if(m_correct!=m_passwd)
(
m_count++;
if(m_count>=3)
(
m_count=0;
A、MessageBox(〃您輸入的密碼已連續(xù)出錯(cuò)三次,程序結(jié)束!〃);
exit(0);
}
if(m_passwd.GetLength()<6)
AfxMessageBox(〃輸入的密碼必須在6位以上,請(qǐng)重新輸入!〃);
else
AfxMessageBox(〃輸入的密碼有誤,請(qǐng)重新輸入!〃);
m_passwd=_T(〃〃);
UpdateData(FALSE);
)
else
CDialog::0n0K();
}
voidCDlgl::0nCancel()
(
//TODO:Addextracleanuphere
exit(0);
CDialog::0nCancel();
16
在LineWidth.cpp中添力H如下代碼:
voidCLineWidth::0n0K()
(
//TODO:Addextravalidationhere
UpdateDataO;
UpdateData(FALSE);
CDialog::0n0K();
在MainFrm.cpp中;忝力口如下代碼:
voidCMainFrame::0nCal()
{
//TODO:Addyourcommandhandlercodehere
m_pdlg=newCCA1;
m_pdlg->Create(IDD.DIALOG2,NULL);
m_pd1g->ShowWindow(SWSHOW);
)
在yyView.cpp中添力n如下代碼:
CYyView::CYyView()
(
//TODO:addconstructioncodehere
m_type=0;
m_select=0;
)
voidCYyView::OnDraw(CDC*pDC)
(
CYyDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:adddrawcodefornativedatahere
pDC->TextOut(0,0,"Hello,大家好,我是趙強(qiáng),Welcome");
pDC->TextOut(O,30,〃這邊有計(jì)算器功能和畫(huà)圖功能〃);
pDC->TextOut(0,60,〃由于能力有限,只能實(shí)現(xiàn)某些簡(jiǎn)單的功能,THANKYOU!
〃);
voidCYyView::0nLine()
17
//TODO:A
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲化資源庫(kù)的建設(shè)對(duì)小學(xué)教育的啟示與影響
- 防火疏散的應(yīng)急預(yù)案
- 二手房買賣合同終止協(xié)議模板
- 業(yè)務(wù)合同模板:勞動(dòng)聘用關(guān)鍵條款
- 臨時(shí)借用合同范文
- 臨時(shí)工雇傭合同書(shū)
- 三方合作合同模板范本
- 云計(jì)算服務(wù)框架合同
- 事業(yè)單位合同到期人員何去何從
- 二手汽車轉(zhuǎn)讓合同協(xié)議
- 危險(xiǎn)化學(xué)品安全監(jiān)管培訓(xùn)
- 2024-2030年中國(guó)醫(yī)療建筑工程行業(yè)發(fā)展?jié)摿巴顿Y戰(zhàn)略規(guī)劃分析報(bào)告
- 人工智能導(dǎo)論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋天津大學(xué)
- 遼寧中考英語(yǔ)2022-2024真題匯編-教師版-專題06 語(yǔ)篇填空
- 法律職業(yè)資格考試客觀題(試卷一)試題及解答參考(2024年)
- 教學(xué)的模樣讀書(shū)分享
- 老年髖部骨折患者圍術(shù)期下肢深靜脈血栓基礎(chǔ)預(yù)防專家共識(shí)(2024版)解讀 課件
- 江蘇省無(wú)錫市2024年中考語(yǔ)文試卷【附答案】
- 五年級(jí)上冊(cè)小數(shù)脫式計(jì)算200道及答案
- 2024年秋新滬科版物理八年級(jí)上冊(cè) 第二節(jié) 測(cè)量:物體的質(zhì)量 教學(xué)課件
- 2024義務(wù)教育英語(yǔ)課程標(biāo)準(zhǔn)2022版考試題庫(kù)附含答案
評(píng)論
0/150
提交評(píng)論