MFC學習筆記之多對話方塊中使用定時器

2021-06-20 22:08:56 字數 1798 閱讀 1348

各位,我有這樣乙個問題:我要做乙個多對話方塊的工程,裡面有兩個以上的對話方塊,後台有乙個執行緒進行串列埠通訊,每個對話方塊都會根據讀入串列埠的內容進行更新。比如乙個對話方塊顯示資料,乙個對話方塊繪製波形。

我的通訊會採用定時方式,比如100毫秒收發一次,然後對話方塊的內容也是100ms更新一次。現在我的問題是,我在乙個窗體裡settimer(),在另乙個對話裡無法對這個定時器進行處理。有什麼辦法能讓幾個對話方塊共用乙個定時器嗎?因為我的通訊和資料解析都是後台進行的,我希望幾個對話方塊都同步更新。我嘗試過控制項指標的方式在乙個對話方塊裡間接訪問其他對話方塊,但是執行時會發生異常,不知道什麼原因?

解決方案 »

可以這麼做,,只用乙個定時器,負責讀資料, 然後將資料分發給(sendmessage or postmessage)對話方塊.

1、你這個不需要那麼多定時器的。把你的介面和資料邏輯分開。你的資料有改變的時候通知介面重畫就ok了。

有資料改變,post訊息到相應的介面,讓其做相應的修改即可。2、「我嘗試過控制項指標的方式在乙個對話方塊裡間接訪問其他對話方塊,但是執行時會發生異常,不知道什麼原因?」這個你除錯一下就知道原因了,一般指標這樣傳遞的話判斷指標的值是否有效,另外你現在是視窗中使用計時器之類的,需要判斷視窗的控制代碼來判斷視窗是否已經建立好。

mfc菜鳥第一次發貼,請各位高人指教:我需要做乙個基於對話方塊的程式,主對話方塊timertrydlg上就兩個按鈕,確定鈕按下後執行訊息處理onfirstok(),先初始化定時器,再開啟有模式對話方塊testdlg,定時器時間到了執行ontimer-在子對話方塊上的乙個靜態控制項上畫點,但ontimer在ctimertrydlg主對話方塊類中定義。現在問題是,編譯鏈結能通過,執行時,開啟子對話方塊後時間一到,馬上兩個對話方塊都關閉了請各位指教,或者提供一下在子對話方塊(有模非模都可以了)中使用定時器的例項好嗎?謝謝!以下是相關**:class ctimertrydlg : public cdialog ;

int m_nxpixel;

int m_nypixel;

int m_ntimer;

.............void ctimertrydlg::onfirstok() 

void ctimertrydlg::ontimer(uint nidevent) 

} 解決方案 »

cwnd  *pwnd=getdlgitem(idc_static); // idc_static是子對話方塊上的乙個靜態文字控制項 

這句只能得到當前的ctimertrydlg對話方塊上的靜態文字控制項。

如果要達到樓主的目的應該這樣

ctestdlg m_dlg;//這個變數定義為ctimertrydlg的成員變數

在onfirstok() 中呼叫pdlg.domodal()

在ontimer(uint nidevent) 中改為

cwnd  *pwnd=m_dlg.getdlgitem(idc_static); 

你檢查一下pwnd為不為null,靜態文字控制項系統為我們預設id為id_static,但如果你在程式需要操作靜態文字控制項的,必須改變其id,把靜態文字控制項的id:id_static改為id_static1試一下。

這個應該在**定義呢,在timertrydlg.h或者ontimer中定義均會出現致命性錯誤

在timertrydlg.h中定義,出現致命性錯誤是因為m_dlg.domodal() 產生的對話方塊視窗是區域性的,你關閉它後,

ontime()如果會去畫屏,就會出錯,可在畫屏前加入判斷。

if(!iswindow(m_dlg.m_hwnd))

return;

cwnd  *pwnd=m_dlg.getdlgitem(idc_static); 

14.03.11

MFC對話方塊中使用CHtmlEditCtrl

mfc對話方塊中使用chtmleditctrl 我在vs2008校正了一些 最近由於專案需要,需要在對話方塊中使用chtmleditctrl控制項,網上大部分的 都是直接使用chtmleditview的,很少有chtmleditctrl在對話方塊中使用的示例。網上有乙個 動態表情的 中存在bug,因...

mfc 子對話方塊控制父對話方塊 MFC對話方塊構架程式

遺憾的是 從來沒有被堅定選擇過,就像是,他只是剛好需要,你只是剛好在。網易雲熱評 一 對話方塊架構分類 1 模式對話方塊,彈出來不能進行其他操作 2 無模式對話方塊,彈出來後可以進行其他操作 二 新建win32應用程式 模式對話方塊 1 建立 2 修改屬性 3 新增dialog資源 4 包含標頭檔案...

MFC 對話方塊

1 建立對話方塊模板,設定對話方塊屬性 cadditionddlg 主對話方塊類 顯示的主要介面 addition的資源樹 4個子項 dialog 對話方塊 含有2個對話方塊模板 id為idd aboutbox 關於對話方塊模板 idd addtion dlalog 主對話方塊模板 lcon 圖示 ...