就是ComboBox中的CEdit里(为m_strComboBox),当我输入123456789,然后我选中234567,
然后不是通过键盘进行输入,而是通过一个CButton的OnClickButton1()把234567替换成"你好" 最后在ComboBox中的CEdit框里应该是"1你好89"...
我现在这个就是写不出来呀。。不知道怎么解决。谢谢OnClickButton1()
{
UPDATE(TRUE);
strcat(m_strComboBox,"你好");
UPDATE(FALSE);
}
输入:123456789你好
但现在就是如果我在ComboBox中的CEdit的输入框里,如果把选中的蓝色的数字以"你好"
替换,最后显示为"1你好89"..我就做不出来。
然后不是通过键盘进行输入,而是通过一个CButton的OnClickButton1()把234567替换成"你好" 最后在ComboBox中的CEdit框里应该是"1你好89"...
我现在这个就是写不出来呀。。不知道怎么解决。谢谢OnClickButton1()
{
UPDATE(TRUE);
strcat(m_strComboBox,"你好");
UPDATE(FALSE);
}
输入:123456789你好
但现在就是如果我在ComboBox中的CEdit的输入框里,如果把选中的蓝色的数字以"你好"
替换,最后显示为"1你好89"..我就做不出来。
解决方案 »
- VS2005中LoadLibrary的问题
- VC中怎样设置默认为unicode编译模式
- CToolBarCtrl创建的工具条的位置!
- 如何暂停别的程序的进程? 我好急~~~
- 请帮忙看看ADO编程时遇到的问题,使用_ConnectionPtr类型插入数据,在连续插入时会出错,“不支持此接口”
- 有哪位大虾详细讲一下WSARecv的各个参数以及重叠IO有什么用?
- ○ 没分了,磕头提问Windows消息 ○
- 在dll 中调用CreateDialog中的hinst怎么得到?资源是在dll中的?
- 请进来看看,关于CString和WFC编程的!
- c++学习的书
- 函数声明中加入const的作用??
- 怎么实现在客户区域画的图载入到内存,然后需要重画时再从内存载入到客户区域?
m_strComboBox.GetWindowText(str);
DWORD dwSel = m_strComboBox.GetEditSel();
int is = LOWORD(dwSel);
int ie = HIWORD(dwSel);str = str.Left(is) + _T("你好") + str.Mid(ie);
m_strComboBox.SetWindowText(str);
m_strComboBox.SetEditSel(is, ie);
"你好123456789“而不是我想要的"1你好89"
请大家在帮我看看。谢谢
{
CString str;
m_strComboBox.GetWindowText(str);
DWORD dwSel = m_strComboBox.GetEditSel();
int is = LOWORD(dwSel);
int ie = HIWORD(dwSel);str = str.Left(is) + _T("你好") + str.Mid(ie);
m_strComboBox.SetWindowText(str);
m_strComboBox.SetEditSel(is, ie);
}
用了krh2001(边城浪子) 的这个发现结果为 你好123456789
我见控看了一下,,发现is = 0 ie = 0
原来的ComboBox中的CEdit框为123456789 其中我已经选中了234567
然后在按了CButton 想让123456789 变成 1你好89
请教应该是怎么做?? 谢谢呀.
这个函数不会有问题!
但是好象在CButton按下的时候,就会出现0的..你也可以试试看的..
我现在就是解决不了??
我试过了,在LButtonDown中可以得到选中字符的位置
class CMyButton: public CButton
{
//...
//int m_iLMBtnDown;//init with 0
//...
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
}//...
ON_WM_LBUTTONDOWN()
//...void CMyButton::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
HWND hwnd = GetParent()->GetSafeHwnd();
m_iLMBtnDown = 1;
GetParent()->SendMessage(WM_COMMAND, MAKELPARAM(GetDlgCtrlID(),BN_CLICKED),(LPARAM)GetSafeHwnd());
m_iLMBtnDown= 0;
CButton::OnLButtonDown(nFlags, point);
}
然后绑定按纽对象,IDC_BUTTON1 ------- CMyButton m_btn1;
单击事件:
OnClickButton1()
{
if(m_btn1.m_iLMBtnDown == 1) {
CString str;
m_strComboBox.GetWindowText(str);
DWORD dwSel = m_strComboBox.GetEditSel();
int is = LOWORD(dwSel);
int ie = HIWORD(dwSel); str = str.Left(is) + _T("你好") + str.Mid(ie);
m_strComboBox.SetWindowText(str);
m_strComboBox.SetEditSel(is, ie);
}
}
但是我现在又有二个问题,就是我本来的那个不是CButton而是CBitMapButton.
1...
当我CMyButton去继承CBitMapButton时,就出现了二个错误Error...
virtual __ThisCall CButton......
__ThisCall CButton..........
2.
并且我如果想让ComboBox的长度进行限制,当超过15个时,不能进行输入.
ComboBox.LimitText(15).只适合键盘输入,如果是CBitMapButton进行添加时,怎么样对长度进行限定.??
谢谢......
以第一个问题为主...
m_edit.ReplaceSel("你好");
CBitmapButton在我这里不会有问题,你可以把对应的CButton改成CBitmapButton
看到添加的代码了没?-->
"
str = str.Left(is) + _T("你好") + str.Mid(ie);
m_strComboBox.SetWindowText(str);
"那么你可以在SetWindowText之前判断str 的长度( 方法str.GetLength() <= 15 )
如果大于15,那么就不进行SetWindowText