SDK:想控制EDIT里得输入,比如说只允许输入数字,但要带小数点。控件有个属性是:NUMBER设置后只允许输入数字没有小数点。我想既然数字可以,再解决个小数点应该没有问题,为什么搜了那么多帖子都没有很好得解决?
急需您得帮助!
谢谢。
急需您得帮助!
谢谢。
解决方案 »
- 添加lib库文件,fatal error LNK1136:invalid or corrupt file
- 同样的代码,为什么两次编译生成的值不一样?
- mfc 界面在不同荷兰语等其它语言机器上 出现画面移位、重叠,高人指点一下
- Socket模仿浏览器发送GET请求成功,但为何recv不到服务器响应的数据?
- Debug Assertion Failed,FILE:afxwin1.inl LINE:501是怎么回事?
- 使用csocket,send时出现10057号错误WSAENOTCONN
- 哪里有"VC技术内幕第四版下载"!!!给分!!
- BITMAP的问题,我想肯定有人也遇到过。
- MFC activex控件获得dialog子窗口句柄
- 在IT行业工作你选择哪里?北京,上海,深圳
- 在CFilefind类中,如何查找指定目录下的文件,而非当前目录?(在线)
- 我下的installshield6.3只能选择E文,请问哪儿有中文的。
添加对WM_CHAR消息的处理
添加对WM_CHAR消息的处理void CPhoneEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)
{
// TODO: Add your message handler code here and/or call default
if (((nChar >= _T ('0')) && (nChar <= _T ('9'))) ||
(nChar == VK_BACK) || (nChar == _T ('.')))
CEdit::OnChar(nChar, nRepCnt, nFlags);
}
(nChar == VK_BACK) || (nChar == _T ('.')))
{
}
收到你的短消息,我的回答太长,发不了sdk处理是这样的
WNDPROC wpOrigEditProc;
//这是一个主对话框过程,
LRESULT APIENTRY EditBoxProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
HWND hwndEdit;
switch(uMsg)
{
case WM_INITDIALOG:
// Retrieve the handle to the edit control.
hwndEdit = GetDlgItem(hwndDlg, ID_EDIT);
// Subclass the edit control.
wpOrigEditProc = (WNDPROC) SetWindowLong(hwndEdit,
GWL_WNDPROC, (LONG) EditSubclassProc); //子类化,设置你的处理函数
//
// Continue the initialization procedure.
//
return TRUE;
case WM_DESTROY:
// Remove the subclass from the edit control.
SetWindowLong(hwndEdit, GWL_WNDPROC,
(LONG) wpOrigEditProc); //把原来的处理过程设回去
//
// Continue the cleanup procedure.
//
break;
}
return FALSE;
UNREFERENCED_PARAMETER(lParam);
}
// Subclass procedure //你的处理函数
LRESULT APIENTRY EditSubclassProc(
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
if (uMsg == WM_GETDLGCODE)
return DLGC_WANTALLKEYS; //在这里你用switch(){}可以处理Edit的消息wm_char
return CallWindowProc(wpOrigEditProc, hwnd, uMsg,
wParam, lParam); //调原来的Edit的处理函数
}
也是输入数据,但是我没有限定必须输入数据,而是转换了一下
Mm 是矩阵类,你可以把他改成数组或者CArray类
Mm CDProgramDlg::GetArray(CEdit& eidtboxID)
{
int i;
int nLineCount = eidtboxID.GetLineCount();
Mm temp=zeros(1,nLineCount);
CString strText;
// Dump every line of text of the edit control.
for (i=0;i<nLineCount;i++)
{
eidtboxID.GetLine(i, strText.GetBuffer(eidtboxID.LineLength(i)));
strText.ReleaseBuffer(eidtboxID.LineLength(i));
temp.r(1,i+1)=atof(strText);
}
return(temp);
}