MISC.C
上传用户:woweijixie
上传日期:2018-12-11
资源大小:131k
文件大小:4k
源码类别:

TAPI编程

开发平台:

Visual C++

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE:   misc.c
  9. //
  10. //  PURPOSE:  Contains all helper functions "global" to the application.
  11. //
  12. //  FUNCTIONS:
  13. //    CenterWindow - Center one window over another.
  14. //    CmdStub      - Handles unimplemented commands. 
  15. //                   Demonstrates the statusbar updating. 
  16. //
  17. //  COMMENTS:
  18. //
  19. #include <windows.h>            // required for all Windows applications
  20. #include <windowsx.h>
  21. #include "globals.h"            // prototypes specific to this application
  22. #include "statbar.h"
  23. //
  24. //  FUNCTION: CenterWindow(HWND, HWND)
  25. //
  26. //  PURPOSE:  Center one window over another.
  27. //
  28. //  PARAMETERS:
  29. //    hwndChild - The handle of the window to be centered.
  30. //    hwndParent- The handle of the window to center on.
  31. //
  32. //  RETURN VALUE:
  33. //
  34. //    TRUE  - Success
  35. //    FALSE - Failure
  36. //
  37. //  COMMENTS:
  38. //
  39. //    Dialog boxes take on the screen position that they were designed
  40. //    at, which is not always appropriate. Centering the dialog over a
  41. //    particular window usually results in a better position.
  42. //
  43. BOOL CenterWindow(HWND hwndChild, HWND hwndParent)
  44. {
  45.     RECT    rcChild, rcParent;
  46.     int     cxChild, cyChild, cxParent, cyParent;
  47.     int     cxScreen, cyScreen, xNew, yNew;
  48.     HDC     hdc;
  49.     // Get the Height and Width of the child window
  50.     GetWindowRect(hwndChild, &rcChild);
  51.     cxChild = rcChild.right - rcChild.left;
  52.     cyChild = rcChild.bottom - rcChild.top;
  53.     // Get the Height and Width of the parent window
  54.     GetWindowRect(hwndParent, &rcParent);
  55.     cxParent = rcParent.right - rcParent.left;
  56.     cyParent = rcParent.bottom - rcParent.top;
  57.     // Get the display limits
  58.     hdc = GetDC(hwndChild);
  59.     cxScreen = GetDeviceCaps(hdc, HORZRES);
  60.     cyScreen = GetDeviceCaps(hdc, VERTRES);
  61.     ReleaseDC(hwndChild, hdc);
  62.     // Calculate new X position, then adjust for screen
  63.     xNew = rcParent.left + ((cxParent - cxChild) / 2);
  64.     if (xNew < 0)
  65.     {
  66.         xNew = 0;
  67.     }
  68.     else if ((xNew + cxChild) > cxScreen)
  69.     {
  70.         xNew = cxScreen - cxChild;
  71.     }
  72.     // Calculate new Y position, then adjust for screen
  73.     yNew = rcParent.top  + ((cyParent - cyChild) / 2);
  74.     if (yNew < 0)
  75.     {
  76.         yNew = 0;
  77.     }
  78.     else if ((yNew + cyChild) > cyScreen)
  79.     {
  80.         yNew = cyScreen - cyChild;
  81.     }
  82.     // Set it, and return
  83.     return SetWindowPos(hwndChild,
  84.                         NULL,
  85.                         xNew, yNew,
  86.                         0, 0,
  87.                         SWP_NOSIZE | SWP_NOZORDER);
  88. }
  89. //
  90. //  FUNCTION: CmdStub(HWND, WORD, WORD, HWND)
  91. //
  92. //  PURPOSE:  Display statusbar updates by calling UpdateStatusBar
  93. //
  94. //  PARAMETERS:
  95. //    hwnd     - The window.
  96. //    wCommand - Menu command ID
  97. //    wNotify  - Notification number (unused)
  98. //    hwndCtrl - NULL (unused)
  99. //
  100. //  RETURN VALUE:
  101. //    Always returns 0 - command handled.
  102. //
  103. //  COMMENTS:
  104. //    Assumes there is a resource string describing this command with the
  105. //    same ID as the command ID.  Loads the string and calls UpdateStatusBar
  106. //    to put the string into main pane of the status bar.
  107. //
  108. LRESULT CmdStub(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl) 
  109. {
  110.     char szBuffer[50];   
  111.     int  cbWritten = 0;
  112.     cbWritten = LoadString(hInst, wCommand, szBuffer, sizeof(szBuffer)); 
  113.     if(cbWritten == 0) 
  114.     {
  115.         lstrcpy(szBuffer, "Unknown Command");
  116.         UpdateStatusBar(szBuffer, 0, 0);
  117.     }
  118.     else
  119.     { 
  120.         UpdateStatusBar(szBuffer, 0, 0);
  121.         MessageBox (hwnd, 
  122.                     "Command Not Implemented:rn Demonstration Purposes Only", 
  123.                     "TAPICOMM",
  124.                     MB_OK | MB_ICONEXCLAMATION);
  125.     }
  126.      /*
  127.       * Once the command is executed, set the statusbar text to 
  128.       * original text.
  129.       */
  130.     UpdateStatusBar(SZDESCRIPTION, 0, 0);
  131.     return 0;
  132. }