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
|
/* Copyright ENPC */
/***********************************************
* wmdialog.c / Scilab
* Jean-Philippe Chancelier
* Bugs and mail : Scilab@inria.fr
***********************************************/
#include "wmen_scilab.h"
#ifdef WIN32
#include "../os_specific/win_mem_alloc.h" /* MALLOC */
#else
#include "../os_specific/sci_mem_alloc.h" /* MALLOC */
#endif
extern SciDialog ScilabDialog;
/****************************************************
* Event handler function for the line style window
* uses GetWindowLong(hwnd, 4) and SetWindowLong
****************************************************/
EXPORT int CALLBACK SciDialogDlgProc(HWND hdlg, UINT wmsg, WPARAM wparam, LPARAM lparam)
{
HWND dlgw;
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_TIT, ScilabDialog.description);
if (strcmp(ScilabDialog.init,"\r\n")!=0) SetDlgItemText(hdlg, DI_TEXT,ScilabDialog.init);
SetDlgItemText(hdlg, IDOK,ScilabDialog.pButName[0]);
SetDlgItemText(hdlg, IDCANCEL,ScilabDialog.pButName[1]);
return TRUE;
case WM_COMMAND:
switch (LOWORD(wparam)) {
case IDOK:
dlgw = GetDlgItem(hdlg, DI_TEXT);
if ( dlgw != NULL)
{
int l;
l= GetWindowTextLength(dlgw);
/* sciprint("string of size %d \n",l); */
if ( (dialog_str = MALLOC( (l+2)*(sizeof(char)))) == NULL)
{
Scistring("Malloc : No more place");
EndDialog(hdlg, IDCANCEL);
return TRUE;
}
GetDlgItemText(hdlg, DI_TEXT, dialog_str, l+1);
/* sciprint("str [%s]\n",dialog_str); */
if (dialog_str[strlen(dialog_str)-1] == '\n')
dialog_str[strlen(dialog_str)-1] = '\0' ;
GetWindowRect(hdlg,&SciMenusRect);
EndDialog(hdlg, IDOK);
return TRUE;
}
else
{
EndDialog(hdlg, IDCANCEL);
return TRUE;
}
case IDCANCEL:
GetWindowRect(hdlg,&SciMenusRect);
EndDialog(hdlg, IDCANCEL);
return TRUE;
}
break;
}
return FALSE;
}
/****************************************************
* Activate the Line Style Dialog box window
* GetWindowLong(hwnd, 4) must be available for use
****************************************************/
int DialogWindow()
{
char *c=NULL;
int i=0;
int lenStr=0;
HWND hwndOwner ;
DLGPROC lpfnSciDialogDlgProc ;
lpfnSciDialogDlgProc = (DLGPROC) MyGetProcAddress("SciDialogDlgProc", SciDialogDlgProc);
c=ScilabDialog.description;
while ( *c != '\0')
{
if ( *c == '\n' )
{
i++;
if (lenStr>40)
{
i++;
}
lenStr=0;
}
c++;
lenStr++;
}
if ( i >= 3 )
{
c="SciBigDialogDlgBox";
}
else
{
c="SciDialogDlgBox";
}
hwndOwner=NULL;
if (DialogBox(hdllInstance,c,hwndOwner,lpfnSciDialogDlgProc) == IDOK) return(TRUE);
else return(FALSE);
}
|