home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c480 / 19.ddi / SAMPLES / DDEML / CLIENT / CLINIT.C_ / CLINIT.C
Encoding:
C/C++ Source or Header  |  1993-02-08  |  5.8 KB  |  147 lines

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *  MODULE      : clinit.c                                                 *
  4.  *                                                                         *
  5.  *  PURPOSE     : Contains initialization code for Client                  *
  6.  *                                                                         *
  7.  ***************************************************************************/
  8.  
  9. #include "ddemlcl.h"
  10.  
  11. char szFrame[] = "mpframe";   /* Class name for "frame" window */
  12. char szChild[] = "mpchild";   /* Class name for MDI window     */
  13. char szList[] =  "mplist";    /* Class name for MDI window     */
  14.  
  15. /****************************************************************************
  16.  *                                                                          *
  17.  *  FUNCTION   : InitializeApplication ()                                   *
  18.  *                                                                          *
  19.  *  PURPOSE    : Sets up the class data structures and does a one-time      *
  20.  *               initialization of the app by registering the window classes*
  21.  *               Also registers the Link clipboard format                   *
  22.  *                                                                          *
  23.  *  RETURNS    : TRUE  - If successful.                                     *
  24.  *               FALSE - otherwise.                                         *
  25.  *                                                                          *
  26.  ****************************************************************************/
  27.  
  28. BOOL FAR PASCAL InitializeApplication()
  29. {
  30.     WNDCLASS    wc;
  31.  
  32.     fmtLink = RegisterClipboardFormat("Link");
  33.  
  34.     if (!fmtLink)
  35.         return FALSE;
  36.  
  37.     /* Register the frame class */
  38.     wc.style         = 0;
  39.     wc.lpfnWndProc   = FrameWndProc;
  40.     wc.cbClsExtra    = 0;
  41.     wc.cbWndExtra    = 0;
  42.     wc.hInstance     = hInst;
  43.     wc.hIcon         = LoadIcon(hInst,MAKEINTRESOURCE(IDCLIENT));
  44.     wc.hCursor       = LoadCursor(NULL,IDC_ARROW);
  45.     wc.hbrBackground = COLOR_APPWORKSPACE+1;
  46.     wc.lpszMenuName  = MAKEINTRESOURCE(IDCLIENT);
  47.     wc.lpszClassName = szFrame;
  48.  
  49.     if (!RegisterClass (&wc) )
  50.         return FALSE;
  51.  
  52.     /* Register the MDI child class */
  53.     wc.lpfnWndProc   = MDIChildWndProc;
  54.     wc.hIcon         = LoadIcon(hInst,MAKEINTRESOURCE(IDCONV));
  55.     wc.lpszMenuName  = NULL;
  56.     wc.cbWndExtra    = CHILDCBWNDEXTRA;
  57.     wc.lpszClassName = szChild;
  58.  
  59.     if (!RegisterClass(&wc))
  60.         return FALSE;
  61.  
  62.     wc.hIcon         = LoadIcon(hInst, MAKEINTRESOURCE(IDLIST));
  63.     wc.lpszClassName = szList;
  64.  
  65.     if (!RegisterClass(&wc))
  66.         return FALSE;
  67.  
  68.     return TRUE;
  69.  
  70. }
  71.  
  72. /****************************************************************************
  73.  *                                                                          *
  74.  *  FUNCTION   : InitializeInstance ()                                      *
  75.  *                                                                          *
  76.  *  PURPOSE    : Performs a per-instance initialization of Client.          *
  77.  *               - Enlarges message queue to handle lots of DDE messages.   *
  78.  *               - Initializes DDEML for this app                           *
  79.  *               - Creates atoms for our custom formats                     *
  80.  *               - Creates the main frame window                            *
  81.  *               - Loads accelerator table                                  *
  82.  *               - Shows main frame window                                  *
  83.  *                                                                          *
  84.  *  RETURNS    : TRUE  - If initialization was successful.                  *
  85.  *               FALSE - otherwise.                                         *
  86.  *                                                                          *
  87.  ****************************************************************************/
  88. BOOL FAR PASCAL InitializeInstance(
  89. WORD nCmdShow)
  90. {
  91.     extern HWND  hwndMDIClient;
  92.     char         sz[80];
  93.     int          i;
  94.  
  95.     if (DdeInitialize(&idInst, (PFNCALLBACK)MakeProcInstance(
  96.             (FARPROC)DdeCallback, hInst), APPCMD_CLIENTONLY, 0L))
  97.         return FALSE;
  98.  
  99.     CCFilter.iCodePage = CP_WINANSI;
  100.  
  101.     for (i = 0; i < CFORMATS; i++) {
  102.         if (aFormats[i].atom == 0)
  103.             aFormats[i].atom = RegisterClipboardFormat(aFormats[i].sz);
  104.     }
  105.  
  106.     /* Get the base window title */
  107.     LoadString(hInst, IDS_APPNAME, sz, sizeof(sz));
  108.  
  109.     /* Create the frame */
  110.     hwndFrame = CreateWindow (szFrame,
  111.                               sz,
  112.                               WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN,
  113.                               CW_USEDEFAULT,
  114.                               CW_USEDEFAULT,
  115.                               400,
  116.                               200,
  117.                               NULL,
  118.                               NULL,
  119.                               hInst,
  120.                               NULL);
  121.  
  122.     if (!hwndFrame || !hwndMDIClient)
  123.         return FALSE;
  124.  
  125.     /* Load main menu accelerators */
  126.     if (!(hAccel = LoadAccelerators (hInst, MAKEINTRESOURCE(IDCLIENT))))
  127.         return FALSE;
  128.  
  129.     /* Display the frame window */
  130.     ShowWindow (hwndFrame, nCmdShow);
  131.     UpdateWindow (hwndFrame);
  132.  
  133.     /*
  134.      * We set this hook up so that we can catch the MSGF_DDEMGR filter
  135.      * which is called when DDEML is in a modal loop during synchronous
  136.      * transaction processing.
  137.      */
  138.     (FARPROC)lpMsgFilterProc = (FARPROC)MakeProcInstance((FARPROC)MyMsgFilterProc, hInst);
  139.     SetWindowsHook(WH_MSGFILTER, (FARPROC)lpMsgFilterProc);
  140.  
  141.     return TRUE;
  142. }
  143.  
  144.  
  145.  
  146. 
  147.