Ignore:
Timestamp:
Feb 6, 2000, 6:39:35 PM (26 years ago)
Author:
cbratschi
Message:

ported WinHelpA from WINE

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/user32.cpp

    r2631 r2668  
    1 /* $Id: user32.cpp,v 1.68 2000-02-03 23:29:53 sandervl Exp $ */
     1/* $Id: user32.cpp,v 1.69 2000-02-06 17:39:33 cbratschi Exp $ */
    22
    33/*
     
    10881088BOOL WIN32API WinHelpA( HWND hwnd, LPCSTR lpszHelp, UINT uCommand, DWORD  dwData)
    10891089{
    1090 #ifdef DEBUG
    1091     WriteLog("USER32:  WinHelp not implemented %s\n", lpszHelp);
    1092 #endif
    1093 //    hwnd = Win32Window::Win32ToOS2Handle(hwnd);
    1094 //    return O32_WinHelp(arg1, arg2, arg3, arg4);
    1095 
    1096     return(TRUE);
    1097 }
    1098 //******************************************************************************
    1099 //******************************************************************************
    1100 BOOL WIN32API WinHelpW( HWND arg1, LPCWSTR arg2, UINT arg3, DWORD  arg4)
    1101 {
    1102  char *astring = UnicodeToAsciiString((LPWSTR)arg2);
    1103  BOOL  rc;
    1104 
    1105 #ifdef DEBUG
    1106     WriteLog("USER32:  WinHelpW\n");
    1107 #endif
    1108     rc = WinHelpA(arg1, astring, arg3, arg4);
    1109     FreeAsciiString(astring);
    1110     return rc;
     1090  static WORD WM_WINHELP = 0;
     1091  HWND hDest;
     1092  LPWINHELP lpwh;
     1093  HGLOBAL hwh;
     1094  HINSTANCE winhelp;
     1095  int size,dsize,nlen;
     1096
     1097  dprintf(("USER32:  WinHelpA %s\n", lpszHelp));
     1098
     1099  if(!WM_WINHELP)
     1100  {
     1101    WM_WINHELP=RegisterWindowMessageA("WM_WINHELP");
     1102    if(!WM_WINHELP)
     1103      return FALSE;
     1104  }
     1105
     1106  hDest = FindWindowA( "MS_WINHELP", NULL );
     1107  if(!hDest)
     1108  {
     1109    if(uCommand == HELP_QUIT)
     1110      return TRUE;
     1111    else
     1112      winhelp = WinExec ( "winhlp32.exe -x", SW_SHOWNORMAL );
     1113    if ( winhelp <= 32 ) return FALSE;
     1114    if ( ! ( hDest = FindWindowA ( "MS_WINHELP", NULL ) )) return FALSE;
     1115  }
     1116
     1117  switch(uCommand)
     1118  {
     1119    case HELP_CONTEXT:
     1120    case HELP_SETCONTENTS:
     1121    case HELP_CONTENTS:
     1122    case HELP_CONTEXTPOPUP:
     1123    case HELP_FORCEFILE:
     1124    case HELP_HELPONHELP:
     1125    case HELP_FINDER:
     1126    case HELP_QUIT:
     1127      dsize=0;
     1128      break;
     1129
     1130    case HELP_KEY:
     1131    case HELP_PARTIALKEY:
     1132    case HELP_COMMAND:
     1133      dsize = strlen( (LPSTR)dwData )+1;
     1134      break;
     1135
     1136    case HELP_MULTIKEY:
     1137      dsize = ((LPMULTIKEYHELP)dwData)->mkSize;
     1138      break;
     1139
     1140    case HELP_SETWINPOS:
     1141      dsize = ((LPHELPWININFO)dwData)->wStructSize;
     1142      break;
     1143
     1144    default:
     1145      //WARN("Unknown help command %d\n",wCommand);
     1146      return FALSE;
     1147  }
     1148  if(lpszHelp)
     1149    nlen = strlen(lpszHelp)+1;
     1150  else
     1151    nlen = 0;
     1152  size = sizeof(WINHELP) + nlen + dsize;
     1153  hwh = GlobalAlloc(0,size);
     1154  lpwh = (WINHELP*)GlobalLock(hwh);
     1155  lpwh->size = size;
     1156  lpwh->command = uCommand;
     1157  lpwh->data = dwData;
     1158  if(nlen)
     1159  {
     1160    strcpy(((char*)lpwh) + sizeof(WINHELP),lpszHelp);
     1161    lpwh->ofsFilename = sizeof(WINHELP);
     1162  } else
     1163      lpwh->ofsFilename = 0;
     1164  if(dsize)
     1165  {
     1166    memcpy(((char*)lpwh)+sizeof(WINHELP)+nlen,(LPSTR)dwData,dsize);
     1167    lpwh->ofsData = sizeof(WINHELP)+nlen;
     1168  } else
     1169      lpwh->ofsData = 0;
     1170  GlobalUnlock(hwh);
     1171
     1172  return SendMessageA(hDest,WM_WINHELP,hwnd,hwh);
     1173}
     1174//******************************************************************************
     1175//******************************************************************************
     1176BOOL WIN32API WinHelpW( HWND hwnd, LPCWSTR lpszHelp, UINT uCommand, DWORD  dwData)
     1177{
     1178  char *astring = UnicodeToAsciiString((LPWSTR)lpszHelp);
     1179  BOOL  rc;
     1180
     1181  dprintf(("USER32:  WinHelpW\n"));
     1182
     1183  rc = WinHelpA(hwnd,astring,uCommand,dwData);
     1184  FreeAsciiString(astring);
     1185
     1186  return rc;
    11111187}
    11121188
     
    15941670}
    15951671
    1596 /* Button Functions */
    1597 
    1598 BOOL WIN32API CheckRadioButton( HWND hDlg, UINT nIDFirstButton, UINT nIDLastButton, UINT  nIDCheckButton)
    1599 {
    1600 #ifdef DEBUG
    1601     WriteLog("USER32:  CheckRadioButton\n");
    1602 #endif
    1603     //CB: check radio buttons in interval
    1604     if (nIDFirstButton > nIDLastButton)
    1605     {
    1606       SetLastError(ERROR_INVALID_PARAMETER);
    1607       return (FALSE);
    1608     }
    1609 
    1610     for (UINT x = nIDFirstButton;x <= nIDLastButton;x++)
    1611     {
    1612      SendDlgItemMessageA(hDlg,x,BM_SETCHECK,(x == nIDCheckButton) ? BST_CHECKED : BST_UNCHECKED,0);
    1613     }
    1614 
    1615     return (TRUE);
    1616 }
    1617 
    16181672/* Window Functions */
    16191673
     
    16421696}
    16431697
    1644 //******************************************************************************
    1645 //******************************************************************************
    16461698/*****************************************************************************
    16471699 * Name      : BOOL WIN32API PaintDesktop
     
    17031755}
    17041756
    1705 /* Message and Message Queue Functions */
    1706 
    1707 
    1708 /* Device Context Functions */
    1709 
    1710 
    17111757/* Window Station and Desktop Functions */
     1758
    17121759/*****************************************************************************
    17131760 * Name      : HDESK WIN32API GetThreadDesktop
     
    25012548}
    25022549
    2503 /* Hook Functions */
    2504 
    2505 /* CB: move to MDI */
    2506 
    25072550/* Drag'n'drop */
    25082551
Note: See TracChangeset for help on using the changeset viewer.