From b12d6131d391992dcb8a32b3bf81724b6bb29dd4 Mon Sep 17 00:00:00 2001 From: guy Date: Mon, 15 Feb 2010 12:14:44 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : xvaga.dll Ricompilazione Demo : [ ] Commento : Migliorata gestione cambi booleani nei property sheet git-svn-id: svn://10.65.10.50/trunk@20120 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- xvaga/xvaga.cpp | 139 +++++++++++++++++++++++++++++++++-------------- xvaga/xvt.h | 7 ++- xvaga/xvtctl.cpp | 108 ++++++++++++++++++++++++++++-------- xvaga/xvtdm.cpp | 8 +-- 4 files changed, 193 insertions(+), 69 deletions(-) diff --git a/xvaga/xvaga.cpp b/xvaga/xvaga.cpp index e69699eda..87cc85cd9 100755 --- a/xvaga/xvaga.cpp +++ b/xvaga/xvaga.cpp @@ -104,7 +104,7 @@ XVTDLL void xvt_app_pre_create(void) #endif } -void xvt_app_create(int argc, char** argv, unsigned long WXUNUSED(flags), +void xvt_app_create(int WXUNUSED(argc), char** WXUNUSED(argv), unsigned long WXUNUSED(flags), EVENT_HANDLER eh, XVT_CONFIG* config) { _task_win_handler = eh; @@ -932,8 +932,12 @@ void xvt_dwin_draw_oval(WINDOW win, const RCT* rctp) dc.DrawEllipse(rct); } -void xvt_dwin_draw_pie(WINDOW win, const RCT *rctp, int start_x, int start_y, int stop_x, int stop_y) -{ SORRY_BOX(); } +void xvt_dwin_draw_pie(WINDOW win, const RCT *rctp, + int WXUNUSED(start_x), int WXUNUSED(start_y), int WXUNUSED(stop_x), int WXUNUSED(stop_y)) +{ + SORRY_BOX(); + xvt_dwin_draw_oval(win, rctp); +} void xvt_dwin_draw_polygon(WINDOW win, const PNT *lpnts, int npnts) { @@ -1872,7 +1876,7 @@ XVT_IMAGE xvt_image_capture(WINDOW win, const RCT* src) return (XVT_IMAGE)i; } -XVT_IMAGE xvt_image_create(XVT_IMAGE_FORMAT format, short width, short height, COLOR color) +XVT_IMAGE xvt_image_create(XVT_IMAGE_FORMAT WXUNUSED(format), short width, short height, COLOR color) { TXVT_IMAGE* i = new TXVT_IMAGE; i->Image().Create(width, height); @@ -2082,7 +2086,7 @@ void xvt_image_replace_color(XVT_IMAGE image, COLOR old_color, COLOR new_color) } -void xvt_image_set_ncolors(XVT_IMAGE image, short ncolors) +void xvt_image_set_ncolors(XVT_IMAGE WXUNUSED(image), short WXUNUSED(ncolors)) { // SORRY_BOX(); } @@ -2290,8 +2294,10 @@ void xvt_menu_translate_tree(WINDOW win, TRANSLATE_CALLBACK tc) } } -void xvt_menu_set_font_sel(WINDOW win, XVT_FNTID font_id) -{ /* Ignored */ } +void xvt_menu_set_font_sel(WINDOW win, XVT_FNTID WXUNUSED(font_id)) +{ + XVT_ASSERT(win == TASK_WIN); +} static wxMenuItem* GetXvtMenuItem(WINDOW win, MENU_TAG tag) { @@ -2352,14 +2358,14 @@ void xvt_menu_update(WINDOW /*win*/) // Palette management /////////////////////////////////////////////////////////// -short xvt_palet_add_colors(XVT_PALETTE palet, COLOR *colorsp, short numcolors) { return 0; } -short xvt_palet_add_colors_from_image(XVT_PALETTE palet, XVT_IMAGE image) { return 0; } -XVT_PALETTE xvt_palet_create(XVT_PALETTE_TYPE type, XVT_PALETTE_ATTR reserved) { return NULL; } -void xvt_palet_destroy(XVT_PALETTE palet) { SORRY_BOX(); } -short xvt_palet_get_colors(XVT_PALETTE palet, COLOR *colorsp, short maxcolors) { return 0; } -short xvt_palet_get_ncolors(XVT_PALETTE palet) { return 0; } -int xvt_palet_get_tolerance(XVT_PALETTE p) { return 0; } -void xvt_palet_set_tolerance(XVT_PALETTE p, int t) { SORRY_BOX(); } +short xvt_palet_add_colors(XVT_PALETTE WXUNUSED(palet), COLOR* WXUNUSED(colorsp), short numcolors) { return numcolors; } +short xvt_palet_add_colors_from_image(XVT_PALETTE WXUNUSED(palet), XVT_IMAGE image) { return xvt_image_get_ncolors(image); } +XVT_PALETTE xvt_palet_create(XVT_PALETTE_TYPE WXUNUSED(type), XVT_PALETTE_ATTR WXUNUSED(reserved)) { return NULL; } +void xvt_palet_destroy(XVT_PALETTE WXUNUSED(palet)) { SORRY_BOX(); } +short xvt_palet_get_colors(XVT_PALETTE WXUNUSED(palet), COLOR* WXUNUSED(colorsp), short WXUNUSED(maxcolors)) { return 0; } +short xvt_palet_get_ncolors(XVT_PALETTE WXUNUSED(palet)) { return 0; } +int xvt_palet_get_tolerance(XVT_PALETTE WXUNUSED(p)) { return 0; } +void xvt_palet_set_tolerance(XVT_PALETTE WXUNUSED(p), int WXUNUSED(t)) { SORRY_BOX(); } /////////////////////////////////////////////////////////// // Rectangles @@ -3023,6 +3029,41 @@ char* xvt_str_number_format(char* str, int size) return str; } +static const char* const ENCRYPTION_KEY = "QSECOFR-"; + +int xvt_str_encode(const char* text, char* cipher, int mode) +{ + int i = 0; + switch (mode) + { + case 1: // BASE64 + break; + default: // AGA + for (i = 0; text[i]; i++) + cipher[i] = text[i] + (i < 8 ? ENCRYPTION_KEY[i] : text[i - 8]); + cipher[i] = '\0'; + break; + } + return i; +} + +int xvt_str_decode(const char* cipher, char* text, int mode) +{ + int i = 0; + switch (mode) + { + case 1: // BASE64 + break; + default: // AGA + for (i = 0; cipher[i]; i++) + text[i] = cipher[i] - (i < 8 ? ENCRYPTION_KEY[i] : text[i - 8]); + text[i] = '\0'; + break; + } + return i; +} + + BOOLEAN xvt_str_match(const char* mbs, const char *pat, BOOLEAN case_sensitive) { /* @@ -3191,13 +3232,16 @@ long xvt_sys_execute(const char* cmdline, BOOLEAN sync, BOOLEAN iconizetask) wxEnableTopLevelWindows(FALSE); TIconizeTaskThread* it = new TIconizeTaskThread(); // No need to delete + if (it != NULL) + { __bChildRunning = true; - exitcode = wxExecute(cmd, wxEXEC_SYNC); - __bChildRunning = false; - - if (_task_win->IsIconized()) - _task_win->Restore(); - wxEnableTopLevelWindows(TRUE); + exitcode = wxExecute(cmd, wxEXEC_SYNC); + __bChildRunning = false; + + if (_task_win->IsIconized()) + _task_win->Restore(); + wxEnableTopLevelWindows(TRUE); + } } else exitcode = wxExecute(cmd, wxEXEC_SYNC); // Valutare wxEXEC_NODISABLE @@ -3281,29 +3325,19 @@ BOOLEAN xvt_sys_dongle_server_is_running() return sic.IsAnotherRunning(); } -int xvt_sys_get_oem_string(const char* name, const char* defval, char* value, int maxsize) -{ - wxString strFileName = _startup_dir + "/setup/oem.ini"; - const int oem = xvt_sys_get_profile_int(strFileName, "MAIN", "OEM", -1); - if (oem >= 0) - { - wxString strPara; strPara << "OEM_" << oem; - return xvt_sys_get_profile_string(strFileName, strPara, name, defval, value, maxsize); - } - return 0; -} +#define OEM_INI wxString(_startup_dir+wxT("/setup/oem.ini")) long xvt_sys_get_oem_int(const char* name, long defval) { static long _oem = -1; if (_oem < 0) - _oem = xvt_sys_get_profile_int(_startup_dir+"/setup/oem.ini", "MAIN", "OEM", -1); + _oem = xvt_sys_get_profile_int(OEM_INI, "MAIN", "OEM", -1); if (_oem >= 0) { - if (wxStricmp(name, "OEM") != 0) + if (wxStricmp(name, wxT("OEM")) != 0) { - wxString strPara; strPara << "OEM_" << _oem; - defval = xvt_sys_get_profile_int(_startup_dir+"/setup/oem.ini", strPara, name, defval); + wxString strPara; strPara.Printf(wxT("OEM_%d"), _oem); + defval = xvt_sys_get_profile_int(OEM_INI, strPara, name, defval); } else defval = _oem; @@ -3311,6 +3345,26 @@ long xvt_sys_get_oem_int(const char* name, long defval) return defval; } +int xvt_sys_get_oem_string(const char* name, const char* defval, char* value, int maxsize) +{ + const int oem = xvt_sys_get_oem_int("OEM", -1); + if (oem >= 0) + { + if (wxStricmp(name, wxT("OEM")) != 0) + { + wxString strPara; strPara.Printf(wxT("OEM_%d"), oem); + return xvt_sys_get_profile_string(OEM_INI, strPara, name, defval, value, maxsize); + } + else + { + wxString str; str.Printf("%d", oem); + wxStrncpy(value, str, maxsize); + return 1; + } + } + return 0; +} + int xvt_sys_get_profile_string(const char* file, const char* paragraph, const char* name, const char* defval, char* value, int maxsize) { @@ -3999,7 +4053,7 @@ void xvt_vobj_set_enabled(WINDOW win, BOOLEAN enabled) w.Enable(enabled != 0); } -void xvt_vobj_set_palet(WINDOW win, XVT_PALETTE palet) +void xvt_vobj_set_palet(WINDOW WXUNUSED(win), XVT_PALETTE WXUNUSED(palet)) { // Do not implement! } @@ -4037,7 +4091,8 @@ void xvt_vobj_translate_points(WINDOW from_win, WINDOW to_win, PNT *pntp, int np // Real windows /////////////////////////////////////////////////////////// -WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int menu_rid, WINDOW parent, long win_flags, EVENT_MASK mask, EVENT_HANDLER eh, long app_data) +WINDOW xvt_win_create(WIN_TYPE wtype, const RCT* rct_p, const char* title, int menu_rid, WINDOW parent, long win_flags, + EVENT_MASK WXUNUSED(mask), EVENT_HANDLER eh, long app_data) { const wxRect rct = RCT2Rect(rct_p); const wxString caption = title; @@ -4288,16 +4343,16 @@ XVT_FNTID statbar_get_fontid(WINDOW win, XVT_FNTID font_id) return font_id; } -WINDOW statbar_create(int cid, int left, int top, int right, int bottom, - int prop_count, char **prop_list, WINDOW parent_win, - int parent_rid, long parent_flags, char *parent_class) +WINDOW statbar_create(int cid, int WXUNUSED(left), int WXUNUSED(top), int WXUNUSED(right), int WXUNUSED(bottom), + int WXUNUSED(prop_count), char** WXUNUSED(prop_list), WINDOW parent_win, + int WXUNUSED(parent_rid), long WXUNUSED(parent_flags), char* WXUNUSED(parent_class)) { wxStatusBar* pStatusBar = NULL; wxFrame* w = wxDynamicCast(SafeCastWin(parent_win), wxFrame); if (w != NULL) { const int nStyle = 0; // not wxST_SIZEGRIP - pStatusBar = w->CreateStatusBar(3, nStyle); + pStatusBar = w->CreateStatusBar(3, nStyle, cid); if (pStatusBar != NULL) { const int widths[4] = { -4, -2, -2, 0 }; diff --git a/xvaga/xvt.h b/xvaga/xvt.h index 9c6f278ad..f8d8388bd 100755 --- a/xvaga/xvt.h +++ b/xvaga/xvt.h @@ -342,6 +342,8 @@ XVTDLL SLIST_ELT xvt_slist_get_first(SLIST list); XVTDLL SLIST_ELT xvt_slist_get_next(SLIST list, SLIST_ELT item); XVTDLL int xvt_str_compare_ignoring_case (const char* s1, const char* s2); +XVTDLL int xvt_str_encode(const char* text, char* cypher, int mode); +XVTDLL int xvt_str_decode(const char* cypher, char* text, int mode); XVTDLL char* xvt_str_duplicate(const char* str); XVTDLL BOOLEAN xvt_str_match(const char* str, const char* pat, BOOLEAN case_sensitive); XVTDLL double xvt_str_fuzzy_compare (const char* s1, const char* s2); @@ -483,9 +485,12 @@ typedef BOOLEAN PROP_CALLBACK(WINDOW win, XVT_TREEVIEW_NODE node, void* app_data XVTDLL XVT_TREEVIEW_NODE xvt_prop_add(WINDOW win, const char* type, const char* name, const char* value, const char* label); XVTDLL XVT_TREEVIEW_NODE xvt_prop_current(WINDOW win); XVTDLL XVT_TREEVIEW_NODE xvt_prop_find(WINDOW win, const char* name); +XVTDLL void xvt_prop_fit_columns(WINDOW win); XVTDLL BOOLEAN xvt_prop_for_each(WINDOW win, PROP_CALLBACK pcb, void* jolly); -XVTDLL int xvt_prop_get_string(WINDOW win, XVT_TREEVIEW_NODE node, char* label, int maxlen); XVTDLL int xvt_prop_get_data(WINDOW win, XVT_TREEVIEW_NODE node, char* value, int maxlen); +XVTDLL int xvt_prop_get_string(WINDOW win, XVT_TREEVIEW_NODE node, char* label, int maxlen); +XVTDLL int xvt_prop_get_type(WINDOW win, XVT_TREEVIEW_NODE node, char* type, int maxlen); +XVTDLL BOOLEAN xvt_prop_remove(WINDOW win, XVT_TREEVIEW_NODE node); XVTDLL BOOLEAN xvt_prop_restart(WINDOW win); XVTDLL BOOLEAN xvt_prop_set_data(WINDOW win, XVT_TREEVIEW_NODE node, const char* value); XVTDLL BOOLEAN xvt_prop_set_read_only(WINDOW win, XVT_TREEVIEW_NODE node, BOOLEAN ro); diff --git a/xvaga/xvtctl.cpp b/xvaga/xvtctl.cpp index 792632694..a93bdd76f 100755 --- a/xvaga/xvtctl.cpp +++ b/xvaga/xvtctl.cpp @@ -944,8 +944,7 @@ void TwxTreeCtrl::OnExpanding(wxTreeEvent& evt) if (!m_nFrozen) { const wxTreeItemId id = evt.GetItem(); - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = WC_TREE; e.v.ctl.ci.win = WINDOW(this); @@ -965,8 +964,7 @@ void TwxTreeCtrl::OnCollapsed(wxTreeEvent& evt) if (!m_nFrozen) { Suspend(); - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = WC_TREE; e.v.ctl.ci.win = WINDOW(this); @@ -983,8 +981,7 @@ void TwxTreeCtrl::OnClick(wxTreeEvent& evt, bool bDouble) if (!m_nFrozen) { Suspend(); - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = WC_TREE; e.v.ctl.ci.win = WINDOW(this); @@ -1038,8 +1035,7 @@ void TwxTreeCtrl::OnRightDown(wxMouseEvent& evt) TwxWindow* pParent = wxDynamicCast(GetParent(), TwxWindow); if (pParent != NULL) { - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_MOUSE_DOWN; + XVT_EVENT e(E_MOUSE_DOWN); e.v.mouse.button = 1; e.v.mouse.control = evt.ControlDown(); e.v.mouse.shift = evt.ShiftDown(); @@ -1524,8 +1520,27 @@ void TwxOutlookBar::OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const color = wxSystemSettings::GetColour(wxSYS_COLOUR_CAPTIONTEXT); dc.SetTextForeground(color); - const wxSize szText = dc.GetTextExtent(oi.m_strText); - dc.DrawText(oi.m_strText, rect.x+nTextOffset, rect.y+(nSide-szText.y)/2); + const wxString& str = oi.m_strText; + const int nMaxX = rect.width - nTextOffset; + const wxSize szText = dc.GetTextExtent(str); + if (szText.x > nMaxX && szText.y*2 < nSide) + { + const int nMid = str.Len() / 2; + int nBest = nMid, nDist = nMid; + for (int i = 0; i < 2*nMid; i++) if (str[i] <= wxChar(' ')) + { + const int d = abs(nMid-i); + if (d < nDist) + { + nBest = i; + nDist = d; + } + } + dc.DrawText(str.Left(nBest+1), rect.x+nTextOffset, rect.y+nSide/2-szText.y); + dc.DrawText(str.Mid(nBest+1), rect.x+nTextOffset, rect.y+nSide/2); + } + else + dc.DrawText(oi.m_strText, rect.x+nTextOffset, rect.y+(nSide-szText.y)/2); } wxCoord TwxOutlookBar::OnMeasureItem(size_t WXUNUSED(n)) const @@ -1568,8 +1583,7 @@ void TwxOutlookBar::OnSelected(wxCommandEvent& evt) TwxWindow* win = wxDynamicCast(GetParent(), TwxWindow); if (win != NULL) { - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = WC_OUTLOOKBAR; e.v.ctl.ci.win = WINDOW(this); @@ -1778,8 +1792,7 @@ void TwxPopUp::NotifySelection() TwxWindow* win = wxDynamicCast(GetParent(), TwxWindow); if (win != NULL) { - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = GetId(); e.v.ctl.ci.type = WC_LISTEDIT; e.v.ctl.ci.win = WINDOW(this); @@ -1972,8 +1985,7 @@ END_EVENT_TABLE(); void TwxToolBar::OnTool(wxCommandEvent& evt) { - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.type = WC_ICON; // WC_PUSHBUTTON entra in conflitto coi bottoni e.v.ctl.ci.win = WINDOW(this); @@ -2237,8 +2249,7 @@ void TwxPropertyGrid::OnPropertyChanged(wxPropertyGridEvent& evt) TwxWindow* win = wxDynamicCast(GetParent(), TwxWindow); if (win != NULL && !IsFrozen()) { - EVENT e; memset(&e, 0, sizeof(EVENT)); - e.type = E_CONTROL; + XVT_EVENT e(E_CONTROL); e.v.ctl.id = evt.GetId(); e.v.ctl.ci.v.treeview.sgl_click = TRUE; e.v.ctl.ci.v.treeview.node = evt.GetProperty(); @@ -2319,7 +2330,9 @@ BOOLEAN xvt_prop_set_data(WINDOW win, XVT_TREEVIEW_NODE node, const char* value) else { if (strType == "long" || strType == "int") - pgp->SetValue(atol(value)); + pgp->SetValue(atol(value)); else + if (strType == "bool") + pgp->SetValue(*value > '0' && strchr("1TXY", *value) != NULL); else pgp->SetValue(value); } @@ -2342,10 +2355,20 @@ XVT_TREEVIEW_NODE xvt_prop_add(WINDOW win, const char* type, const char* name, c { switch (toupper(*type)) { - case 'C': pgp = new wxColourProperty(strLabel, name, STR2COLOUR(value)); break; + case 'B': + pgp = new wxBoolProperty(strLabel, name, *value > '0' && strchr("1TXY", *value) != NULL); + pgp->SetAttribute(wxString("UseCheckbox"), true); + break; + case 'C': + pgp = new wxColourProperty(strLabel, name, STR2COLOUR(value)); + break; case 'I': - case 'L': pgp = new wxIntProperty(strLabel, name, atol(value)); break; - default : pgp = new wxStringProperty(strLabel, name, value); break; + case 'L': + pgp = new wxIntProperty(strLabel, name, atol(value)); + break; + default : + pgp = new wxStringProperty(strLabel, name, value); + break; } } else @@ -2377,6 +2400,28 @@ XVT_TREEVIEW_NODE xvt_prop_find(WINDOW win, const char* name) return node; } +void xvt_prop_fit_columns(WINDOW win) +{ + wxPropertyGrid* pg = wxDynamicCast((wxObject*)win, wxPropertyGrid); + if (pg != NULL) + pg->FitColumns(); +} + +BOOLEAN xvt_prop_remove(WINDOW win, XVT_TREEVIEW_NODE node) +{ + wxPropertyGrid* pg = wxDynamicCast((wxObject*)win, wxPropertyGrid); + if (pg != NULL) + { + wxPGProperty* pgp = wxDynamicCast((wxObject*)node, wxPGProperty); + if (pgp != NULL) + { + pg->DeleteProperty(pgp->GetId()); + return TRUE; + } + } + return FALSE; +} + int xvt_prop_get_string(WINDOW win, XVT_TREEVIEW_NODE node, char* label, int maxlen) { int len = -1; @@ -2398,6 +2443,25 @@ int xvt_prop_get_string(WINDOW win, XVT_TREEVIEW_NODE node, char* label, int max return len; } +int xvt_prop_get_type(WINDOW win, XVT_TREEVIEW_NODE node, char* type, int maxlen) +{ + int len = 0; + wxPropertyGrid* pg = wxDynamicCast((wxObject*)win, wxPropertyGrid); + if (pg != NULL) + { + const wxPGProperty* pgp = wxDynamicCast((wxObject*)node, wxPGProperty); + if (pgp != NULL) + { + wxString strType = pgp->GetType(); + if (strType == "wxColour") + strType = "color"; + wxStrncpy(type, strType, maxlen); + len = strType.Len(); + } + } + return len; +} + int xvt_prop_get_data(WINDOW win, XVT_TREEVIEW_NODE node, char* value, int maxlen) { int len = -1; diff --git a/xvaga/xvtdm.cpp b/xvaga/xvtdm.cpp index 28a39cb78..f56523efe 100755 --- a/xvaga/xvtdm.cpp +++ b/xvaga/xvtdm.cpp @@ -352,7 +352,7 @@ void xvt_dm_speech_enable(int mode) { #ifdef SPEECH_API m_nSpeechMode = mode; -#ifdef WIN32 +#ifdef __WXMSW__ if (m_nSpeechMode != 0) { if (!OsWin32_InitializeSpeech()) @@ -513,7 +513,7 @@ BOOLEAN xvt_dm_post_speech(const char* text, int priority, BOOLEAN async) #ifdef SPEECH_API if ((m_nSpeechMode & (1 << priority)) != 0) { -#ifdef WIN32 +#ifdef __WXMSW__ ok = OsWin32_Speak(text, async != 0); #endif } @@ -521,7 +521,7 @@ BOOLEAN xvt_dm_post_speech(const char* text, int priority, BOOLEAN async) return ok; } -ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char* Btn2, const char* Btn3, const char* fmt) +ASK_RESPONSE xvt_dm_post_ask(const char* Btn1, const char* WXUNUSED(Btn2), const char* Btn3, const char* fmt) { int nFlags = wxICON_QUESTION | wxYES_NO; if (Btn3 == NULL) @@ -707,7 +707,7 @@ void xvt_help_close_helpfile(XVT_HELP_INFO hi) hi = (XVT_HELP_INFO)&help_info; } -BOOLEAN xvt_help_process_event(XVT_HELP_INFO hi, WINDOW win, EVENT *ev) +BOOLEAN xvt_help_process_event(XVT_HELP_INFO WXUNUSED(hi), WINDOW win, EVENT *ev) { BOOLEAN bProcessed = FALSE;