请问怎么在向文本框输入字符时判断按下的键是否符合要求,比如我禁止输入数字,当输入数字的时候就弹出对话框或者不响应输入

解决方案 »

  1.   

    Pretranslatemessage(应该是这样写的)判断pmsg.message如果是键盘消息的话。。如果是数字的话 你就弹出
      

  2.   

    Pretranslatemessage(应该是这样写的)判断pmsg.message如果是键盘消息的话。。如果是数字的话  ,如果窗口 handle 是 你要过滤得 文本, 你就谈出
      

  3.   

    ....昨天发过贴子想补充总出错,我要的是不用mfc等类库的方法,上面的方法我是会的
      

  4.   

    我想大概是在WM_COMMAND下处理吧,不过不知道是在谁的WM_COMMAND下
      

  5.   

    或者editbox应该也有个处理字符输入的消息,不过我查了查好像都是在输入之后用的
      

  6.   

    BOOL CYour::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) //判断键盘消息
    {
    }
    }
    在类向导里加入这个消息函数
      

  7.   

    如果是对话框程序的话:
    在DlgProc中响应WM_INITDIALOG:
    case WM_INITDIALOG:
         WNDPROC pOldProc = SetWindowLong(NewProc, GWL_WNDPROC);
         break;******************************************************
    然后去写NewProc函数。LRESULT NewProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
         case WM_CHAR:
              //在这里判断是否是数字
              return 0;
         }
         return pOldProc(hWnd, message, wParam, lParam);
    }
      

  8.   

    哦,上面的程序中, pOldProc应该是全局变量。
      

  9.   

    晕,再加点
    BOOL CYour::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST) //判断键盘消息
    {
    if(pMsg->message==WM_KEYDOWN)
    {
    HWND hWnd = ::GetFocus();
    int iID = ::GetDlgCtrlID(hWnd);
    if(iID == 你的文本框ID)
    {
    if(pMsg->wParam==37)//37 38 39 40分别对应左上右下
    {
    //进行处理
    }
    }
    }
    }
    }
      

  10.   

    LRESULT NewProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        switch(message)
        {
         case WM_KEYDOWN:
              //在这里判断是否是上下左右方向键,用虚拟键和wParam比较就可以了
              return 0;
         }
         return pOldProc(hWnd, message, wParam, lParam);
    }
      

  11.   

    我的程序是个对话框程序,顶上说的方法除了glim(glim) 说的我没试出来之外(不会求pOldProc),别的我基本上都不用试的,我已经说了,我不用mfc的,MSG是mfc定义的东西吧...倒是wltg2001(红猪)和glim(glim)说的基本是一个意思,可是由于我的水平还不够,所以都不会用....我查资料,好像http://72.14.235.104/search?&q=cache:uGCKBA_Bxa0J:topic.csdn.net/t/20010207/23/66240.html+%E6%96%B9%E5%90%91%E9%94%AE+%E5%AF%B9%E8%AF%9D%E6%A1%86+c%2B%2B&hl=zh-CN&ct=clnk&cd=20
    这个可以解决我的问题,不过不知道他写的简略还是我理解有错误,也不行....哪位麻烦一下帮我看看
      

  12.   

    真奇怪,我把所有的消息都写进去,竟然在WM_CTLCOLOREDIT里有了方向键的响应.... 不过还是截获不了消息,因为我不知道消息在wParam还是lParam里,或者他们是指针,然后在指针转换时编译器总报错
      

  13.   

    总算搞定了,原来是我理解错了,我还以为pOldProc要先得到保存呢....,谢谢glim(glim)