|
|
1.1 ! root 1: /* ! 2: * HELLO.C -- A simple program which calls the OpenDlg library ! 3: * ! 4: * Created by Microsoft, IBM Corporation 1990 ! 5: * ! 6: * DISCLAIMER OF WARRANTIES. The following [enclosed] code is ! 7: * sample code created by Microsoft Corporation and/or IBM ! 8: * Corporation. This sample code is not part of any standard ! 9: * Microsoft or IBM product and is provided to you solely for ! 10: * the purpose of assisting you in the development of your ! 11: * applications. The code is provided "AS IS", without ! 12: * warranty of any kind. Neither Microsoft nor IBM shall be ! 13: * liable for any damages arising out of your use of the sample ! 14: * code, even if they have been advised of the possibility of ! 15: * such damages. ! 16: */ ! 17: #define INCL_PM ! 18: #include <os2.h> ! 19: #include "..\opendlg.h" ! 20: #include <string.h> ! 21: #include "hello.h" ! 22: /* ! 23: * Globals ! 24: */ ! 25: HAB hAB; ! 26: HMQ hMqHello; ! 27: HWND hWndHello; ! 28: HWND hWndHelloFrame; ! 29: CHAR szClassName[] = "Hello World"; ! 30: CHAR szMessage[] = " - File Dialog Sample"; ! 31: CHAR szExtension[] = "\\*"; ! 32: CHAR szHelp[] = "Help would go here."; ! 33: DLF vdlf; ! 34: HFILE vhFile; ! 35: /* ! 36: * Main routine...initializes window and message queue ! 37: */ ! 38: int main( ) { ! 39: QMSG qmsg; ! 40: ULONG ctldata; ! 41: ! 42: hAB = WinInitialize(NULL); ! 43: ! 44: hMqHello = WinCreateMsgQueue(hAB, 0); ! 45: ! 46: if (!WinRegisterClass( hAB, (PCH)szClassName, (PFNWP)HelloWndProc, ! 47: CS_SIZEREDRAW, 0)) ! 48: return( 0 ); ! 49: ! 50: /* Create the window */ ! 51: ctldata = FCF_STANDARD & ~(FCF_ACCELTABLE); ! 52: hWndHelloFrame = WinCreateStdWindow( HWND_DESKTOP, WS_VISIBLE, &ctldata, ! 53: szClassName, szMessage, ! 54: 0L, (HMODULE)NULL, ID_RESOURCE, ! 55: &hWndHello ); ! 56: ! 57: if (hWndHelloFrame == (HWND)NULL) ! 58: return 0; ! 59: WinShowWindow( hWndHelloFrame, TRUE ); ! 60: ! 61: /* Poll messages from event queue */ ! 62: while( WinGetMsg( hAB, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) ) ! 63: WinDispatchMsg( hAB, (PQMSG)&qmsg ); ! 64: ! 65: /* Clean up */ ! 66: WinDestroyWindow( hWndHelloFrame ); ! 67: WinDestroyMsgQueue( hMqHello ); ! 68: WinTerminate( hAB ); ! 69: } ! 70: ! 71: MRESULT EXPENTRY HelloWndProc(hWnd, msg, mp1, mp2) ! 72: /* ! 73: * This routine processes WM_COMMAND, WM_PAINT. It passes ! 74: * everything else to the Default Window Procedure. ! 75: */ ! 76: HWND hWnd; ! 77: USHORT msg; ! 78: MPARAM mp1; ! 79: MPARAM mp2; ! 80: { ! 81: HPS hPS; ! 82: POINTL pt; ! 83: CHARBUNDLE cb; ! 84: RECTL rcl; ! 85: ! 86: switch (msg) { ! 87: ! 88: case WM_COMMAND: ! 89: switch (LOUSHORT(mp1)) { ! 90: ! 91: case IDM_OPEN: /* Demonstrate Open... dialog call */ ! 92: SetupDLF( &vdlf ! 93: , DLG_OPENDLG ! 94: , &vhFile ! 95: , szExtension ! 96: , NULL ! 97: , "Open Title" ! 98: , szHelp ); ! 99: DlgFile(hWndHelloFrame, &vdlf); ! 100: break; ! 101: ! 102: case IDM_SAVE: /* Demonstrate Save As... dialog call */ ! 103: SetupDLF( &vdlf ! 104: , DLG_SAVEDLG ! 105: , &vhFile ! 106: , szExtension ! 107: , NULL ! 108: , "Save Title" ! 109: , szHelp); ! 110: strcpy((PSZ)vdlf.szOpenFile, (PSZ)"foo.bar"); ! 111: DlgFile(hWndHelloFrame, &vdlf); ! 112: break; ! 113: ! 114: case IDM_ABOUT: ! 115: WinDlgBox(HWND_DESKTOP, hWnd, AboutDlgProc, ! 116: NULL, IDD_ABOUT, NULL); ! 117: return 0; ! 118: ! 119: default: break; ! 120: } ! 121: break; ! 122: ! 123: case WM_PAINT: ! 124: /* Open the presentation space */ ! 125: hPS = WinBeginPaint(hWnd, NULL, &rcl); ! 126: ! 127: /* Fill the background with Dark Blue */ ! 128: WinFillRect(hPS, &rcl, CLR_DARKBLUE); ! 129: ! 130: /* Write "Hello World" in Red */ ! 131: pt.x = pt.y = 0L; ! 132: cb.lColor = CLR_RED; ! 133: GpiSetAttrs(hPS, PRIM_CHAR, CBB_COLOR, 0L, &cb); ! 134: GpiCharStringAt(hPS, &pt, (LONG)sizeof(szClassName)-1, szClassName); ! 135: ! 136: /* Finish painting */ ! 137: WinEndPaint(hPS); ! 138: break; ! 139: ! 140: default: ! 141: return WinDefWindowProc(hWnd, msg, mp1, mp2); break; ! 142: } ! 143: return 0L; ! 144: } ! 145: ! 146: MRESULT EXPENTRY AboutDlgProc(hDlg, msg, mp1, mp2) ! 147: /* ! 148: About... dialog procedure ! 149: */ ! 150: HWND hDlg; ! 151: USHORT msg; ! 152: MPARAM mp1; ! 153: MPARAM mp2; ! 154: { ! 155: switch(msg) { ! 156: case WM_COMMAND: ! 157: switch(LOUSHORT(mp1)) { ! 158: case DID_OK: WinDismissDlg(hDlg, TRUE); break; ! 159: default: break; ! 160: } ! 161: default: return WinDefDlgProc(hDlg, msg, mp1, mp2); ! 162: } ! 163: return FALSE; ! 164: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.