有一个CEdit控件里,有个单选checkbox.
当不选择checkbox, CEdit显示的是CString字符串如aa
当选择checkbox,CEdit显示的是ASCII字符串61 61这两个函数如何整呢,我总是整出问题来.无法交货
当不选择checkbox, CEdit显示的是CString字符串如aa
当选择checkbox,CEdit显示的是ASCII字符串61 61这两个函数如何整呢,我总是整出问题来.无法交货
解决方案 »
- 谁有BCGControlBar 啊?
- MFC按钮功能的组合实现
- 为什么在对话框程序中建一个线程,该线程函数一定得是static的呢?
- Windows 中,多线程就是多任务吗?他们有什么区别了
- 谁有VC1。52的书籍或者哪里有这类书下载。
- 大家看看这个http://www.csdn.net/expert/topic/932/932149.xml?temp=.2433893
- 急!类函数中有指针参数时遇到的问题
- 巨难:TCP截包。高手们,讲出一点思路就给分,一定!!!
- VB能调用用VC写的MFC扩展DLL吗?
- 怎么用API函数获得被的程序的句柄
- 魔兽 ReadProcessMemory 0x6FAE8450得到状态 ,他们是怎么知道的?
- 怎么运行和debug都不能弹出对话框
字符转换成十六进制:UpdateData();
CString strEdit;
CString str;
for(int i=0; i<m_edit.GetLength(); i++)
{
str.Format("%2x",m_edit[i]);
strEdit += str + " ";
}
m_edit = strEdit;
UpdateData(FALSE);
UpdateData();
int rs=1;
int i=0;
CString str;
CString strEdit;
while(rs>0)
{
rs = m_edit.Find(" ",i);
str = m_edit.Mid(i,rs-i);
str.MakeUpper();
int a=0;
for(int j=0; j<str.GetLength(); j++)
{
a = 16*a;
if(str[j]>'F')
AfxMessageBox("输入的16进制数有误");
else if(str[j]>='A')
a += 10+(int)str[j]-65;
else
a += (int)str[j]-48;
}
strEdit += (char)a;
i = rs+1;
}
m_edit = strEdit;
UpdateData(FALSE);
//在复选框,即十六进制模式下,输入66 61ff后,再切换,来回切换几次就玩完了
//点击复选框的相应函数代码
void CNewsDlg::OnCheck1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
int nCheck = ((CButton*)GetDlgItem(IDC_CHECK1))->GetCheck();
if(nCheck)
{
UpdateData();
CString strEdit;
CString str;
CString m_edit;
((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(m_edit); for(int i=0; i<m_edit.GetLength(); i++)
{
str.Format("%2x",m_edit[i]);
strEdit += str + " ";
}
m_edit = strEdit;
((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowText(m_edit);
UpdateData(FALSE);
}
else
{
UpdateData();
CString m_edit;
((CEdit*)GetDlgItem(IDC_EDIT1))->GetWindowText(m_edit); int rs=1;
int i=0;
CString str;
CString strEdit;
while(rs>0)
{
rs = m_edit.Find(" ",i);
str = m_edit.Mid(i,rs-i);
str.MakeUpper();
int a=0;
for(int j=0; j<str.GetLength(); j++)
{
a = 16*a;
if(str[j]>'F')
AfxMessageBox("输入的16进制数有误");
else if(str[j]>='A')
a += 10+(int)str[j]-65;
else
a += (int)str[j]-48;
}
strEdit += (char)a;
i = rs+1;
}
m_edit = strEdit;
((CEdit*)GetDlgItem(IDC_EDIT1))->SetWindowText(m_edit);
UpdateData(FALSE);
}
}
UpdateData();
int rs=1;
int i=0;
CString str;
CString strEdit;
while(rs>0)
{
rs = m_edit.Find(" ",i);
if(rs>=0)
str = m_edit.Mid(i,rs-i);
else
str = m_edit.Right(m_edit.GetLength()-i);
str.MakeUpper();
int a=0;
for(int j=0; j<str.GetLength(); j++)
{
a = 16*a;
if(str[j]>'F')
{
AfxMessageBox("输入的16进制数有误");
return;
}
else if(str[j]>='A')
a += 10+(int)str[j]-65;
else
a += (int)str[j]-48; if(j%2)
{
strEdit += (char)a;
a = 0;
}
}
if(str.GetLength()%2)
{
if(a<255)
strEdit += (char)a;
}
i = rs+1;
}
m_edit = strEdit;
UpdateData(FALSE);