home *** CD-ROM | disk | FTP | other *** search
/ Windoware / WINDOWARE_1_6.iso / source / winbegin / winbegin.dat < prev    next >
Text File  |  1991-06-04  |  8KB  |  384 lines

  1. %source
  2. #include <windows.h>
  3. #include "%l.h"
  4.  
  5. long FAR PASCAL %cWndProc(HWND, unsigned, WORD, LONG);
  6. BOOL FAR PASCAL TextEnterBoxFunc(HWND, unsigned, WORD, LONG);
  7.  
  8.  
  9. static    HBRUSH  hbrBlack;
  10. static    HANDLE  hAccelTable;
  11. static    HANDLE  hInst;
  12.  
  13. HWND      hWindow;
  14.  
  15.  
  16. char    %ltext[LINESIZE];
  17.  
  18. /*
  19. Standard Windows feature.  About box tells you something about the
  20. application
  21. */
  22.  
  23. BOOL FAR PASCAL About( hDlg, message, wParam, lParam )
  24. HWND            hDlg;
  25. unsigned        message;
  26. WORD            wParam;
  27. LONG            lParam;
  28. {
  29.     if (message == WM_COMMAND) {
  30.  
  31.         EndDialog( hDlg, TRUE );
  32.         return TRUE;
  33.         }
  34.     else if (message == WM_INITDIALOG)
  35.         return TRUE;
  36.     else return FALSE;
  37. }
  38.  
  39.  
  40. void %cPaint(hDC)
  41. HDC hDC;
  42. {
  43.     TextOut(hDC,0,0,%ltext,strlen(%ltext));    
  44. }
  45.  
  46.  
  47. void GetText(hWnd)
  48. HWND hWnd;
  49. {
  50.     FARPROC lpprocTextEnterBoxFunc;
  51.     BOOL     i;
  52.  
  53.     lpprocTextEnterBoxFunc = MakeProcInstance ((FARPROC)TextEnterBoxFunc, hInst);
  54.     i = DialogBox(hInst, (LPSTR)"TextEnterBox", hWnd, lpprocTextEnterBoxFunc);
  55.     FreeProcInstance((FARPROC)lpprocTextEnterBoxFunc);
  56.  
  57.     if (i == TRUE) {    
  58.         InvalidateRect (hWnd, (LPRECT) NULL, (BOOL) TRUE);
  59.     }
  60. }
  61.  
  62.  
  63. void %cCommand(hWnd, id)
  64. HWND hWnd;
  65. int id;
  66. {
  67.     HDC     hDC;
  68.     FARPROC     lpprocAbout;
  69.     char     wbuffer[80];
  70.  
  71.     switch (id) {
  72.         case ID_EXIT:    
  73.             exit(id);                
  74.             break;
  75.  
  76.         case ID_ABOUT:
  77.             lpprocAbout = MakeProcInstance ((FARPROC)About, hInst);
  78.                 DialogBox(hInst, (LPSTR)"About", hWnd, lpprocAbout);
  79.             FreeProcInstance((FARPROC)lpprocAbout);
  80.                     break;
  81.  
  82.         case ID_%u:
  83.             GetText(hWnd);
  84.             break;
  85.  
  86.         default:    
  87.             break;
  88.     }
  89. }
  90.  
  91.  
  92. /* Procedure called every time a new instance of the application
  93. ** is created */
  94.  
  95. int PASCAL WinMain(hInstance, hPrevInstance, lpszCmdLine, cmdShow)
  96. HANDLE hInstance, hPrevInstance;
  97. LPSTR  lpszCmdLine;
  98. int    cmdShow;
  99. {
  100.     MSG   msg;
  101.     HWND  hWnd;
  102.     HMENU hMenu;
  103.     int i;
  104.  
  105.     if (!hPrevInstance) {
  106.             if (!%cInit(hInstance))
  107.                 return FALSE;
  108.         }
  109.         else {
  110.             GetInstanceData(hPrevInstance, (PSTR)&hbrBlack, sizeof(hbrBlack));
  111.             GetInstanceData(hPrevInstance, (PSTR)&hAccelTable, sizeof(hAccelTable));
  112.         }
  113.  
  114.     hWnd = CreateWindow((LPSTR) "%c",
  115.                         (LPSTR) "%c",
  116.                         WS_OVERLAPPEDWINDOW,
  117.                   CW_USEDEFAULT,     
  118.                 CW_USEDEFAULT,     
  119.                 CW_USEDEFAULT,     
  120.                 CW_USEDEFAULT,     
  121.                         (HWND)NULL,
  122.                         (HMENU)NULL,
  123.                         (HANDLE)hInstance,
  124.                         (LPSTR)NULL);
  125.     /* initialize various things */
  126.  
  127.     hWindow = hWnd;
  128.      hInst = hInstance;
  129.  
  130.     /*
  131.     Code to append About box to system menu removed here
  132.     The About box is now the user's responsibility
  133.     */
  134.  
  135.     ShowWindow(hWnd, cmdShow);
  136.     UpdateWindow(hWnd);
  137.  
  138.     /*
  139.     This is the classic loop
  140.     */
  141.  
  142.     while (GetMessage((LPMSG)&msg, NULL, 0, 0)) {
  143.             if (TranslateAccelerator(hWnd, hAccelTable, (LPMSG)&msg) == 0) {
  144.                 TranslateMessage((LPMSG)&msg);
  145.                 DispatchMessage((LPMSG)&msg);
  146.             }
  147.         }
  148.     exit(msg.wParam);
  149.     return(0);
  150. }
  151.  
  152. int %cInit(hInstance)
  153. HANDLE hInstance;
  154. {
  155.     PWNDCLASS   p%cClass;
  156.  
  157.         /* set up some default brushes */
  158.     hbrBlack = GetStockObject(BLACK_BRUSH);
  159.  
  160.     p%cClass = (PWNDCLASS)LocalAlloc(LPTR, sizeof(WNDCLASS));
  161.     p%cClass->hCursor  = LoadCursor(NULL, IDC_ARROW);
  162.     p%cClass->hIcon    = LoadIcon(hInstance, (LPSTR)"%c");
  163.     p%cClass->lpszMenuName = (LPSTR)"MainMenu";
  164.     p%cClass->lpszClassName   = (LPSTR)"%c";
  165.     p%cClass->hbrBackground   = NULL;
  166.     p%cClass->hInstance       = hInstance;
  167.     p%cClass->style         = CS_VREDRAW | CS_HREDRAW;
  168.     p%cClass->lpfnWndProc = %cWndProc;
  169.  
  170.     if (!RegisterClass((LPWNDCLASS)p%cClass))
  171.             return FALSE;
  172.  
  173.     LocalFree((HANDLE)p%cClass);
  174.     hAccelTable = LoadAccelerators(hInstance, (LPSTR)"%caccel");
  175.     return TRUE;
  176. }
  177.  
  178. /* Procedures which make up the window class. */
  179. long FAR PASCAL %cWndProc(hWnd, message, wParam, lParam)
  180. HWND       hWnd;
  181. unsigned   message;
  182. WORD       wParam;
  183. LONG       lParam;
  184. {
  185.     PAINTSTRUCT  ps;
  186.     RECT        rect;
  187.     HBRUSH      hbr, hbrOld;
  188.     POINT        pt;
  189.  
  190.  
  191.     switch (message)
  192.         {
  193.             case WM_SYSCOMMAND:
  194.                 switch (wParam) {
  195.                         default:
  196.                             return(DefWindowProc(hWnd, message, wParam, lParam));
  197.                     }
  198.  
  199.             case WM_CREATE:
  200.                 break;
  201.  
  202.             case WM_LBUTTONDOWN:
  203.             case WM_RBUTTONDOWN:
  204.             case WM_LBUTTONDBLCLK:
  205.             case WM_RBUTTONDBLCLK:
  206.             break;
  207.             case WM_MOUSEMOVE:
  208.             break;
  209.             case WM_LBUTTONUP:
  210.             case WM_RBUTTONUP:
  211.             break;
  212.             case WM_DESTROY:
  213.                 PostQuitMessage(0);
  214.                 break;
  215.  
  216.          case WM_COMMAND:
  217.                 %cCommand(hWnd, wParam);
  218.                 break;
  219.  
  220.         case WM_PAINT:
  221.                 BeginPaint(hWnd, (LPPAINTSTRUCT)&ps);
  222.             %cPaint(ps.hdc);
  223.                 EndPaint(hWnd, (LPPAINTSTRUCT)&ps);
  224.                 break;
  225.  
  226.         case WM_ERASEBKGND:
  227.                 GetClientRect(hWnd, (LPRECT)&rect);
  228.                 hbr = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
  229.                 hbrOld = SelectObject((HDC)wParam, hbr);
  230.                 FillRect((HDC)wParam, (LPRECT)&rect, hbr);
  231.                 SelectObject((HDC)wParam, hbrOld);
  232.                 DeleteObject(hbr);
  233.                 break;
  234.  
  235.  
  236.             default:
  237.                 return(DefWindowProc(hWnd, message, wParam, lParam));
  238.             }
  239.  
  240.     return(0L);    
  241. }
  242.  
  243.  
  244. void GrabText(hDlg,name,id,size)
  245. HWND hDlg;
  246. char name[];
  247. short id;
  248. short size;
  249. {
  250.     short i;
  251.     
  252.     strcpy(name,"");
  253.     i = GetDlgItemText(hDlg,id,(LPSTR)name, size);
  254.      name[i] = 0;
  255.  
  256.  
  257. }
  258.  
  259.  
  260. BOOL FAR PASCAL TextEnterBoxFunc(hDlg, message, wParam, lParam)
  261. HWND hDlg;
  262. unsigned message;
  263. WORD wParam;
  264. LONG lParam;
  265. {
  266.     switch(message)
  267.         {
  268.         case WM_INITDIALOG:
  269.             SetFocus(GetDlgItem(hDlg, ID_TEXT));
  270.             return(FALSE);
  271.         case WM_COMMAND:
  272.             switch(wParam)
  273.                 {
  274.                 case ID_OK:
  275.                     GrabText(hDlg,%ltext,ID_TEXT,LINESIZE);
  276.                     EndDialog(hDlg, TRUE);
  277.                     return(TRUE);
  278.                 case ID_CANCEL:
  279.                     EndDialog(hDlg,FALSE);
  280.                     return(FALSE);
  281.                 default:
  282.                     return(FALSE);
  283.             }
  284.         default:
  285.             return(FALSE);
  286.     }                
  287. }
  288.  
  289.  
  290. %end
  291. %include
  292. #define LINESIZE 80
  293.  
  294.  
  295. /* Menu choice to display the About dialog box */
  296.  
  297. #define ID_ABOUT           0x100
  298.  
  299. /* Menu choice to display the text */
  300.  
  301. #define ID_%u    0x200
  302.  
  303. /* Menu choice to exit the application */
  304.  
  305. #define ID_EXIT        0x300
  306.  
  307. /* Dialog box control identifiers */
  308.  
  309. #define ID_ETEXT    0x400
  310. #define ID_TEXT        0x401 
  311. #define ID_OK        0x402
  312. #define ID_CANCEL    0x403
  313.  
  314. %end
  315. %def
  316.  
  317. NAME  %c
  318. DESCRIPTION '%d'
  319.  
  320. CODE    MOVEABLE
  321. DATA    MOVEABLE MULTIPLE
  322.  
  323. STUB    'WINSTUB.EXE'
  324.  
  325. EXETYPE WINDOWS
  326.  
  327. HEAPSIZE  1024
  328. STACKSIZE 4096
  329.  
  330. EXPORTS
  331.     %cWndProc       
  332.     About    
  333.     TextEnterBoxFunc    
  334. %end
  335. %resource
  336. #include "windows.h"
  337. #include "%l.h"
  338.  
  339. %l  ICON    %l.ico
  340.  
  341. MainMenu  MENU    
  342. BEGIN
  343.     POPUP "&File"
  344.     BEGIN
  345.         MENUITEM "&Exit",                 ID_EXIT 
  346.         MENUITEM "&About This Application",        ID_ABOUT
  347.     END
  348.     MENUITEM "&Get Text",                ID_%u
  349. END        
  350.  
  351.  
  352. About DIALOG LOADONCALL MOVEABLE DISCARDABLE 22, 17, 144, 85 
  353. STYLE WS_POPUP | WS_DLGFRAME
  354. BEGIN
  355.     CTEXT "%c"                                 -1, 38, 10, 68, 8
  356.     ICON  "%l"                                 -1,  9,  5, 18, 28
  357.     CTEXT "%d"                             -1,  0, 33, 144, 8
  358.     CTEXT "Version 1.00"                      -1,  0, 43, 144, 8
  359.     CTEXT "Copyright (c) 1991 by %n"         -1,  0, 53, 144, 9
  360.     DEFPUSHBUTTON "Ok"                        ID_OK, 53, 67, 32, 14, WS_GROUP
  361. END
  362.  
  363. TEXTENTERBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 66, 52, 155, 69
  364. STYLE WS_DLGFRAME | WS_POPUP
  365. BEGIN
  366.        CONTROL "Enter text:" ID_ETEXT, "static", SS_LEFT | WS_CHILD, 15, 10, 124, 16
  367.        CONTROL "" ID_TEXT, "edit", ES_LEFT | WS_BORDER | WS_TABSTOP | WS_CHILD, 15, 22, 126, 12
  368.        CONTROL "OK" ID_OK, "button", BS_DEFPUSHBUTTON | WS_TABSTOP | WS_CHILD, 30, 46, 31, 14
  369.        CONTROL "Cancel" ID_CANCEL, "button", BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD, 87, 46, 31, 14
  370. END
  371. %end
  372. %make
  373. ALL:  %l.exe
  374.  
  375. %l.obj: %l.c %l.h 
  376.    cl -d -c -AM -Gsw -Oas -Zpe -Fl %l.obj %l.c
  377.  
  378. %l.exe: %l.obj %l.def 
  379.     link %l , %l /align:16,%l/map, mlibcew libw ,%l.def;
  380.     rc %l 
  381.  
  382. %end
  383. 
  384.