我想在我的應用程序中使用「Enter」和「Shift」鍵。爲了做到這一點,我發現了一些代碼here。ID_BUTTON未用常量表達式初始化
void wxWidgetsDialog::OnKey(wxKeyEvent &event)
{
wxWindow *win = FindFocus();
if(win == NULL){
event.Skip();
return;
}
if(event.GetKeyCode()==WXK_RETURN){
switch(win->GetId()){
case ID_BUTTON1:
wxMessageBox("Button1");
break;
case ID_BUTTON2:
wxMessageBox("Button2");
break;
case ID_BUTTON3:
wxMessageBox("Button3");
Destroy();
break;
}
event.Skip();
}
}
當我嘗試使用這個片段中,我得到的錯誤:
D:\WindowsDgps\WindowsDgpsGUI\PortsDialog.cpp|171|error: the value of 'PortsDialog::ID_BUTTON1' is not usable in a constant expression|
和
D:\WindowsDgps\WindowsDgpsGUI\PortsDialog.cpp|35|note: 'PortsDialog::ID_BUTTON1' was not initialized with a constant expression|
我做了什麼錯?我該如何聲明這些ID才能使其工作?我使用wxWidgets生成的標準實現。
const long PortsDialog::ID_STATICTEXT1 = wxNewId();
const long PortsDialog::ID_TEXTCTRL1 = wxNewId();
const long PortsDialog::ID_BUTTON1 = wxNewId();
const long PortsDialog::ID_TEXTCTRL2 = wxNewId();
const long PortsDialog::ID_BUTTON2 = wxNewId();
const long PortsDialog::ID_BUTTON3 = wxNewId();
const long PortsDialog::ID_PANEL1 = wxNewId();
有什麼我可以做,這樣我可以使用Enter鍵激活按鈕,而我在一個靜態文本字段?