Metropoli BBS
VIEWER: sample.c MODE: TEXT (ASCII)
#include <windows.h>

LPSTR	AppName			= "SAMPLE";
#define	AM_DROP_OK		15669
#define AM_DROP_DATE	16763
#define AM_NEWDATE		24694

LRESULT CALLBACK _export MainWndProc( HWND, unsigned, WORD, LONG );
LRESULT CALLBACK _export CreateCalendar( HWND, int, int );

int PASCAL WinMain( HANDLE hInstance, HANDLE hPrevInstance,
                    LPSTR lpszCmdLine, int nCmdShow )
{
    HWND hWnd;
    MSG msg;
    WNDCLASS wndClass;

    if( !hPrevInstance ) {
		wndClass.style = CS_HREDRAW | CS_VREDRAW;
		(FARPROC)wndClass.lpfnWndProc = (FARPROC)MainWndProc;
		wndClass.cbClsExtra = 0;
		wndClass.cbWndExtra = 0;
		wndClass.hInstance = hInstance;
		wndClass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
		wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
		wndClass.hbrBackground = COLOR_WINDOW + 1;
		wndClass.lpszMenuName = NULL;
		wndClass.lpszClassName = AppName;

		RegisterClass( &wndClass );
	}
    
    hWnd = CreateWindow( AppName, AppName, WS_OVERLAPPEDWINDOW,  CW_USEDEFAULT,
                CW_USEDEFAULT, 500, 250, NULL, NULL, hInstance, NULL );


    ShowWindow(hWnd,nCmdShow);
    UpdateWindow(hWnd);

    while ( GetMessage( &msg, NULL, 0, 0 ) ){
        	TranslateMessage( &msg );
        	DispatchMessage( &msg );
    }

    return msg.wParam;
}

LRESULT CALLBACK _export MainWndProc( HWND hWnd, unsigned iMessage,
                                     WORD wParam, LONG lParam )
{
    static HINSTANCE hInstance;
    static HWND hWndEdit1, hWndEdit2;
    
    switch( iMessage )
    {
    	case WM_CREATE:
    		hInstance = ( (LPCREATESTRUCT) lParam ) -> hInstance;
    		hWndEdit1 = CreateWindow( "EDIT", "", 
    			WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 
				10, 10, 150, 25, hWnd, 100, hInstance, NULL );
			hWndEdit2 = CreateWindow( "EDIT", "", 
				WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL, 
				200, 65, 250, 25, hWnd, 100, hInstance, NULL );
			CreateWindow( "STATIC", (LPSTR) "Drag the date from the "
				"calendar window and drop into the field below:", WS_CHILD | 
				WS_VISIBLE , 200, 10, 250, 50, hWnd, 0, hInstance, NULL );

    		CreateCalendar( hWnd, 10, 50 );
            return 0;                  
		case AM_DROP_OK:
			if( wParam == hWndEdit2 )
				return TRUE;
			return FALSE;
		case AM_DROP_DATE:
			if( wParam == hWndEdit2 )
				SetWindowText( hWndEdit2, (LPSTR) lParam );
			return TRUE;
		case AM_NEWDATE:
			SetWindowText( hWndEdit1, (LPSTR) lParam );
			return TRUE;
		case WM_DESTROY:
			PostQuitMessage( 0 );
			return 0;
	}
	
	return DefWindowProc( hWnd, iMessage, wParam, lParam );
}
[ RETURN TO DIRECTORY ]