基于对话框的绘图
一 對(duì)話框的繪圖機(jī)制
MFC中對(duì)話框的繪圖是由對(duì)話框接受系統(tǒng)WM_PAINT消息后,根據(jù)消息處理程序來執(zhí)行相應(yīng)的操作。可以在類向?qū)е械南⒅刑砑犹幚沓绦?#xff0c;亦或是在對(duì)話框資源列表中添加處理程序,一般繪圖消息處理程序函數(shù)名位OnPaint()。
最后得到的結(jié)果如下圖所示:
雖然很丑。。。但是我們注重的不是邏輯嘛!!
根據(jù)對(duì)話框不同控件數(shù)據(jù)的變化,繪圖區(qū)域的數(shù)據(jù)也應(yīng)該同步更新。如上圖所示,不同風(fēng)速會(huì)對(duì)應(yīng)不同的風(fēng)譜圖。這就需要將編輯框控件與對(duì)話框之間建立聯(lián)系,可以為每個(gè)控件添加事件處理程序來處理參數(shù)發(fā)生變化時(shí),對(duì)話框圖形的重繪。代碼很簡(jiǎn)單:
void SpectrumDlg::OnEnChangePress() {// TODO: 如果該控件是 RICHEDIT 控件,它將不// 發(fā)送此通知,除非重寫 CDialogEx::OnInitDialog()// 函數(shù)并調(diào)用 CRichEditCtrl().SetEventMask(),// 同時(shí)將 ENM_CHANGE 標(biāo)志“或”運(yùn)算到掩碼中。int Temp = GetDlgItemInt(IDC_PRESS);//IDC_PRESS為該控件的ID,GetDlgItemInt()函數(shù)可以獲得指定ID控件的整型數(shù)據(jù)。V10 = Temp;//V10為要改變的參數(shù)InvalidateRect(&m_RectSample);//將m_RectSample區(qū)域內(nèi)重繪UpdateWindow();//更新窗口// TODO: 在此添加控件通知處理程序代碼}總結(jié)
- 上一篇: 关于Notion导出PDF的建议
- 下一篇: VTL(Velocity Templat