如何实现输入密码时,当按下下一个button时,上一个button的选择就保留,就从下一位输出

解决方案 »

  1.   

    先GetWindowText取出现有字符,然后加上新字符,再SetWindowText。
      

  2.   

    就像手机的键盘一样,一个button上面不是有可能有数字1和ABC吗?我做的是用一个timer来控制,当按下同一个按钮,只要时间不超过我设置的timer时间1秒,它就不停的在1和ABC这几个之间切换,当超过时间就确定你最后按下的,按另一个按钮时,要是和前一个按钮事件间隔少于设置的timer也会覆盖掉前一个输入,这是一个要解决的问题,还有就是当我再一次按到我已经选中过的按钮时,因为我是用多个全局变量来控制1和ABC数值的切换的,所以再按以前按过的按钮它就不会从1开始,而是根据上一次那个全局变量++的值来确定输出A还是B还是C
      

  3.   

    把按键封装成类(或结构体),类中有一个成员变量iCount记录你在timer时间内按下该按键的次数,其值初
    始化为0,并且超过你设定的timer时再重新赋0(可用定时器控制);再写一个成员函数char OutPut(int iCount),根据iCount值返回具体数值并付给一个用来接受输入的全局变量char input;这样就可以达到你的
    要求了char input = 0;
    class Key
    {
        unsigned int iCount;
        
    public:    char OutPut(int iCount)
        {
            ......
        }
    };
    //你有多少按键就定义一个多大的数组
    class Key KeyArray[num];
    //给你的数组赋值你自己看着具体实现就行了,别忘了定时器
      

  4.   

    edit control的输入字符自动往后移动怎么做啊?
      

  5.   

    CEdit *p_edit=&m_EditPrompt;
    p_edit->SetRedraw(FALSE);//防止闪烁
        int nLength = p_edit->SendMessage(WM_GETTEXTLENGTH);
    if (nLength>2000) p_edit->SetWindowText("");
        p_edit->SetSel(nLength,nLength);
    p_edit->ReplaceSel(strTemp+"\r\n");
    p_edit->LineScroll(p_edit->GetLineCount());
        p_edit->SetRedraw(TRUE);