home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / PUMSG.C < prev    next >
C/C++ Source or Header  |  1990-12-14  |  2KB  |  98 lines

  1. /*
  2.     pumsg.c         1/27/87
  3.  
  4.     % pop_Message
  5.  
  6.     popup message routine.
  7.  
  8.     C-scape 3.2
  9.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      3/22/88 jmd    Added cursor type restoration.
  15.      7/22/88 jmd    Removed cursor type restoration.
  16.                     Made it work with windows.
  17.      8/23/88 jmd    Fixed wrap width.
  18.      9/16/88 jmd    updated for 3.0
  19.     11/05/88 jmd    removed menu_Close
  20.  
  21.      4/22/89 jmd    changed border to bord
  22.  
  23.      3/28/90 jmd    ansi-fied
  24.      8/27/90 jmd    added use of popparms_struct
  25.     10/12/90 jdc    moved placement of SetWrapWidth
  26.     12/14/90 jdc    polished auto-sizing
  27. */
  28.  
  29. #include <stdio.h>
  30.  
  31. #include "cscape.h"
  32. #include "teddecl.h"
  33. #include "scancode.h"
  34. #include "popdecl.h"
  35.  
  36. void pop_Message(char *msg, int row, int col, int height, int width, byte color, bd_fptr bord)
  37. /*
  38.     Puts up a message in a box and returns.
  39.     If msg is NULL then it clears the previous message.
  40. */
  41. {
  42.     static sed_type sed = NULL;    
  43.     menu_type        menu;
  44.     unsigned int len;
  45.     int w;
  46.  
  47.     if (sed != NULL) {
  48.         /* clear the old message first */
  49.         sed_Close(sed);
  50.         sed = NULL;
  51.     }
  52.  
  53.     if (msg == NULL) {
  54.         return;
  55.     }
  56.  
  57.     if ((menu = menu_Open()) == NULL) {
  58.         return;
  59.     }
  60.  
  61.     for (len = 0; msg[len] != '\0'; len++) ;
  62.     if (!menu_SetTB(menu, msg, len)) {
  63.         menu_Destroy(menu);
  64.         return;
  65.     }
  66.     menu_Flush(menu);
  67.  
  68.     if ((sed = sed_Open(menu)) == NULL) {
  69.         menu_Destroy(menu);
  70.         return;
  71.     }
  72.  
  73.     sed_SetColors(sed, color, color, color);
  74.     sed_SetBorder(sed, bord);
  75.  
  76.     if (width > 0) {
  77.         w = width;
  78.     }
  79.     else if (popparms.width > 0) {
  80.         w = popparms.width;
  81.     }
  82.     else {
  83.         w = disp_GetWidth() - (bord_GetWidth(sed) - sed_GetWidth(sed));
  84.         if (col > 0) {
  85.             w -= col;
  86.         }
  87.     }
  88.      ted_SetWrapWidth(sed, w);
  89.     menu_SetDirty(menu, TRUE);
  90.     menu_RecalcSize(menu);
  91.  
  92.     pop_SetParms(sed, row, col, height, width, NULL);
  93.  
  94.     sed_Repaint(sed);
  95. }
  96.  
  97.  
  98.