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