【问题标题】:GetSel always returning 0,0GetSel 总是返回 0,0
【发布时间】:2013-07-23 18:13:56
【问题描述】:

我有一些代码可以在 ON_EN_CHANGE 调用时从用户输入的字符串中去除非法字符。 因此,如果有被删除的光标位置,则需要更正。

为此,我一直在尝试使用 GetSel 来检索位置,然后通过 setsel 将其设置如下。 f 是另一个 int 变量。

m_ExportDirectory.GetWindowTextA(directory);
//characters removed here
if (rem > 0) 
{
    int j;
    m_ExportDefaultName.GetSel(f, j);
    m_ExportDirectory.SetWindowTextA(directory);
    m_ExportDefaultName.SetSel(f-rem, f-rem);
}

但 getsel 总是将 f 和 j 都设置为 0。我尝试将其调用移至 GetWindowText 之上,但没有任何变化。

我在做傻事吗?如果没有任何想法?

谢谢

【问题讨论】:

  • 你是不是故意在另一个对象上调用GetSel/SetSel而不是SetWindowTextA?看来这不是你想做的。
  • 好吧.. 我不敢相信我错过了。我猜是隧道视觉。谢谢,我试试看

标签: c++ mfc cedit


【解决方案1】:

我认为问题在于GetSel() 返回选择 开始和结束位置。你得到 (0,0) 因为用户没有选择文本。

【讨论】:

  • 根据这个答案stackoverflow.com/questions/92671/… 它应该可以工作。互联网上还有其他几个来源也说同样的话。
  • 我用简单的程序检查过,确实可以。根据您提供的代码,很难推断为什么它在您的情况下不起作用。很多时候归结为控件中没有设置某种类型的标志。
【解决方案2】:

由 Tims 评论解决。看来问题是我的疲倦和愚蠢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2010-12-15
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多