⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 monitorapplet.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/******************************************************************************                       wxWindows HTML Applet Package**               Copyright (C) 1991-2001 SciTech Software, Inc.*                            All rights reserved.**  ========================================================================**    The contents of this file are subject to the wxWindows License*    Version 3.0 (the "License"); you may not use this file except in*    compliance with the License. You may obtain a copy of the License at*    http://www.wxwindows.org/licence3.txt**    Software distributed under the License is distributed on an*    "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or*    implied. See the License for the specific language governing*    rights and limitations under the License.**  ========================================================================** Language:     ANSI C++* Environment:  Any** Description:  Main wxApplet class implementation*****************************************************************************/// For compilers that support precompilation#include "wx/wxprec.h"// Include private headers#include "wx/wx.h"#include "monitorapplet.h"/*---------------------------- Global variables ---------------------------*/// Implement the dynamic class so it can be constructed dynamicallyIMPLEMENT_DYNAMIC_CLASS(MonitorApplet, wxApplet)// Event handler table.BEGIN_EVENT_TABLE(MonitorApplet, wxApplet)    EVT_LISTBOX(ID_LISTBOX_MFTR,        MonitorApplet::OnChange)    EVT_LISTBOX(ID_LISTBOX_MDL,         MonitorApplet::OnChange)END_EVENT_TABLE()// Include database of known monitors. Normally this would come from a// real database on disk, but for this simple example we hard code all// the values into a table.#include "monitors.c"/*------------------------- Implementation --------------------------------*//****************************************************************************REMARKS:Constructor called during dynamic creation. Simple initialise allinternal values for the class so that it can be properly created latervia the virtual Create member function.****************************************************************************/MonitorApplet::MonitorApplet(){    m_Mfr = NULL;    m_Model = NULL;    m_Data = NULL;}/****************************************************************************REMARKS:Psuedo virtual constructor for the MonitorApplet class.****************************************************************************/bool MonitorApplet::Create(    wxHtmlAppletWindow *parent,    const wxSize& size,    long style){    bool ret = wxApplet::Create(parent, size, style);    if (ret) {        // Read our cookie or create it if it does not exist        if ((m_Data = (MonitorData*)parent->FindCookie(MONITOR_COOKIE_NAME)) == NULL) {            m_Data = new MonitorData;            memset(&m_Data->m_Monitor,0,sizeof(m_Data->m_Monitor));            parent->RegisterCookie(MONITOR_COOKIE_NAME,m_Data);            }        // Create all the controls and initialise them        MonitorDialogFunc(this,true,true);        if ((m_Mfr = new ComboBox(this , ID_LISTBOX_MFTR, ID_TEXTCTRL_MFTR)) == NULL)            return false;        if ((m_Model = new ComboBox(this , ID_LISTBOX_MDL, ID_TEXTCTRL_MDL)) == NULL)            return false;        ReadMfrList();        ReadModelList(true);        }    return ret;}/****************************************************************************REMARKS:Destructor for the MonitorApplet class.****************************************************************************/MonitorApplet::~MonitorApplet(){    delete m_Mfr;    delete m_Model;}/****************************************************************************REMARKS:Save the current state for the applet to our cookie****************************************************************************/void MonitorApplet::SaveCurrentState(){    // Read currently selected strings into cookie    strcpy(m_Data->m_Monitor.m_Mfr,m_Mfr->GetStringSelection());    strcpy(m_Data->m_Monitor.m_Model,m_Model->GetStringSelection());}/****************************************************************************REMARKS:Handles user navigation away from the applet via an HTML link****************************************************************************/void MonitorApplet::OnLinkClicked(    const wxHtmlLinkInfo&){    SaveCurrentState();}/****************************************************************************REMARKS:Handles user navigation away from the applet via the history forward command****************************************************************************/void MonitorApplet::OnHistoryForward(){    SaveCurrentState();}/****************************************************************************REMARKS:Handles user navigation away from the applet via the history back command****************************************************************************/void MonitorApplet::OnHistoryBack(){    SaveCurrentState();}/****************************************************************************REMARKS:Handles inter applet communication messages****************************************************************************/void MonitorApplet::OnMessage(    wxEvent& msg){    msg.Skip(true);}/****************************************************************************REMARKS:****************************************************************************/void MonitorApplet::OnChange(    wxCommandEvent &evt){    if (evt.GetId() == m_Mfr->GetListBoxId()) {        m_Mfr->OnChange(evt);        ReadModelList(true);        }    else if (evt.GetId() == m_Model->GetListBoxId()) {        m_Model->OnChange(evt);        }}/****************************************************************************REMARKS:Updates the manufacturer list for the dialog box from the database.****************************************************************************/void MonitorApplet::ReadMfrList(){    char            buf[80] = "";    int             i,selected = 0;    MonitorEntry    *m;    m_Mfr->Clear();    for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) {        if (wxStricmp(buf,m->m_Mfr) != 0) {            m_Mfr->Append(m->m_Mfr);            if (wxStricmp(m_Data->m_Monitor.m_Mfr,m->m_Mfr) == 0)                selected = i;            strcpy(buf,m->m_Mfr);            i++;            }        }    m_Mfr->Select(selected);}/****************************************************************************REMARKS:Updates the model list for the dialog box for the currently selectedmanufacturer type.****************************************************************************/void MonitorApplet::ReadModelList(    bool selectCurrent){    int             i,selected = 0;    MonitorEntry    *m;    wxString        mfrStr;    mfrStr = m_Mfr->GetStringSelection();    m_Model->Clear();    for (m = m_Monitors,i = 0; m->m_Mfr[0] != 0; m++) {        if (wxStricmp(mfrStr,m->m_Mfr) == 0) {            m_Model->Append(m->m_Model);            if (selectCurrent && wxStricmp(m_Data->m_Monitor.m_Model,m->m_Model) == 0)                selected = i;            i++;            }        }    m_Model->Select(selected);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -