9 static BOOL windclassreg = FALSE;
15 BOOL register_editclass( void );
19 new_editwindow( HWND hParent, char *lpszTitle )
25 * register text edit window class if we have not already done so
27 if ( !windclassreg && !register_editclass()) {
32 * create an instance of text edit window
34 hWnd = CreateWindow( WINDCLASS_TEDIT, lpszTitle != NULL ? lpszTitle : "Untitled",
36 CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
37 hParent, NULL, hInst, NULL );
44 * create a child Edit controls that fills the text edit window
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 );
52 DestroyWindow( hWnd );
57 * add edit control to property list of window
59 if( !SetProp( hWnd, "hEditWnd", hEditWnd )) {
60 DestroyWindow( hWnd );
64 if ( lpszTitle != NULL ) {
65 SetWindowText( hWnd, lpszTitle );
69 * show and draw the new window
71 ShowWindow( hWnd, SW_SHOWNORMAL );
82 memset( &wc, 0x00, sizeof(WNDCLASS) );
84 wc.style = CS_HREDRAW | CS_VREDRAW | CS_BYTEALIGNWINDOW;
85 wc.lpfnWndProc = TEditWndProc;
87 wc.hbrBackground = (HBRUSH) (COLOR_WINDOW + 1 );
88 wc.lpszClassName = WINDCLASS_TEDIT;
89 return( windclassreg = RegisterClass( &wc ));
96 MessageBox( GetFocus(), "Out of memory", "Sample", MB_ICONHAND | MB_OK );
100 long FAR PASCAL TEditWndProc( HWND hWnd, unsigned message, WORD wParam, LONG lParam )
104 hEditWnd = GetProp( hWnd, "hEditWnd" );
110 if ( HIWORD( lParam ) == EN_ERRSPACE ) {
118 SetFocus( hEditWnd );
122 MoveWindow( hEditWnd, 0, 0, LOWORD(lParam), HIWORD(lParam), TRUE );
126 return( DefWindowProc( hWnd, message, wParam, lParam ));