mfc保持兩個edit control的一致性

2022-03-25 11:28:56 字數 1215 閱讀 6982

兩個edit control,比如半徑r,周長l,需要保證r改變,l隨之更改;l改變,r隨之更改。

查了下,發現edit有乙個en_change訊息,每當乙個edit有更改,會傳送乙個en_change訊息。因此在兩個edit上均新增這樣乙個訊息處理函式,去更改另乙個edit即可。

**如下:

1

//r的訊息處理函式

2onenchangeeditr()320

//l的訊息處理函式

21onenchangeeditl()

22

跑了兩次都掛了。debug了下發現是setdlgitemtext會傳送on_enchange訊息,兩個處理函式反覆互相呼叫導致陷入死迴圈。

要想破解死迴圈,需要在處理函式中辨識是否從另乙個處理函式而來,如果是的話就直接返回。因此加兩個布林變數的標記,fromr和froml,初始值為false。**如下:

1

onenchangeeditr()217

1819

//todo: 在此新增控制項通知處理程式**

20cstring rs,ls;

21double

r,l;

22getdlgitemtext(idc_edit_r,rs);

23 r=atof(rs);

24 l=2*3.14159*r;

25 ls.format("

%.2f

",l);

26 fromr=true;27

setdlgitemtext(idc_edit_l,ls);28}

2930

onenchangeeditl()

3146

4748

//todo: 在此新增控制項通知處理程式**

49cstring rs,ls;

50double

r,l;

51getdlgitemtext(idc_edit_r,rs);

52 r=atof(rs);

53 l=2*3.14159*r;

54 ls.format("

%.2f

",l);

55 froml=true;56

setdlgitemtext(idc_edit_r,rs);

57 }

C 同時保持兩個窗體啟用

c 中,如何同時保持兩個窗體啟用?基本的思想是當乙個窗體啟用時設定另乙個窗體啟用。這樣相互啟用。然而我們只是用單純的c 是無法實現的,我們需要用到winapi。我們現在有form1和form3兩個窗體,form1作為起始窗體。public partial class form1 form void ...

保持兩個Git分支不同的檔案

時間 2019 01 27 標籤 git 欄目 git 原文 我確定我的 git repo的兩個分支應該只在乙個檔案中有所不同.確保這一點的最簡單方法是在branch1中完成所有工作,並在每次切換到它時將其合併到branch2中 包裝到shell指令碼中,因此每個交換機只需要乙個命令 但是,有沒有辦...

MFC中鍵盤響應的兩個問題

1 mfc中上下左右鍵的響應 在普通的mfc視窗中可以用onkeydown 函式或者onchar 函式來響應鍵盤訊息。普通字元的響應很簡單,但是鍵盤上下左右鍵的響應卻沒辦法直接通過字元來實現,嘗試了採用asic碼代替字元也沒有成功,以下是一種正確的使用方法 switch nchar case i c...