;
帖子
3919 
精华
积分
11710 
鱼币
0 ¥ 
来自
大连 
在线时间
1858 小时 
注册时间
2007-6-11 
最后登录
2009-10-20 

贴图大师勋章新人进步勋章宣传大使勋章论坛元老勋章

3
发表于 2009-1-5 19:48 | 只看该作者
璁哄潧鍏稿瀷闂鐨勪竴涓В鍐虫柟娉 - 缂栫▼搴 - Powered by SupeSite

浣犵殑浣嶇疆锛缂栫▼搴 >> 璧勮 >> VC >> vc鎺т欢 >> 璇︾粏鍐呭 鍦ㄧ嚎鎶曠ǹ

璁哄潧鍏稿瀷闂鐨勪竴涓В鍐虫柟娉

鍙戝竷: 2008-6-26 14:54 |  浣滆: admin |   鏌ョ湅: 55娆

涓嬭浇鏈枃鎵闄勬簮浠g爜

浠嬬粛

鍦ㄥ緢澶歏C鎶鏈鍧涗腑缁忓父鐪嬪埌涓浜涗汉鎻愬嚭鏉ヨ澶氱殑闂,鍏朵腑鏈夊緢澶氱殑闂鍏锋湁寰堝鐨勯拡瀵规у拰鏅墖鎬,杩欓噷灏变袱涓棶棰樿繘琛岀畝瑕佺殑鍥炵瓟,涔熻寰堝楂樻墜鏈夋洿绠鍗曠殑瑙g瓟鏂规硶,涓嶈繃杩欓噷鐨勬柟娉曞笇鏈涜兘缁欏悇浣嶆垨鑰呭垵瀛﹁呮湁甯姪.

姝f枃

闂涓.濡備綍鏄疎D99v鏀寔灏忔暟鐨勮緭鍏.

涓鑸殑ED99v鎺т欢鏀寔寰堝鏍煎紡鐨勮緭鍏,濡傛灉瑕佹敮鎸佹暟鎹殑杈撳叆鐨勮瘽,浣犲彲浠ヤ慨鏀笶D99v鎺т欢灞炴,閫変腑NUMBER灞炴у氨鍙互浜,浣嗘槸杩欐牱涓嶆敮鎸.鍙风殑杈撳叆,涔熷氨鏄笉鏀寔灏忔暟鐨勮緭鍏ヤ簡.

杩欓噷鐨勮В鍐虫柟娉曟槸娲剧敓涓涓被CED99v,鐒跺悗鏄犲皠娑堟伅EN_CHANGE,鍥犱负濡傛灉浣犵殑鎺т欢浣跨敤杩欎釜娲剧敓绫荤殑璇,鍦ㄤ綘杩涜浣犵殑ED99v鎺т欢杩涜杈撳叆瀛楃鏀瑰彉鐨勬椂鍊欓兘浼氳Е鍙戣繖涓簨浠,涓嶇敤涓轰綘鐨勬帶浠舵瘡涓Е鍙慐N_CHANGE浜嬩欢浜.鐒跺悗鍒ゆ柇鏂拌緭鍏ョ殑瀛楃,濡傛灉杩欎釜瀛楃绗﹀悎鏁板瓧瑙勫垯鎴栬.鍙疯鍒,鍐嶈绠楀凡缁忓嚭鐜扮殑.鍙锋鏁,褰撶鍚堣繖绉嶆潯浠舵椂鍏佽杈撳叆鎿嶄綔,鍚﹀垯鍒犻櫎鍒氳緭鍏ョ殑瀛楃,杩涜閲嶆柊璁剧疆缂栬緫妗嗗瓧绗︿覆鐨勬搷浣.

鍙兘娑夊強鍒扮殑闂,1:濡備綍鍒ゆ柇涓涓瓧绗︿覆鏄暟瀛楄繕鏄埆鐨勭被鍨.2:濡備綍鏌ユ壘涓涓瓧绗︿覆涓煇涓鍙峰嚭鐜扮殑娆℃暟.3:濡備綍璁剧疆ED99v鍏夋爣鐨勪綅缃.

1 闂鐨勮В鍐虫柟娉曞彲浠ュ埄鐢ㄤ笅闈㈢殑鏂规硶瑙e喅.

CString strtemp=szTemp.SpanIncluding("0123456789");

if(!strtemp.IsEmpty())

//杩欎釜瀛楃涓蹭负鏁板瓧

else

//闈炴暟瀛

