File: wmen_message.c

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (135 lines) | stat: -rw-r--r-- 3,172 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* Copyright ENPC */

/* wmessage.c
 * Scilab 
 *   Jean-Philipe Chancelier 
 *   Bugs and mail : Scilab@inria.fr 
 */

#include "wmen_scilab.h"

extern SciMess ScilabMessage;

RECT SciMenusRect = {-1,-1,0,0};

/****************************************************
 * Event handler function for the line style window 
 * uses GetWindowLong(hwnd, 4) and SetWindowLong
 ****************************************************/

EXPORT BOOL CALLBACK 
SciMessageDlgProc(HWND hdlg, UINT wmsg, WPARAM wparam, LPARAM lparam)
{
  switch (wmsg) {
  case WM_INITDIALOG:
    if ( SciMenusRect.left != -1) 
      SetWindowPos(hdlg,HWND_TOP,SciMenusRect.left,SciMenusRect.top,0,0,
		   SWP_NOSIZE | SWP_NOZORDER );
    SetDlgItemText(hdlg, DI_TEXT,ScilabMessage.string);
    SetDlgItemText(hdlg, IDOK,ScilabMessage.pButName[0]);
    if ( ScilabMessage.nb >= 2) 
      SetDlgItemText(hdlg, IDCANCEL,ScilabMessage.pButName[1]);
    return TRUE;
  case WM_COMMAND:
    switch (LOWORD(wparam)) {
    case IDOK:
      /** GetDlgItemText(hdlg, DI_TEXT, str, MAXSTR-1);
      if (str[strlen(str)-1] == '\n') str[strlen(str)-1] = '\0' ;
      **/
      GetWindowRect(hdlg,&SciMenusRect);
      EndDialog(hdlg, IDOK);
      return TRUE;
    case IDCANCEL:
      GetWindowRect(hdlg,&SciMenusRect);
      EndDialog(hdlg, IDCANCEL);
      return TRUE;
    }
    break;
  }
  return FALSE;
}


/****************************************************
 * Activate the Message Dialog box window 
 ****************************************************/

static void MessageWinSize(char *str,int *w,int *h)
{
  int wl=0;
  *w=0,*h=0;
  while ( *str != '\0') 
    {
      if ( *str == '\n' ) 
	{
	  (*h)++; *w=Max(*w,wl);wl=0;
	}
      else 
	wl++;
      str++;
    }
}


int  ExposeMessageWindow()
{
  int w,h;
  char *buf;
  DLGPROC lpfnSciMessageDlgProc ;
  HWND hwndOwner ;
  lpfnSciMessageDlgProc = (DLGPROC) MyGetProcAddress("SciMessageDlgProc",
						    SciMessageDlgProc);
  MessageWinSize(ScilabMessage.string,&w,&h);
  if ( ScilabMessage.nb == 2) 
    {
      if ( h <= 8 && w <= 45)
	buf = "SciMessageDlgBox2";
      else 
	buf = "SciBigMessageDlgBox2";
    }
  else 
    {
      if ( h <= 8 && w <= 45)
	buf = "SciMessageDlgBox1";
      else 
	buf = "SciBigMessageDlgBox1";
    }
  if ( (hwndOwner = GetActiveWindow()) == NULL) 
    hwndOwner =  textwin.hWndParent;
  if (DialogBox(hdllInstance, buf,hwndOwner,
		lpfnSciMessageDlgProc)  == IDOK) 
    return(1);
  else 
    return(2);
}

int  ExposeMessageWindow1()
{
  int w,h;
  char *buf;
  DLGPROC lpfnSciMessageDlgProc ;
  HWND hwndOwner ;
  lpfnSciMessageDlgProc = (DLGPROC) MyGetProcAddress("SciMessageDlgProc",
						    SciMessageDlgProc);
  MessageWinSize(ScilabMessage.string,&w,&h);
  if ( ScilabMessage.nb == 2) 
    {
      if ( h <= 8 && w <= 45)
	buf = "SciMessageDlgBox2";
      else 
	buf = "SciBigMessageDlgBox2";
    }
  else 
    {
      if ( h <= 8 && w <= 45)
	buf = "SciMessageDlgBox1";
      else 
	buf = "SciBigMessageDlgBox1";
    }
  if ( (hwndOwner = GetActiveWindow()) == NULL) 
    hwndOwner =  textwin.hWndParent;
  CreateDialog(hdllInstance,buf,
	       hwndOwner, 
	       lpfnSciMessageDlgProc) ;
  return(0);
}