實現乙個冒泡提示的浮點數編輯框

2021-06-21 09:21:48 字數 2500 閱讀 1526

最近需要乙個浮點數編輯框。所謂浮點數編輯框,就是限制輸入只在」-1234567890.」 這些字元,其它字元不予輸入(使用者輸錯了冒乙個氣泡進行提示)。本想使用bcg庫的cbcgpmaskedit類,無奈該類允許重複輸入小數點,不滿足我的需求。

於是上網搜了乙個,發現是基於vs2010的。vs 2010的編輯框已經實現了自動冒泡提示了。但是我的工程是vs 2005的。於是我設法在vs 2005實現編輯框的冒泡提示。

實際上這個也不難,主要是使用edit_showballoontip巨集。下面是編輯框的主體**:

[cpp]view plain

copy

begin_message_map(cmyfloatedit, cedit)  

on_wm_char()  

end_message_map()  

// 實現編輯框的冒泡提示

void

cmyfloatedit::showballoontip(

lpwstr

strtitile,

lpwstr

strtext,

uint

ustyle)  

// cmyfloatedit 訊息處理程式

void

cmyfloatedit::onchar(

uint

nchar, 

uint

nrepcnt, 

uint

nflags)  

getwindowtext(strtext);  // 獲得當前已輸入的字串行

inti= getsel();      

if(!_istdigit(ch)) 

// 如果不是數字

if((startsel==0)||((startsel==1)&&(minuspos==0)))  

}  else

if(ch==

'-')  

if(strtext.find(

'-') != -1)   

}  else

if(ch>=0&&ch<=31)  

else

}  cedit::onchar(nchar, nrepcnt, nflags);    

}  

效果如下:

該編輯框相容在unicode字符集和多位元組字符集下使用。乙個值得注意的問題是編輯框實現冒氣泡需要對話方塊開啟xp介面風格。在vs 2005下開啟xp介面風格乙個很簡單的方法是在stdafx.h下新增如下**:

[cpp]view plain

copy

#if defined _m_ix86

#pragma comment(linker,"/manifestdependency:\"type='win32' name='microsoft.windows.common-controls' version='6.0.0.0' processorarchitecture='x86' publickeytoken='6595b64144ccf1df' language='*'\"")

#elif defined _m_ia64

#pragma comment(linker,"/manifestdependency:\"type='win32' name='microsoft.windows.common-controls' version='6.0.0.0' processorarchitecture='ia64' publickeytoken='6595b64144ccf1df' language='*'\"")

#elif defined _m_x64

#pragma comment(linker,"/manifestdependency:\"type='win32' name='microsoft.windows.common-controls' version='6.0.0.0' processorarchitecture='amd64' publickeytoken='6595b64144ccf1df' language='*'\"")

#else

#pragma comment(linker,"/manifestdependency:\"type='win32' name='microsoft.windows.common-controls' version='6.0.0.0' processorarchitecture='*' publickeytoken='6595b64144ccf1df' language='*'\"")

#endif

有時unicode字符集工程下已預設新增了上述**。上述做法已在vs 2005上測試通過,vs 2005以下的vs 版本不確定能否支援,vs 2005以上的vs版本應該能支援。

這個浮點數框類可以稍加改造為只支援整數的編輯框等(具體在

onchar

函式修改

)。

實現乙個冒泡提示的浮點數編輯框

最近需要乙個浮點數編輯框。所謂浮點數編輯框,就是限制輸入只在 1234567890.這些字元,其它字元不予輸入 使用者輸錯了冒乙個氣泡進行提示 本想使用bcg庫的cbcgpmaskedit類,無奈該類允許重複輸入小數點,不滿足我的需求。於是上網搜了乙個,發現是基於vs2010的。vs 2010的編輯...

實現乙個冒泡提示的浮點數編輯框

最近需要乙個浮點數編輯框。所謂浮點數編輯框,就是限制輸入只在 1234567890.這些字元,其它字元不予輸入 使用者輸錯了冒乙個氣泡進行提示 本想使用bcg庫的cbcgpmaskedit類,無奈該類允許重複輸入小數點,不滿足我的需求。於是上網搜了乙個,發現是基於vs2010的。vs 2010的編輯...

關於列印浮點數的乙個問題

在開發專案的時候,需要顯示金額數,例如 99.99 nslog 99.99 但是很坑爹的是,不知道為什麼,列印出來居然是99.98999999999999 2015 09 21 20 51 14.027 test 22562 295012 99.98999999999999很明顯這裡面少了0.000...