2 闂鎴戠敤寰幆閫掑綊鐨勬柟娉曞疄鐜,棣栧厛鏌ユ壘鏈鍏堝嚭鐜扮殑绗﹀彿浣嶇疆,鐒跺悗鍒╃敤瀛楃涓插垎鍓叉妧鏈彇RIGHT閮ㄥ垎鍐嶈繘 琛屽惊鐜皟鐢ㄥ氨鍙互浜,鐩稿叧浠g爜鍙互瑙佷笅:

int CNumEditCtrl::GetStringNum(CString szVal)//鑾峰緱瀛楃涓蹭腑闂.鍙风殑涓暟

{

int nNum=0;

while(1)

{

int nCount=szVal.Find('.');

if(nCount==-1)

break;

szVal=szVal.Right(szVal.GetLength()-nCount-1);

nNum++;

}

return nNum;

}

3 闂鍙互閲囩敤鑾峰緱ED99v鎺т欢鍙ユ焺鍙戦丒M_SETSEL娑堟伅鐨勬柟娉曞疄鐜.

鎵浠ュ熀鏈唬鐮佸彲浠ュ疄鐜拌涓嬩簡:

void CNumEditCtrl::OnChange()

{

// TODO: If this is a RICHED99v control, the control will not

// send this notification unless you override the CEdit::OnInitDialog()

// function and call CRichEditCtrl().SetEventMask()

// with the ENM_CHANGE flag ORed into the mask.

CString m_estr,szTemp;

GetWindowText(m_estr);

int nLen=m_estr.GetLength();

if(!m_estr.IsEmpty())

{

szTemp=m_estr.Right(1);

BOOL bNum=TRUE;

CString strtemp=szTemp.SpanIncluding("0123456789");

if(!strtemp.IsEmpty())

bNum=TRUE;

else

bNum=FALSE;

nPoint=GetStringNum(m_estr);

if(strcmp(szTemp,".")==0 || bNum)

{

if(nPoint>1)

{

nPoint--;

::AfxMessageBox(".鍙峰嚭鐜版鏁拌秴杩囦袱娆!");

m_estr=m_estr.Left(m_estr.GetLength()-1);

SetWindowText(m_estr);

nLen--;

SendMessage(EM_SETSEL,nLen,nLen);

return;

}

}

else

{

::AfxMessageBox("杈撳叆鏍煎紡閿欒");

m_estr=m_estr.Left(m_estr.GetLength()-1);

SetWindowText(m_estr);

nLen--;

SendMessage(EM_SETSEL,nLen,nLen);

return;

}

}

// TODO: Add your control notification handler code here

}

闂浜.濡備綍浣跨敤PICTURE鎺т欢鏄剧ずED99v鎺т欢鍐呭

PICTURE鎺т欢涓嶈兘杩涜SETWINDOWTEXT鎿嶄綔,鎵浠ヤ笉鑳界洿鎺ヤ娇鐢ㄦ帶浠朵笉鑳芥樉绀哄瓧绗.浣嗘槸濡傛灉娲剧敓CSTATIC,鐒跺悗澶勭悊WM_PAINT娑堟伅杩涜鎺т欢鐨勯噸缁樻搷浣滃氨鍙互瀹炵幇浜.浠g爜鍏跺疄閮芥槸鐙犵畝鍗曠殑.涓嬮潰鐨勬柟娉曞彲浠ュ弬鑰.

void CShowStrPicWnd::OnPaint()

{

CPaintDC dc(this); // d

m_Brush.DeleteObject();

m_Brush.CreateSolidBrush(RGB(255,128,64));

CDC* pDC = GetDC();

pDC->SetBkMode(OPAQUE);

pDC->SetBkColor(RGB(255,128,64));

pDC->SelectObject(&m_Brush);

CRect rc;

GetClientRect(&rc);

ScreenToClient(&rc);

pDC->Rectangle(0, 0, rc.Width(), rc.Height());

pDC->SetTextColor(RGB(255,0,0));

pDC->TextOut(2, 2, strText.GetBuffer(strText.GetLength()));

// Do not call CStatic::OnPaint() for painting messages

}

鐒跺悗瑙﹀彂鎺т欢EN_CHANGE娑堟伅,杩欐牱灏辫兘澶熷皢淇℃伅浼犻掑埌PIC浜,鍐嶈皟鐢↖NVALIDATERECT杩涜鐣岄潰鐨勯噸缁樺伐浣.

绋嬪簭杩愯鐣岄潰瑙佷笅:

鎵撳嵃 | 鏀惰棌姝ら〉 |  鎺ㄨ崘缁欏ソ鍙 | 涓炬姤
涓婁竴绡 涓嬩竴绡
 

璇勫垎锛0

鍙戣〃璇勮
鏌ョ湅鍏ㄩ儴鍥炲銆愬凡鏈0浣嶇綉鍙嬪彂琛ㄤ簡鐪嬫硶銆