您的位置:程序门 -> vc/mfc -> 进程/线程/dll



pretranslatemessage(msg* pmsg) 问了近百个人没一个能解决!判断大小写,再不能解决,这个软件就不能再往下写了!所有的功夫全白费了!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


pretranslatemessage(msg* pmsg) 问了近百个人没一个能解决!判断大小写,再不能解决,这个软件就不能再往下写了!所有的功夫全白费了!
发表于:2008-01-10 15:34:25 楼主

pretranslatemessage(msg*   pmsg)  
这里怎么判断用户输入的字母是大写还是小写?

  bool       ctestadlg::pretranslatemessage(msg*       pmsg)          
    {      
       
    if(::getdlgctrlid(pmsg-> hwnd)==idc_edit1       &&       pmsg-> message==wm_keydown)
    {      
                if(pmsg-> message           ==       wm_keydown)  
{
if(pmsg-> wparam   > =   'a'   &&   pmsg-> wparam   <=   'z'   )
{
afxmessagebox("小写");
}
else   if   (pmsg-> wparam     > =   'a'     &&   pmsg-> wparam   <=   'z')
{
afxmessagebox("大写");
}
                  }
    }      
       
    return       cdialog::pretranslatemessage(pmsg);      
    }      

上面,弹出来的永远是大写!


  bool       ctestadlg::pretranslatemessage(msg*       pmsg)          
    {      
       
    if(::getdlgctrlid(pmsg-> hwnd)==idc_edit1       &&       pmsg-> message==wm_keydown)
    {      
                if(pmsg-> message           ==       wm_char)  
{
if(pmsg-> wparam   > =   'a'   &&   pmsg-> wparam   <=   'z'   )
{
afxmessagebox("小写");
}
else   if   (pmsg-> wparam     > =   'a'     &&   pmsg-> wparam   <=   'z')
{
afxmessagebox("大写");
}
                  }
    }      
       
    return       cdialog::pretranslatemessage(pmsg);      
    }      

效果同上,当按下字母时永弹出来的永远是大写!


请问怎么才能判断用户输入的是大写还是小写!谢谢!
再解决不了,这个程序就拉倒了!
不能再写了!
半个多月的时间全白费了!

发表于:2008-01-10 15:44:351楼 得分:0
c/c++ code
bool ctestadlg::pretranslatemessage(msg* pmsg) { if(::getdlgctrlid(pmsg-> hwnd)==idc_edit1 && pmsg-> message == wm_char) { if(ischarlower(pmsg-> wparam)) { afxmessagebox("小写"); } if (ischarupper(pmsg-> wparam)) { afxmessagebox("大写"); } } return cdialog::pretranslatemessage(pmsg); }
发表于:2008-01-10 15:47:032楼 得分:0
你的程序不是写着判断过程么
发表于:2008-01-10 15:55:233楼 得分:0
c# code
if(::getdlgctrlid(pmsg->hwnd)==idc_edit1 && pmsg->message==wm_char) { if(pmsg->wparam >= 'a' && pmsg->wparam <= 'z') { afxmessagebox("小写"); } else if(pmsg->wparam >= 'a' && pmsg->wparam <= 'z') { afxmessagebox("大写"); } } return cdialog::pretranslatemessage(pmsg);
发表于:2008-01-10 16:00:134楼 得分:0
谢谢搞定了!

现在看来如此简单,也让我如此的惭愧!

谢谢两位!
发表于:2008-01-11 14:56:385楼 得分:0
点解我好似看不了有什么区别啊..只是少了一个条件wm_keydown,真是看不明它们的区别..原来又错在那里?
发表于:2008-01-11 15:59:406楼 得分:0
看来关键就是wm_keydown与wm_char的区别
发表于:2008-01-14 08:35:387楼 得分:0
wm_keydown   中的wparam是非系统的virtual   key   code   只有大写字母。
wm_char   中的wparam是the   character   code   of   the   key(比如说asicc码).
wm_char   是由translatemessage   重新产生的,两者有本质的区别。
发表于:2008-01-14 08:41:358楼 得分:0
hehe
发表于:2008-01-14 08:52:179楼 得分:0
用wm_keydown也可以判断大小写


快速检索

最新资讯
热门点击