]> git.sur5r.net Git - openldap/blob - libraries/msdos/winsock/ltest/textwind.c
no longer supported.
[openldap] / libraries / msdos / winsock / ltest / textwind.c
1 /*
2  * textwind.c
3  */
4 #include <windows.h>
5 #include <stdio.h>
6 #include "console.h"
7 #include "textwind.h"
8
9 static BOOL windclassreg = FALSE;
10 extern HWND hInst;
11
12 /*
13  * local prototypes
14  */
15 BOOL register_editclass( void );
16
17
18 HWND
19 new_editwindow( HWND hParent, char *lpszTitle )
20 {
21         HWND    hWnd, hEditWnd;
22         RECT    r;
23
24         /*
25          * register text edit window class if we have not already done so
26          */
27         if ( !windclassreg && !register_editclass()) {
28                 return( NULL );
29         }
30
31         /*
32          * create an instance of text edit window
33          */
34         hWnd = CreateWindow( WINDCLASS_TEDIT, lpszTitle != NULL ? lpszTitle : "Untitled",
35                         WS_OVERLAPPEDWINDOW,
36                         CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
37                         hParent, NULL, hInst, NULL );
38
39         if ( !hWnd ) {
40                 return( NULL );
41         }
42
43         /*
44          * create a child Edit controls that fills the text edit window
45          */
46         GetClientRect( hWnd, (LPRECT)&r );
47         hEditWnd = CreateWindow( "Edit", NULL,
48                         WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_MULTILINE,
49                         0, 0, r.right - r.left, r.bottom - r.top, hWnd, IDC_EDIT, hInst, NULL );
50
51         if ( !hEditWnd ) {
52                 DestroyWindow( hWnd );
53                 return( NULL );
54         }
55
56         /*
57          * add edit control to property list of window
58          */
59         if( !SetProp( hWnd, "hEditWnd", hEditWnd )) {
60                 DestroyWindow( hWnd );
61                 return( NULL );
62         }
63
64         if ( lpszTitle != NULL ) {
65             SetWindowText( hWnd, lpszTitle );
66         }
67
68         /*
69          * show and draw the new window
70          */
71         ShowWindow( hWnd, SW_SHOWNORMAL );
72         UpdateWindow( hWnd );
73         return( hEditWnd );
74 }
75
76
77 BOOL
78 register_editclass()
79 {
80         WNDCLASS        wc;
81
82         memset( &wc, 0x00, sizeof(WNDCLASS) );
83
84         wc.style = CS_HREDRAW | CS_VREDRAW | CS_BYTEALIGNWINDOW;
85         wc.lpfnWndProc = TEditWndProc;
86         wc.hInstance = hInst;
87         wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1 );
88         wc.lpszClassName = WINDCLASS_TEDIT;
89         return( windclassreg = RegisterClass( &wc ));
90 }
91
92
93 void
94 memory_error( void )
95 {
96         MessageBox( GetFocus(), "Out of memory", "Sample", MB_ICONHAND | MB_OK );
97 }
98
99
100 long FAR PASCAL TEditWndProc( HWND hWnd, unsigned message, WORD wParam, LONG lParam )
101 {
102         HWND    hEditWnd;
103
104         hEditWnd = GetProp( hWnd, "hEditWnd" );
105
106         switch( message ) {
107         case WM_COMMAND:
108                 switch( wParam ) {
109                 case IDC_EDIT:
110                         if ( HIWORD( lParam ) == EN_ERRSPACE ) {
111                                 memory_error();
112                         }
113                         break;
114                 }
115                 break;
116
117         case WM_SETFOCUS:
118                 SetFocus( hEditWnd );
119                 break;
120
121         case WM_SIZE:
122                 MoveWindow( hEditWnd, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE );
123                 break;
124
125         default:
126                 return( DefWindowProc( hWnd, message, wParam, lParam ));
127         }
128
129         return( NULL );
130 }