我的对话框出来后,一按回车就关掉了,如何让它不要这样?
我的对话框出来后,一按回车就关掉了,如何让它不要这样?
推荐阅读
bool cxxxdlg::pretranslatemessage(msg* pmsg)
{
if(pmsg -> message == wm_keydown)
{
if(pmsg -> wparam == vk_return)
return true;
}
return cdialog::pretranslatemessage(pmsg);
}
涓轰簡浣縀nter閿棤鏁堬紝鏈绠鍗曠殑鍔炴硶灏辨槸灏咰exdlg鐨凮nok鍑芥暟鍐欐垚绌哄嚱鏁帮紝鐒跺悗閽堝ok鎸夐挳鍐欎竴涓柊鐨勫嚱鏁版潵鍝嶅簲銆備笅闈㈡槸鍏蜂綋姝ラ锛?
棣栧厛寤虹珛涓涓互ex涓哄悕鐨勫熀浜庡璇濇鐨勭▼搴忋?
1.鐢–lasswizard鏄犲皠idok鎸夐挳鍒癘nok铏氬嚱鏁般?
鍦–lasswizard涓紝浠嶤exdlg鐨凮bject ids鍒楄〃涓夋嫨idok锛岀劧鍚庡崟鍑籅n_clicked锛岃繖鏍峰嵆浜х敓浜哋nok鍑芥暟鐨勫師褰㈠拰妗嗘灦銆?
2.鍒╃敤瀵硅瘽妗嗙紪杈戝櫒鏀瑰彉ok鎸夐挳鐨処d銆?
閫夋嫨ok鎸夐挳锛屽皢瀹冪殑id鐢盜dok鏀逛负idc_ok锛屽苟鍘绘帀default button灞炴х殑澶嶉夋爣璁般傝繖鏍稯nok鍑芥暟鍗宠鍒嗙鍑烘潵銆?
3.鐢–lasswizard鍒涘缓涓涓狾nclickedok鎴愬憳鍑芥暟銆?
鍦–lasswizard涓紝浠嶤exdlg鐨凮bject ids鍒楄〃涓夋嫨idc_ok锛岀劧鍚庡崟鍑籅n_clicked锛屽嚱鏁板悕鐢∣nclickedok锛屼骇鐢熶簡onclickedok鍑芥暟鐨勫師褰㈠拰妗嗘灦銆?
4.缂栬緫浠g爜銆?
void cexdlg::onok()
{
// todo: add extra validation here
// cdialog::onok();
}
void cexdlg::onclickedok()
{
// todo: add your control notification handler code here
cdialog::onok();
}
重载pretranslatemessage
重载pretranslatemessage,
判断wparam,如果是回车键,则执行相应的函数
void onok()
{
// todo: add extra validation here
// cdialog::onok();
}
就是把onok涵数里代码都去掉就行拉
例如:
有一个俩个button
一个是“发送”,一个是“退出”
在发送上 属性/styles\默认按钮 选中!
按enter它就不退出了!
不知道是不是!
重新选择默认按钮,
或者默认按钮的id不要用idok或idcancel,
再或者
如果默认按钮是idok,加入响应onok()函数,并且在该函数里不调用cdialog::onok()
如果默认按钮是idcancel,加入响应oncanel()函数,并且在该函数里不调用cdialog::oncanel()
bool cmydlg::pretranslatemessage(msg* pmsg)
{
if(pmsg -> message == wm_keydown)
{
if(pmsg->wparam == vk_return)
return true;
}
return cdialog::pretranslatemessage(pmsg);
}
还有那几个默认的按钮, 讨厌死了.
我见过的一种方法。
bool cmydlg::pretranslatemessage(msg* pmsg)
{
// todo: add your specialized code here and/or call the base class
// 屏蔽回车键
char keyname[50];
zeromemory(keyname,50);
if(pmsg->message == wm_keydown)
{
getkeynametext(pmsg->lparam,keyname,50);
cstring str=keyname;
if(str=="enter" || str=="num enter")
{
return false;
// or call function you want do.
}
}
return cdialog::pretranslatemessage(pmsg);
}


讨论区