⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmnhdr.pas

📁 一本已经绝版的好书
💻 PAS
字号:

// Module name: CmnHdr.h ->> CmnHdr.pas
// Written by: Jeffrey Richter
// Notices: Copyright (c) 1995-1997 Jeffrey Richter
// Translator: 刘麻子, Liu_mazi@126.com

unit CmnHdr;

interface

uses Windows;

function chDIMOF(const A: array of THandle): Integer; overload;
function chDIMOF(const A: array of Char): Integer; overload;
function chDIMOF(const A: array of Byte): Integer; overload;
procedure chFAIL(const szMSG: PChar);
//procedure chASSERT(x: BOOL; const szMSG: PChar);
//procedure chVERIFY(x: BOOL; const szMSG: PChar);
procedure chMB(const szText: PChar; const szTitle: PChar = nil; uType: UINT = MB_OK);
procedure chSETDLGICONS(hWnd: HWND; idiLarge, idiSmall: HICON);
procedure chINITSTRUCT(var pStruct; nStruct: Integer; fInitSize: BOOL);
procedure chWARNIFUNICODEUNDERWIN95();

implementation

uses Messages;

  // 字符数组长度
function chDIMOF(const A: array of THandle): Integer;
begin
  Result := High(A) - Low(A) + 1;
end;

  // 字符数组长度
function chDIMOF(const A: array of Char): Integer;
begin
  Result := High(A) - Low(A) + 1;
end;

  // 字节数组长度
function chDIMOF(const A: array of Byte): Integer;
begin
  Result := High(A) - Low(A) + 1;
end;

  // 效验检测函数
procedure chFAIL(const szMSG: PChar);
begin
  MessageBox(GetActiveWindow(), szMSG, 'Assertion Failed', MB_OK or MB_ICONERROR);
  DebugBreak();
  // Halt();
end;

procedure chASSERT(x: BOOL; const szMSG: PChar);
begin
  if (x = FALSE) then chFAIL(szMSG);
  // Assert();
end;

procedure chVERIFY(x: BOOL; const szMSG: PChar);
asm
  JMP chASSERT
  // chASSERT(x, szMSG);  
end;

  // 提示对话框
procedure chMB(const szText: PChar; const szTitle: PChar = nil; uType: UINT = MB_OK);
var
  szTMP: array[0..MAX_PATH] of Char;
begin
  if (szTitle = nil) then
  begin
    GetModuleFileName(0, szTMP, chDIMOF(szTMP));
    MessageBox(GetActiveWindow(), szText, szTMP, uType)
  end else
    MessageBox(GetActiveWindow(), szText, szTitle, uType);
end;

  // 对话框图标
procedure chSETDLGICONS(hWnd: HWND; idiLarge, idiSmall: HICON);
var
  VerInfo: TOSVersionInfo;
begin
  chINITSTRUCT(VerInfo, SizeOf(VerInfo), TRUE);
  GetVersionEx(VerInfo);

  if (VerInfo.dwPlatformId = VER_PLATFORM_WIN32_NT) and
     (VerInfo.dwMajorVersion <= 3) and
     (VerInfo.dwMinorVersion <= 51) then
  begin
    SetClassLong(hWnd, GCL_HICON, LoadIcon(HInstance, MakeIntResource(idiLarge)));
  end else
  begin
    SendMessage(hWnd, WM_SETICON, ICON_BIG, LoadIcon(HInstance, MakeIntResource(idiLarge)));
    SendMessage(hwnd, WM_SETICON, ICON_SMALL, LoadIcon(HInstance, MakeIntResource(idiSmall)));
  end;
end;

  // 初始化结构
procedure chINITSTRUCT(var pStruct; nStruct: Integer; fInitSize: BOOL);
begin
  ZeroMemory(@pStruct, nStruct);
  if fInitSize then PInteger(@pStruct)^ := nStruct else PInteger(@pStruct)^ := 0;
end;

  // Unicode警告
procedure chWARNIFUNICODEUNDERWIN95();
begin
{$IFDEF UNICODE}
  if (GetWindowsDirectoryW(nil, 0) <= 0) then
    MessageBoxA(0, 'This operating system doesn''t support Unicode.', nil, MB_OK);
{$ENDIF}
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -