读书人

老革命遇到新有关问题了!CB2010,OnKe

发布时间: 2012-02-08 19:52:21 作者: rapoo

老革命遇到新问题了!CB2010,OnKeyPress不灵了!
void __fastcall TForm1::MyEditKeyPress(TObject *Sender, char &Key)
{
ShowMessage("OK");
}

//---------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TEdit *myedit= new TEdit(Form1);
myedit->OnKeyPress = MyEditKeyPress; // <----这里编译出错
myedit->Parent = Form1;
}


CB6下用得很好的代码,到CB2010就不行了,编译出错,
说什么 “不能将XX转换为TKeyPressEvent",

咋解决?

[解决办法]
void __fastcall TForm1::MyEditKeyPress(TObject *Sender, char &Key)
{
ShowMessage("OK");
}

我也遇到过,这是小阴沟里翻船,闷死苦想,蓦然回首,居然又是Unicode,是参数char &Key引起的,人家换成 wchar_t &Key了
[解决办法]
学习了,嘿嘿.看来又要IF DEFINE了.
[解决办法]

探讨
void __fastcall TForm1::MyEditKeyPress(TObject *Sender, char &Key)
{
ShowMessage("OK");
}

//---------------------------------------
__fastcall TForm1::TF……

[解决办法]
2009/2010的VCL支持Unicode,所以OnKeyPress的第二个参数就变成wchar_t了。
[解决办法]
感觉字符(串)的各种类型多了用起来相当麻烦。。。
[解决办法]
所以,针对这部分代码来讲,如果旧代码中是用TCHAR来代替char,在2009/2010中,只需将工程选项中的_TCHAR映射为wchar_t,就可以正常编译通过了。
[解决办法]
呵呵,又是Unicode的问题啊
[解决办法]
来学习
[解决办法]
学习啦,看来2010与2007差好多啊
[解决办法]
探讨
所以,针对这部分代码来讲,如果旧代码中是用TCHAR来代替char,在2009/2010中,只需将工程选项中的_TCHAR映射为wchar_t,就可以正常编译通过了。

读书人网 >C++ Builder

热点推荐