util.c
上传用户:looem2003
上传日期:2014-07-20
资源大小:13733k
文件大小:4k
源码类别:

打印编程

开发平台:

Visual C++

  1. /*++
  2. Copyright (c) 1990-2003 Microsoft Corporation
  3. All Rights Reserved
  4. Module Name:
  5.     util.c
  6. Abstract:
  7.     This module provides all the utility functions for localui.
  8. --*/
  9. #include "precomp.h"
  10. #pragma hdrstop
  11. #include "localui.h"
  12. #include "mem.h"
  13. PWSTR
  14. ConstructXcvName(
  15.     PCWSTR pServerName,
  16.     PCWSTR pObjectName,
  17.     PCWSTR pObjectType
  18.     )
  19. {
  20.     size_t   cchOutput;
  21.     PWSTR   pOut;
  22.     cchOutput = pServerName ? (wcslen(pServerName) + 2) : 1;   /* "\Server," */
  23.     cchOutput += wcslen(pObjectType) + 2;                        /* "\Server,XcvPort _" */
  24.     cchOutput += pObjectName ? wcslen(pObjectName) : 0;      /* "\Server,XcvPort Object_" */
  25.     if (pOut = (PWSTR)AllocSplMem(cchOutput * sizeof (pOut [0]))) {
  26.         if (pServerName) {
  27.             (VOID) StringCchCopy(pOut, cchOutput, pServerName);
  28.             (VOID) StringCchCat (pOut, cchOutput, L"\,");
  29.         }
  30.         else
  31.         {
  32.             (VOID) StringCchCopy (pOut, cchOutput, L",");
  33.         }
  34.         (VOID) StringCchCat (pOut, cchOutput, pObjectType);
  35.         (VOID) StringCchCat (pOut, cchOutput, L" ");
  36.         if (pObjectName)
  37.         {
  38.             (VOID) StringCchCat (pOut, cchOutput, pObjectName);
  39.         }
  40.     }
  41.     return pOut;
  42. }
  43. BOOL
  44. IsCOMPort(
  45.     PCWSTR pPort
  46.     )
  47. {
  48.     //
  49.     // Must begin with szCom
  50.     //
  51.     if ( _wcsnicmp( pPort, szCOM, 3 ) )
  52.     {
  53.         return FALSE;
  54.     }
  55.     //
  56.     // wcslen guarenteed >= 3
  57.     //
  58.     return pPort[ wcslen( pPort ) - 1 ] == L':';
  59. }
  60. BOOL
  61. IsLPTPort(
  62.     PCWSTR pPort
  63.     )
  64. {
  65.     //
  66.     // Must begin with szLPT
  67.     //
  68.     if ( _wcsnicmp( pPort, szLPT, 3 ) )
  69.     {
  70.         return FALSE;
  71.     }
  72.     //
  73.     // wcslen guarenteed >= 3
  74.     //
  75.     return pPort[ wcslen( pPort ) - 1 ] == L':';
  76. }
  77. /* Message
  78.  *
  79.  * Displays a message by loading the strings whose IDs are passed into
  80.  * the function, and substituting the supplied variable argument list
  81.  * using the varargs macros.
  82.  *
  83.  */
  84. INT
  85. WINAPIV
  86. Message(
  87.     HWND    hwnd,
  88.     DWORD   Type,
  89.     INT     CaptionID,
  90.     INT     TextID,
  91.     ...
  92.     )
  93. {
  94.     WCHAR   MsgText[2*MAX_PATH + 1];
  95.     WCHAR   MsgFormat[256];
  96.     WCHAR   MsgCaption[40];
  97.     va_list vargs;
  98.     if( ( LoadString( hInst, TextID, MsgFormat,
  99.                       sizeof MsgFormat / sizeof *MsgFormat ) > 0 )
  100.      && ( LoadString( hInst, CaptionID, MsgCaption,
  101.                       sizeof MsgCaption / sizeof *MsgCaption ) > 0 ) )
  102.     {
  103.         va_start( vargs, TextID );
  104.         (VOID) StringCchVPrintf ( MsgText, COUNTOF(MsgText), MsgFormat, vargs );
  105.         va_end( vargs );
  106.         MsgText[COUNTOF(MsgText) - 1] = L'';
  107.         return MessageBox(hwnd, MsgText, MsgCaption, Type);
  108.     }
  109.     else
  110.     {
  111.         return 0;
  112.     }
  113. }
  114. INT
  115. ErrorMessage(
  116.     HWND hwnd,
  117.     DWORD dwStatus
  118.     )
  119. {
  120.     WCHAR   MsgCaption[MAX_PATH];
  121.     PWSTR   pBuffer = NULL;
  122.     INT     iRet = 0;
  123.     FormatMessage(  FORMAT_MESSAGE_FROM_SYSTEM |
  124.                     FORMAT_MESSAGE_ALLOCATE_BUFFER,
  125.                     NULL,
  126.                     dwStatus,
  127.                     0,
  128.                     (PWSTR) &pBuffer,
  129.                     0,
  130.                     NULL);
  131.     if (pBuffer) {
  132.         if (LoadString( hInst, IDS_LOCALMONITOR, MsgCaption,
  133.                   sizeof MsgCaption / sizeof *MsgCaption) > 0) {
  134.              iRet = MessageBox(hwnd, pBuffer, MsgCaption, MSG_ERROR);
  135.         }
  136.         LocalFree(pBuffer);
  137.     }
  138.     return iRet;
  139. }