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

📄 varblwin.cpp

📁 一OCR的相关资料。.希望对研究OCR的朋友有所帮助.
💻 CPP
字号:
/********************************************************************** * File:        varblwin.cpp  (Formerly varwin.c) * Description: Variables window subclass of COMMAND_WINDOW * Author:      Phil Cheatle * Created:     Thu Nov 14 15:40:26 GMT 1991 * * (C) Copyright 1991, Hewlett-Packard Ltd. ** Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. * **********************************************************************/#include "mfcpch.h"#include          <ctype.h>#include          "sbdmenu.h"#include          "submen.h"#include          "varblwin.h"#include          "notdll.h"const ERRCODE NOT_ASSOCIATED = "Cant find associated VARIABLES_WINDOW";ASSOCIATION_LISTVARIABLES_WINDOW::win_assocs;                                 // for initialisationELISTIZE (ASSOC)/********************************************************************** * * ASSOCIATION_LIST class member functions * **********************************************************************//********************************************************************** * ASSOCIATION_LIST::add() * * Add a new association **********************************************************************/void ASSOCIATION_LIST::add(                               //Window handle                           WINDOW new_fd,                           VARIABLES_WINDOW *new_var_win  //Associated var windw                          ) {  ASSOC_IT it(&associations);   it.add_to_end (new ASSOC (new_fd, new_var_win));}/********************************************************************** * ASSOCIATION_LIST::remove() * * Delete an association **********************************************************************/void ASSOCIATION_LIST::remove(           // delete assoc                              WINDOW fd  //Window handle                             ) {  ASSOC_IT it(&associations);   if (!it.empty ()) {    for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {      if (fd == it.data ()->fd) {        it.extract ();        return;      }    }  }  NOT_ASSOCIATED.error ("ASSOCIATION_LIST::remove", ABORT, NULL);}/********************************************************************** * ASSOCIATION_LIST::lookup() * * Find an association **********************************************************************/VARIABLES_WINDOW *ASSOCIATION_LIST::lookup(           //find assoc                                           WINDOW fd  //Window handle                                          ) {  ASSOC_IT it(&associations);   if (!it.empty ()) {    for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {      if (fd == it.data ()->fd)        return it.data ()->var_win;    }  }  NOT_ASSOCIATED.error ("ASSOCIATION_LIST::lookup", ABORT, NULL);  return NULL;}/********************************************************************** * ASSOCIATION_LIST::plot_all() * * Re plot all windows ( to reflect changes to bool vars ) **********************************************************************/void ASSOCIATION_LIST::plot_all() {  //plot all wins  ASSOC_IT it(&associations);   if (!it.empty ()) {    for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {      it.data ()->var_win->plot ();    }  }}/********************************************************************** * ASSOCIATION_LIST::turn_off_interrupts() * * Disable interrupts for all windows of this class **********************************************************************/void ASSOCIATION_LIST::turn_off_interrupts() {   ASSOC_IT it(&associations);   for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())                                 //disable interrupts    set_click_handler (it.data ()->fd, NULL);}/********************************************************************** * ASSOCIATION_LIST::turn_on_interrupts() * * Re-enable interrupts for all windows of this class **********************************************************************/void ASSOCIATION_LIST::turn_on_interrupts(  //handler                                          EVENT_HANDLER interrupt_proc) {  ASSOC_IT it(&associations);   for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ())    set_click_handler (it.data ()->fd, interrupt_proc);}/********************************************************************** * * VARIABLES_WINDOW class member functions * **********************************************************************//********************************************************************** * VARIABLES_WINDOW::event() * * Do non standard event handling for specified commands **********************************************************************/void VARIABLES_WINDOW::v_event(  //Process event                               GRAPHICS_EVENT &g_event) {  INT32 cmd_event;               //Command event type  char new_value[80];            //of menu item  char buff[80];  COMMAND_WINDOW::event(g_event, &cmd_event, new_value);   switch (cmd_event) {    case NULL_COMMAND:      break;    case WRITE_ALL_CMD:      write_vars(new_value, FALSE);       break;    case WRITE_CHANGED_CMD:      write_vars(new_value, TRUE);       break;    case KILL_WINDOW_CMD:      win_assocs.remove (g_event.fd);      destroy_window (g_event.fd);      my_creator->child_closed ();      delete this;      break;    default:      sprintf (buff, "UNPROCESSED EVENT code " INT32FORMAT, cmd_event);      msg(buff);   }}/********************************************************************** * VARIABLES_WINDOW::internal_prompt() * * Disable interrupts during prompting * **********************************************************************/BOOL8 VARIABLES_WINDOW::internal_prompt(                      //Prompt user                                        const char *msg_str,  //Prompt message                                        char *response_str    //Response & Default                                       ) {  BOOL8 result;  win_assocs.turn_off_interrupts ();  result = COMMAND_WINDOW::internal_prompt (msg_str, response_str);  win_assocs.turn_on_interrupts (VARIABLES_WINDOW::interrupt_handler);  set_click_handler(fd, VARIABLES_WINDOW::interrupt_handler);   return result;}/********************************************************************** * VARIABLES_WINDOW::interrupt_handler() * * Forward the event to the VARIABLES_WINDOW responsible for handling events * for the window where the event occured. **********************************************************************/void VARIABLES_WINDOW::interrupt_handler(                         //for any windw                                         GRAPHICS_EVENT *g_event  //event recieved                                        ) {  (win_assocs.lookup (g_event->fd))->v_event (*g_event);  //forward to  overlap_picture_ops(TRUE); }/********************************************************************** * VARIABLES_WINDOW::VARIABLES_WINDOW() * * Constructor for a variables window **********************************************************************/VARIABLES_WINDOW::VARIABLES_WINDOW (                                 //constructorconst char *name,                //window nameMENU_ROOT * menu_root,           //menuVAR_SUB_MENU * creator           //who created me?):COMMAND_WINDOW(name, menu_root) {   win_assocs.add (fd, this);  my_creator = creator;  set_click_handler(fd, VARIABLES_WINDOW::interrupt_handler); }/********************************************************************** * VARIABLES_WINDOW::write_vars() * * Write the variables to a config file **********************************************************************/void VARIABLES_WINDOW::write_vars(                    //Build config file                                  char *filename,     // in this file                                  BOOL8 changes_only  // Changed vars only?                                 ) {  FILE *fp;                      //input file  char msg_str[MAX_CHARS + 1];  char response_str[MAX_CHARS + 1];  char *token;                   //first response token                                 //if file exists  if ((fp = fopen (filename, "r")) != NULL) {    fclose(fp);     sprintf (msg_str, "Overwrite file " "%s" "? (Y/N)", filename);    response_str[0] = '\0';    if (!prompt (msg_str, response_str))      return;    token = strtok (response_str, " ");    if (tolower (token[0]) != 'y')      return;                    // dont write  }  fp = fopen (filename, "w");    //can we write to it?  if (fp == NULL) {    sprintf (msg_str, "Cant write to file " "%s" "", filename);    msg(msg_str);     return;  }  menu_root->write_vars (fp, changes_only);  fclose(fp); }

⌨️ 快捷键说明

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