示例#1
0
文件: HEFTest.c 项目: komh/hanedit2
MRESULT mainwmPaint(HWND hwnd,MPARAM mp1,MPARAM mp2)
{
HPS hps;
RECTL rectlEntire,rectlUpdate;
char str[203];

	hps=WinBeginPaint(hwnd, NULLHANDLE, &rectlUpdate);
#ifdef DEBUG
	assert(hps!=NULLHANDLE);
#endif
	if (hps==NULLHANDLE) return 0;

	WinQueryWindowRect(hwnd,&rectlEntire);

	GpiSetBackMix(hps,BM_OVERPAINT);

	WinQueryWindowText(hwndHEF1,201,str);
//	printf("%d\n",strlen(str));
	strcat(str,"  ");
	HanOut(hps,0,100,str);
	WinQueryWindowText(hwndHEF2,201,str);
	strcat(str,"  ");
	HanOut(hps,0,80,str);

	WinEndPaint(hps);
	return 0L;
}
示例#2
0
 static USHORT setControlPos(HWND hwnd, USHORT x, USHORT y, USHORT ySize)
 {
    char   buffer[0x0100];
    POINTL aptl[TXTBOX_COUNT];
    HPS    hps;

    ULONG  flag        = SWP_SIZE;

    WinQueryWindowText(hwnd,0xFF,buffer);
    *(buffer+0xFF) = 0;

    hps = WinGetPS(hwnd);

    GpiQueryTextBox(      hps,
                          strlen(buffer),
                          (char *) buffer,
                          TXTBOX_COUNT,
                          aptl);
    WinReleasePS(hps);

    if(x != 0xFFFF && y != 0xFFFF)
       flag |= SWP_MOVE|SWP_SHOW;

    WinSetWindowPos(hwnd, 0, x, y, aptl[TXTBOX_TOPRIGHT].x, ySize, flag);

    return x+aptl[TXTBOX_TOPRIGHT].x;

 }
// Message - сообщение.
VOID Log_PrintLogMessage( PCHAR Message )
{
 // Отводим память для текста.
 PCHAR Window_text = NULL; INT Length = 65536;
 if( DosAllocMem( (PPVOID) &Window_text, Length, PAG_ALLOCATE ) != NO_ERROR ) return;

 // Узнаем текст в поле ввода.
 HWND Field = Log_LogWindow(); WinQueryWindowText( Field, Length, Window_text );

 // Добавляем сообщение в поле ввода.
 strcat( Window_text, Message ); strcat( Window_text, "\n" );

 WinEnableWindowUpdate( Field, 0 );
 WinSetWindowText( Field, Window_text );
 WinEnableWindowUpdate( Field, 1 );

 // Освобождаем память.
 DosFreeMem( Window_text ); Window_text = NULL;

 // Запоминаем, что поле ввода изменено.
 Log.RTSettings.Field_is_changed = 1;

 // Возврат.
 return;
}
示例#4
0
文件: dlg.c 项目: komh/hanedit2
void dlgFind_Find(HWND hwnd)
{
HWND hwndFind = WinWindowFromID(hwnd,IDHEF_FIND);
HWND hwndCaseSens = WinWindowFromID(hwnd,IDB_CASESENSITIVE);

MLE_SEARCHDATA searchData;
ULONG ulStyle = 0;
int findLen=0;
char *findStr = NULL;

    findLen = WinQueryWindowTextLength(hwndFind);
    findStr = malloc(findLen+1);
#ifdef DEBUG
    assert(findStr!=NULL);
#endif
    if (findStr==NULL) return;
    WinQueryWindowText(hwndFind,findLen+1,findStr);

    searchData.cb = sizeof(searchData);
    searchData.pchFind = findStr;
    searchData.pchReplace = NULL;
    searchData.iptStart = -1;
    searchData.iptStop = -1;
    ulStyle = MLFSEARCH_SELECTMATCH;
    if (WinSendMsg(hwndCaseSens,BM_QUERYCHECK,0,0))
        ulStyle |= MLFSEARCH_CASESENSITIVE;
    dlgFind_SetFound(hwnd,(int) WinSendMsg(hwndHMLE,HMLM_SEARCH,MPFROMLONG(ulStyle),&searchData));
    free(findStr);
}
示例#5
0
MRESULT clbQueryWparms(PCLBOX pclb, PWNDPARAMS pwpm) {
   // parametri presentazione: usa procedura default
   if (isOrdWndParm(pwpm->fsStatus))
      return(WinDefWindowProc(pclb->hwnd, WM_QUERYWINDOWPARAMS,
                              (MPARAM)pwpm, MPVOID));
   // testo finestra
   if (pwpm->fsStatus & WPM_TEXT) {
      if (pclb->fl & CLBXS_CHECK && pclb->hchk) {
         WinQueryWindowText(pclb->hchk, pwpm->cchText, pwpm->pszText);
      } else if (pclb->cbtxt) {
         memcpy((PVOID)pwpm->pszText, (PVOID)pclb->psz,
                min(pwpm->cchText, pclb->cbtxt) + 1);
      } else {
         if (pwpm->cchText) *(pwpm->pszText) = '\0';
      } /* endif */
   } /* endif */
   // lunghezza testo finestra
   if (pwpm->fsStatus & WPM_CCHTEXT) {
      if (pclb->fl & CLBXS_CHECK && pclb->hchk)
         pwpm->cchText = (pclb->fl & CLBXS_CHECK && pclb->hchk)?
                         WinQueryWindowTextLength(pclb->hchk): pclb->cbtxt;
   } /* endif */
   if (pwpm->fsStatus & WPM_CTLDATA) {
      if (pwpm->cbCtlData < sizeof(CLBOXCDATA)) return (MRESULT)FALSE;
      ((PCLBOXCDATA)pwpm->pCtlData)->cb =  sizeof(CLBOXCDATA);
      ((PCLBOXCDATA)pwpm->pCtlData)->cch = pclb->cchef;
   } /* endif */
   if (pwpm->fsStatus & WPM_CBCTLDATA) {
      pwpm->cbCtlData = sizeof(CLBOXCDATA);
   } /* endif */
   return (MRESULT)TRUE;
}
BYTE Krnl_Environment_StartupCmdIsPresent( VOID )
{
 // Перебираем окна в окне рабочего стола.
 HENUM Enumeration = WinBeginEnumWindows( QueryDesktopWindow() ); HWND Window = NULLHANDLE;
 while( ( Window = WinGetNextWindow( Enumeration ) ) != NULLHANDLE )
  {
   // Если это не окно рамки - продолжаем перебор окон.
   if( !IsFrameWindow( Window ) ) continue;

   // Если это текстовое окно - проверяем его заголовок.
   if( IsVIOWindow( Window ) )
    {
     // Узнаем заголовок окна.
     CHAR Title[ SIZE_OF_TITLE ] = ""; WinQueryWindowText( WinWindowFromID( Window, FID_TITLEBAR ), SIZE_OF_TITLE, Title );

     // Если в нем встречается слово "Startup":
     if( stristr( "Startup", Title ) )
      {
       // Завершаем перебор окон.
       WinEndEnumWindows( Enumeration );

       // Окно присутствует, возврат.
       return 1;
      }
    }
  }
 WinEndEnumWindows( Enumeration );

 // Возврат.
 return 0;
}
示例#7
0
BOOL OpenPort(THREAD *pstThd)
  {
  ULONG ulAction;
  APIRET rc;
  CHAR szMsgString[200];
  CHAR szCaption[80];

  if ((rc = DosOpen(pstThd->stCfg.szPortName,&pstThd->hCom,&ulAction,0L,0,0x0001,0x21c2,0L)) != 0)
    {
    WinQueryWindowText(pstThd->hwndFrame,sizeof(szCaption),szCaption);
//    WinLoadString(pstThd->habAnchorBlk,NUL,EATM_DOSOPEN,
//                  sizeof(szMsgString),szMsgString);
    sprintf(szMsgString,"Error opening %s\nError Code = %04X",pstThd->stCfg.szPortName,rc);

    WinMessageBox( HWND_DESKTOP,
                   pstThd->hwndDlg,
                   (PSZ)szMsgString,
                   (PSZ)szCaption,
                   NUL,
                   MB_MOVEABLE | MB_OK | MB_CUAWARNING );
    pstThd->hCom = 0;
    return(FALSE);
    }
  return(TRUE);
  }
示例#8
0
文件: HMLEdit.c 项目: komh/hanedit2
ULONG HEFind(HWND hwnd)
{
static char findStr[ 256 ] = { 0, };
static char replaceStr[ 256 ] = { 0, };

ULONG ulrc;
HWND hwndDlg;
HWND hwndFind;
HWND hwndReplace;
//char str[255];
//int hanmode,kbdtype;

    hwndDlg = WinLoadDlg(HWND_DESKTOP,hwnd,&HEFindDlgProc,NULLHANDLE,IDD_FIND,NULL);
    hwndFind = WinWindowFromID( hwndDlg, IDHEF_FIND );
    hwndReplace = WinWindowFromID( hwndDlg, IDHEF_REPLACE );

    WinSetWindowText( hwndFind, findStr );
//    WinSendMsg( hwndFind, HEM_SETSEL, MPFROM2SHORT( 0, strlen( findStr )), 0 );
//    WinSendMsg( hwndFind, HEM_REFRESH, 0, 0 );
    WinSetWindowText( hwndReplace, replaceStr );
//    WinSendMsg( hwndReplace, HEM_SETSEL,
//                MPFROM2SHORT( strlen( replaceStr ), strlen( replaceStr )), 0 );
//    WinSendMsg( hwndReplace, HEM_REFRESH, 0, 0 );

    WinSetFocus(HWND_DESKTOP,WinWindowFromID(hwndDlg, DID_OK ));

    ulrc = WinProcessDlg(hwndDlg);

//  if (ulrc == DID_OK)
//    {
//    }

    WinQueryWindowText( hwndFind, sizeof( findStr ), findStr );
    WinQueryWindowText( hwndReplace, sizeof( replaceStr ), replaceStr );

    WinDestroyWindow(hwndDlg);

//  hanmode = (int)WinSendMsg(hwndHMLE,HMLM_QUERYHANINPUTMODE,0,0);
//  kbdtype = (int)WinSendMsg(hwndHMLE,HMLM_QUERYKBDTYPE,0,0);

//  WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANMODE,MPFROMLONG(hanmode),0L);
//  WinPostMsg(hwndStatbar,STATBAR_USERM_SETKBDTYPE,MPFROMLONG(kbdtype),0L);

    WinSetFocus(HWND_DESKTOP,hwndHMLE);
    return 0L;
}
示例#9
0
MRESULT clbCommand(PCLBOX pclb, ULONG id) {
   HWND hOwner = WinQueryWindow(pclb->hwnd, QW_OWNER);
   SHORT i = 0;
   PSZ psz;
   switch (id) {
      case FID_ADD:
         // alloca buffer per testo entryfield
         if (!(psz = (PSZ)malloc(pclb->cchef + 1))) break;
         WinQueryWindowText(pclb->hentry, pclb->cchef + 1, psz);
         if (!WinSendMsg(hOwner, WM_CONTROL,
                         MPFROM2SHORT(pclb->id, CLBXN_ADD), (MPARAM)psz)) {
            SHORT ins;
            // controlla che la stringa non sia gi… presente
            if (pclb->fl & CLBXS_NODUP &&
                LIT_NONE != (SHORT)pclb->pflbx(pclb->hlbx, LM_SEARCHSTRING,
                                               MPFROM2SHORT(0, LIT_FIRST),
                                               (MPARAM)psz)) {
               free(psz);                         
               break;
            } // end if
            // se stile lo richiede converte stringa in uppercase
            if (pclb->fl & CLBXS_INSUPPER) WinUpper(pclb->hab, 0, 0, psz);
            // setta flag inserzione secondo stile
            if (pclb->fl & CLBXS_INSSORTUP) i = LIT_SORTASCENDING;
            else if (pclb->fl & CLBXS_INSSORTDN) i = LIT_SORTDESCENDING;
            else if (pclb->fl & CLBXS_INSEND) i = LIT_END;
            ins = (SHORT)pclb->pflbx(pclb->hlbx, LM_INSERTITEM,
                                     (MPARAM)i, (MPARAM)psz);
            WinSetWindowText(pclb->hentry, "");
            WinSendMsg(hOwner, WM_CONTROL,
                       MPFROM2SHORT(pclb->id, CLBXN_ADDED), (MPARAM)ins);
         } // end if
         free(psz);
         break;
      case FID_REMOVE:
         i = (SHORT)pclb->pflbx(pclb->hlbx, LM_QUERYSELECTION,
                                (MPARAM)LIT_FIRST, MPVOID);
         if (!WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_REM),
                         (MPARAM)i)) {
            while (i >= 0) {
               pclb->pflbx(pclb->hlbx, LM_DELETEITEM, (MPARAM)i, MPVOID);
               i = (SHORT)pclb->pflbx(pclb->hlbx, LM_QUERYSELECTION,
                                      (MPARAM)LIT_FIRST, MPVOID);
            } /* end while */
         } /* end if */
         pclb->is.remon = 0;
         WinEnableWindow(pclb->hrem, FALSE);
         break;
      case FID_FIND:
         WinSendMsg(hOwner, WM_CONTROL, MPFROM2SHORT(pclb->id, CLBXN_FIND),
                    (MPARAM)pclb->hwnd);
         break;
   } /* endswitch */
   return (MRESULT)FALSE;
}
示例#10
0
void CPlugin::getLogFileName(PSZ szLogFileName, int iSize)
{
  if(getMode() == NP_EMBED)
  {
    char sz[256];
    getModulePath(szLogFileName, iSize);
    WinQueryWindowText(WinWindowFromID(m_hWnd, IDC_EDIT_LOG_FILE_NAME), sizeof(sz), sz);
    strcat(szLogFileName, sz);
  }
  else
    CPluginBase::getLogFileName(szLogFileName, iSize);
}
示例#11
0
char *get_window_name (void)
{
    char     buffer[1024];
    int      n;

    buffer[0] = '\0';
    create_pm ();
    n = WinQueryWindowText (hwnd0, sizeof (buffer), buffer);
    destroy_pm ();
    
    if (n <= 0 || buffer[0] == '\0') return strdup (" ");
    return strdup (buffer);
}
示例#12
0
static  void    getEncode(HWND hwndDlg)
{
    HWND    hwnd = WinWindowFromID(hwndDlg, IDD_OPT_ENCODE) ;
    UCHAR   name[64] ;
    ENCPTR  p ;

    WinQueryWindowText(hwnd, 64, name) ;

    for (p = tabEncode ; p->str != NULL ; p++) {
        if (strcmp(name, p->str) == 0) {
            SessPreferredEncoding = p->enc ;
            return ;
        }
    }
}
示例#13
0
static  void    getFormat(HWND hwndDlg)
{
    HWND    hwnd = WinWindowFromID(hwndDlg, IDD_OPT_FORMAT) ;
    UCHAR   name[64] ;
    FMTPTR  p ;

    WinQueryWindowText(hwnd, 64, name) ;

    for (p = tabFormat ; p->str != NULL ; p++) {
        if (strcmp(name, p->str) == 0) {
            SessPixelFormat = p->fmt ;
            return ;
        }
    }
}
示例#14
0
文件: dlg.c 项目: komh/hanedit2
int dlgFind_SetButtonFocus(HWND hwnd)
{
HWND hwndBtnFind = WinWindowFromID(hwnd,IDB_FIND);
HWND hwndBtnReplace = WinWindowFromID(hwnd,IDB_REPLACE);
HWND hwndBtnReplaceFind = WinWindowFromID(hwnd,IDB_REPLACEFIND);
HWND hwndBtnReplaceAll = WinWindowFromID(hwnd,IDB_REPLACEALL);
HWND hwndBtnClose = WinWindowFromID(hwnd,DID_OK);
HWND hwndFocus;

HWND hwndFind = WinWindowFromID(hwnd,IDHEF_FIND);
int findLen=0;
char *findStr = NULL;

    findLen = WinQueryWindowTextLength(hwndFind);
//  findLen = (int)WinSendMsg(hwndFind,HEM_QUERYTEXTLENGTH,0,0);
    findStr = malloc(findLen+1);
#ifdef DEBUG
    assert(findStr!=NULL);
#endif
    if (findStr==NULL) return 0;
    WinQueryWindowText(hwndFind,findLen+1,findStr);
//  WinSendMsg(hwndFind,HEM_QUERYTEXT,findStr,0);

    hwndFocus = WinQueryFocus(HWND_DESKTOP);
    if ((hwndFocus!=hwndBtnFind)&&
        (hwndFocus!=hwndBtnReplace)&&
        (hwndFocus!=hwndBtnReplaceFind)&&
        (hwndFocus!=hwndBtnReplaceAll)&&
        (hwndFocus!=hwndBtnClose))
        {
        if (strlen(findStr)>0)
            {
            WinEnableWindow(hwndBtnFind,TRUE);
            WinSendMsg(hwndBtnFind,BM_SETDEFAULT,MPFROMLONG(TRUE),0);
            WinSendMsg(hwndBtnClose,BM_SETDEFAULT,MPFROMLONG(FALSE),0);
            } else {
            WinEnableWindow(hwndBtnFind,FALSE);
            dlgFind_SetFound(hwnd,FALSE);
            WinSendMsg(hwndBtnFind,BM_SETDEFAULT,MPFROMLONG(FALSE),0);
            WinSendMsg(hwndBtnClose,BM_SETDEFAULT,MPFROMLONG(TRUE),0);
            }
        return TRUE;
        }
    return FALSE;
}
示例#15
0
static  BOOL    getServer(HWND hwndDlg)
{
//    HAB     hab  = WinQueryAnchorBlock(hwndDlg) ;
    HWND    hwnd = WinWindowFromID(hwndDlg, IDD_SHOST) ;
    UCHAR   server[128] ;

    WinQueryWindowText(hwnd, 128, server) ;

    if (strlen(server) == 0) {
        return FALSE ;
    }
    if (strchr(server, ':') == NULL) {
        return FALSE ;
    }
    loadParam(server) ;

    return TRUE ;
}
示例#16
0
文件: dlg.c 项目: komh/hanedit2
void dlgFind_Replace(HWND hwnd,int findNext)
{
HWND hwndReplace = WinWindowFromID(hwnd,IDHEF_REPLACE);

int replaceLen=0;
char *replaceStr = NULL;
USHORT minIpt,maxIpt;
ULONG ret;

    if (!dlgFind_found)
        {
        dlgFind_Find(hwnd);
        return;
        }
    ret = (ULONG)WinSendMsg(hwndHMLE,HMLM_QUERYSEL,MPFROMLONG(HMLFQS_MINMAXSEL),0);
    minIpt = ret >> 16;
    maxIpt = ret & 0xFFFF;

    if (minIpt==maxIpt) return;

    replaceLen = WinQueryWindowTextLength(hwndReplace);
    replaceStr = malloc(replaceLen+1);
#ifdef DEBUG
    assert(replaceStr!=NULL);
#endif
    if (replaceStr==NULL) return;
    WinQueryWindowText(hwndReplace,replaceLen+1,replaceStr);
    WinSendMsg(hwndHMLE,HMLM_INSERT,replaceStr,0);

    free(replaceStr);
    if (findNext)
        dlgFind_Find(hwnd);
        else
        dlgFind_SetFound(hwnd,FALSE);
    return;
}
MRESULT EXPENTRY fnConfigDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  HWND hwndOwner;
  SWP swpDlg, swpOwner;
  POINTL ptlTemp;
  ConfigDlgInitParams_p pCfgDlgInit;

  switch (msg)
  {
    case WM_INITDLG:
      // Store window instance data pointer in window words
      WinSetWindowULong(hwnd, QWL_USER, (ULONG) mp2);
      pCfgDlgInit = (ConfigDlgInitParams_p) mp2;

      // Set dialog control texts and fonts based on
      // current language
      internal_SetPageFont(hwnd);
      internal_SetConfigDialogText(hwnd, pCfgDlgInit->pchHomeDirectory);

      // Set initial position of dialog window and show it
      WinQueryWindowPos(hwnd, &swpDlg);
      hwndOwner = WinQueryWindow(hwnd, QW_OWNER);
      WinQueryWindowPos(hwndOwner, &swpOwner);
      ptlTemp.x = swpOwner.x; ptlTemp.y = swpOwner.y;
      WinMapWindowPoints(WinQueryWindow(hwndOwner, QW_PARENT), HWND_DESKTOP, &ptlTemp, 1);
      WinSetWindowPos(hwnd, HWND_TOP,
            ptlTemp.x + (swpOwner.cx - swpDlg.cx)/2,
            ptlTemp.y + (swpOwner.cy - swpDlg.cy)/2,
            0, 0, SWP_MOVE | SWP_SHOW);
      //setup the dialog
      WinSendDlgItemMsg(hwnd, EF_TEXT, EM_SETTEXTLIMIT, MPFROMSHORT(256), NULL);
      WinSetWindowText(WinWindowFromID(hwnd, EF_TEXT), pCfgDlgInit->pchText);
      internal_AdjustConfigDialogControls(hwnd);
     return (MRESULT) FALSE;

    case WM_COMMAND:
        switch (SHORT1FROMMP(mp1)) {
          case PB_CONFOK:
            pCfgDlgInit = (ConfigDlgInitParams_p) WinQueryWindowULong(hwnd, QWL_USER);
            if (pCfgDlgInit) {
               char buff[255];
               buff[0]= '\0';
               WinQueryWindowText(WinWindowFromID(hwnd, EF_TEXT), 248, &buff);
               strcpy(pCfgDlgInit->pchText, buff);
               /*AddLog(buff);
               AddLog(pCfgDlgInit->pchText);*/

            }
          break;

          case PB_CONFCANCEL:
            // restore the old image
            pCfgDlgInit = (ConfigDlgInitParams_p) WinQueryWindowULong(hwnd, QWL_USER);
            if (pCfgDlgInit) {
            }
          break;
        }
    break;

    default:
      break;
  }
  return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
MRESULT EXPENTRY Dlg_OutputPage (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{
     switch( msg )
     {
     case WM_INITDLG:
         {
             HWND path = WinWindowFromID(hwnd,OUT_PATH);
             HWND max  = WinWindowFromID(hwnd,OUT_MB);
             WinSendMsg(path,EM_SETTEXTLIMIT,MPFROM2SHORT(1024,TRUE),MPFROM2SHORT(0,TRUE));
             WinSendMsg(max,EM_SETTEXTLIMIT,MPFROM2SHORT(6,TRUE),MPFROM2SHORT(0,TRUE));
             
             WinSetWindowText(path,p_config->getBaseDir());
             char *num_str = new char[1024];
             sprintf(num_str,"%d",p_config->getMaxDownload());
             WinSetWindowText(max,num_str);
             delete[] num_str;
         }
         break;

     case WM_CLOSE:
         {
             char *buffer = new char[1024];
             WinQueryWindowText(WinWindowFromID(hwnd,OUT_PATH),1023,buffer);
             lrSpaceTrim(buffer);
             p_config->setBaseDir(buffer);
             
             WinQueryWindowText(WinWindowFromID(hwnd,OUT_MB),1023,buffer);
             ULONG value = atol(buffer);
             p_config->setMaxDownload(value);
             
             delete[] buffer;
         }

	 return 0;	// 06 Mar 01 SHL

     case WM_CONTROL:
         switch(SHORT2FROMMP(mp1))
         {
         case EN_CHANGE:
             {
                 switch (SHORT1FROMMP(mp1))
                 {
                     case OUT_MB:
                     {
                         if (done_already)
                         {
                             done_already = 0;
                             FILE *rego = fopen(szLicensePath,"r");
                             if (rego)
                                 fclose(rego);
                             else
                                 message("Unregistered News Harvest will finish after a random amount < 15 MB");
                         }
                         rego_file_found = 1;
                         char *number_str = new char[1024];
                         WinQueryWindowText(WinWindowFromID(hwnd,OUT_MB),1023,number_str);
                         if (makeDigitsOnly(number_str))
                             WinSetWindowText(WinWindowFromID(hwnd,OUT_MB),number_str);
                         delete[] number_str;
                     }
                 }
             }
         }
         break;
         
     //----------------------------------
     case WM_COMMAND:
          switch( SHORT1FROMMP( mp1 ) )
          {
               case PB_UNDO:
                    // The undo pushbutton has been pressed
                    // The entries should be reset to their last saved values
                    break;
                //----------------------------------
               case PB_DEFAULT:
                    // The default pushbutton has been pressed
                   // The entries should be reset to their default values
                   {
                        HWND path = WinWindowFromID(hwnd,OUT_PATH);
                        HWND max  = WinWindowFromID(hwnd,OUT_MB);
                        WinSetWindowText(path,"C:\\NHOutput\\");
                        WinSetWindowText(max,"0");
                   }

                    break;
                //----------------------------------
          }
          return 0;
     //----------------------------------
     case WM_VALIDATE:
          // Validate the entries
         {
             char *buffer = new char[1024];
             
             WinQueryWindowText(WinWindowFromID(hwnd,OUT_PATH),1023,buffer);
             lrSpaceTrim(buffer);
             if (*buffer != '\0');
             {
                 if (!checkDir(buffer))
                 {
                     message("Output path is not a vailid directory");
                     WinSetWindowText(WinWindowFromID(hwnd,OUT_PATH),buffer);
                     WinFocusChange(HWND_DESKTOP,WinWindowFromID(hwnd,OUT_PATH),0);
                     delete[] buffer;
                     return 0;
                 }
                 WinSetWindowText(WinWindowFromID(hwnd,OUT_PATH),buffer);
             }
             delete[] buffer;
          }
          return (MPARAM) 1; 
     }

     return WinDefDlgProc( hwnd, msg, mp1, mp2 );

}// Dlg_NbkpPage Dialog Procedure
MRESULT EXPENTRY CDSettingsDlgProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
  FILEDLG fd = { 0 };
  char profileName[20];
  static HINI hini;
  ULONG keyLength;
  static  char chrPath[CCHMAXPATH];
  static  char chrOptions[CCHMAXPATH];

  switch( msg )
    {
    case WM_INITDLG:
      {
	WinSendMsg(WinWindowFromID(hwnd,EFID_CDRECORDPATH),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0);
	WinSendMsg(WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)CCHMAXPATH),0);
	WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDPATH),chrCDRecord);
	WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),chrCDROptions);
	sprintf(chrPath,"%s",chrCDRecord);
	sprintf(chrOptions,"%s",chrCDROptions);
	sprintf(profileName,"cdrecord.ini");		
	hini=PrfOpenProfile(WinQueryAnchorBlock(HWND_DESKTOP),profileName);
	if(!hini) {
	  WinMessageBox(  HWND_DESKTOP,
			HWND_DESKTOP,
			"Warning! Cannot open Ini-file!",
			"",
			0UL,
			MB_OK | MB_ICONEXCLAMATION );
	  WinDismissDlg(hwnd,DID_ERROR);
	}/* end of if(!hini) */				
      }
      return (MRESULT) TRUE;
    case WM_DESTROY:
      if(hini)PrfCloseProfile(hini);
      hini=NULLHANDLE;
      break;
    case WM_CLOSE:
      WinDismissDlg(hwnd,DID_ERROR);
      break;
    case WM_COMMAND:
      {			
	switch( SHORT1FROMMP( mp1 ) )
	  {
	  case PBID_CDRECORDBROWSE:
	    fd.cbSize = sizeof( fd );
	    fd.fl = FDS_OPEN_DIALOG|FDS_CENTER;
	    fd.pszTitle = "Search CDRecord/2";
	    sprintf(fd.szFullFile,"%s","*.exe");
	    
	    if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE )
	      {
		break;
	      }
	    if( fd.lReturn == DID_OK )
	      {
		WinSetWindowText( WinWindowFromID(hwnd,EFID_CDRECORDPATH), fd.szFullFile );
		sprintf(chrCDRecord,"%s",fd.szFullFile);
	      }
	    break;
	  case DID_OK:
	    WinQueryWindowText(WinWindowFromID(hwnd,EFID_CDRECORDOPTIONS),sizeof(chrCDROptions),chrCDROptions);
	    if(!PrfWriteProfileString(hini,"CDWriter","cdrecord",chrCDRecord)){
	      WinMessageBox(  HWND_DESKTOP,
			    HWND_DESKTOP,
			    "Warning! Cannot write to Ini-file!",
			    "",
			    0UL,
			    MB_OK | MB_ICONEXCLAMATION );
	      WinDismissDlg(hwnd,DID_ERROR);
	    }
	    
	    if(!PrfWriteProfileString(hini,"CDWriter","cdroptions",chrCDROptions)){
	      WinMessageBox(  HWND_DESKTOP,
			    HWND_DESKTOP,
			    "Warning! Cannot write to Ini-file!",
			    "",
			    0UL,
			    MB_OK | MB_ICONEXCLAMATION );
	      WinDismissDlg(hwnd,DID_ERROR);
	    };
	    WinDismissDlg(hwnd,0);
	    break;
	  case DID_CANCEL:
	    sprintf(chrCDRecord,"%s",chrPath);
	    sprintf(chrCDROptions,"%s",chrOptions);
	    WinDismissDlg(hwnd,1);
	    break;
	    
	  default:
	    break;
	  }
      }
      return (MRESULT) TRUE;      
    }	
  return( WinDefDlgProc( hwnd, msg, mp1, mp2 ) );	
}
示例#20
0
/**********************************************************************
 * Function: TgtSelDlgProc
 * Info    : dialog event handler for target file selection
 * Result  : TRUE or FALSE
 **********************************************************************/
MRESULT EXPENTRY TgtSelDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{

 static PFILEDLG pFileDlg2;
 CHAR Buffer[CCHMAXPATH+100];
 CHAR FileBuffer[CCHMAXPATH];
 CHAR PathBuffer3[CCHMAXPATH];
 CHAR Title[TITLESTRN_MAXLEN+1];
 BOOL SignedFile;

 MRESULT rc = FALSE;

 switch (msg)
 {

   case WM_INITDLG:
      CenterWindow(hwnd);
      pFileDlg2 = (PFILEDLG) WinQueryWindowULong(hwnd, QWL_USER);
    break;

   case WM_HELP:
     DisplayHelp(IDL_TGTFILE_HELP);
    break;

   case WM_COMMAND:
    switch(SHORT1FROMMP(mp1))
    {
      case DID_OK:
        strcpy(PathBuffer3, pFileDlg2->szFullFile);
        WinQueryWindowText(WinWindowFromID(hwnd, DID_FILENAME_ED),
                           sizeof(FileBuffer),
                           FileBuffer);
        strcat(PathBuffer3, FileBuffer);
        SignedFile = IsSignature(JobDesc.SourceFile);
        if (!SignedFile ||
            (SignedFile && !IsDetachedSignature)
           )
        {
          if(FileExist(PathBuffer3))
          {
            Len = WinLoadString(Hab, hRessourceModule, IDS_QUERY_TARGET_OVERWRITE,
                                MSGSTRN_MAXLEN, Msg);
            Len = WinLoadString(Hab, hRessourceModule, IDS_BUBBLE_DECVERIFYDATA_HELP,
                                TITLESTRN_MAXLEN, Title);
            sprintf(Buffer, Msg, PathBuffer3);
            if (MBID_YES == WinMessageBox(HWND_DESKTOP, hwnd,
                                          Buffer, "", 0, MB_ICONQUESTION | MB_YESNO))
            {
              if (0 == remove(PathBuffer3))
              {
               strcpy(pFileDlg2->szFullFile, PathBuffer3);
               pFileDlg2->lReturn = DID_OK;
               WinDismissDlg(hwnd, TRUE);
               return (MRESULT) TRUE;
              }
              pFileDlg2->lReturn = DID_CANCEL;
            }
            return (MRESULT) FALSE;
          }
        }
        else
        {
          /*
           * source file is a detached signature file that is to
           * be checked against the outfile, so there's no need to
           * query for outfile overwrite allowance
           */
          strcpy(pFileDlg2->szFullFile, PathBuffer3);
          pFileDlg2->lReturn = DID_OK;
          WinDismissDlg(hwnd, TRUE);
          return (MRESULT) TRUE;
        }
      /* fall through! */
    }

   default:
     rc = WinDefFileDlgProc (hwnd, msg, mp1, mp2);
 }

 return rc;

}
/*��������������������������������������������������������������������������*/
MRESULT MsgDlgProc(HWND    hwnd,
                   MSG     message,
                   MPARAM  lParam1,
                   MPARAM  lParam2 )
{
  /*������������������������������������������������������������������������Ŀ*/
  /*� Local Variables                                                        �*/
  /*��������������������������������������������������������������������������*/
  MRESULT   dpResult  = NULL;

  CHAR      szFmt [256],                          /* formatting specification */
            szText[256];                          /* formatting area          */

  USHORT    usThisItem;                           /* list item                */

  /*������������������������������������������������������������������������Ŀ*/
  /*� Locate dialog's instance data                                          �*/
  /*��������������������������������������������������������������������������*/
  PMD_DATA pData = WinQueryWindowPtr(hwnd, QWL_USER);

  /*������������������������������������������������������������������������Ŀ*/
  /*� Process the message                                                    �*/
  /*��������������������������������������������������������������������������*/
  switch (message)
  {
    /*��������������������������������������������������������������������Ŀ*/
    /*� "Done" PUSHBUTTON has been used or dialog close requested          �*/
    /*����������������������������������������������������������������������*/
    case WM_COMMAND:
    case WM_CLOSE:

         WinDismissDlg(hwnd, 0);

    break;

    /*��������������������������������������������������������������������Ŀ*/
    /*� Notification from one of the dialog controls....                   �*/
    /*����������������������������������������������������������������������*/
    case WM_CONTROL:
          /******************************************************************
          * One of our drop-down list items have new selection?
          ******************************************************************/
          if (
                 (SHORT2FROMMP(lParam1) == CBN_EFCHANGE) &&
               ( (SHORT1FROMMP(lParam1) == DLG_MD_DD_MP1) ||
                 (SHORT1FROMMP(lParam1) == DLG_MD_DD_MP2) )
             )
          {
            MP_FORMAT mpThis;                     /* current MP Format        */

            /****************************************************************
            * Determine "new" drop-down list item
            ****************************************************************/
            usThisItem = SHORT1FROMMR( WinSendMsg(HWNDFROMMP(lParam2),
                                                  LM_QUERYSELECTION,                  /* Select item    */
                                                  MPFROMSHORT(LIT_FIRST),
                                                  NULL) );

            /****************************************************************
            * Query item's "handle" to MP table item
            *****************************************************************/
            mpThis = (MP_FORMAT)
                     SHORT1FROMMR( WinSendMsg(HWNDFROMMP(lParam2),
                                              LM_QUERYITEMHANDLE,
                                              MPFROMSHORT(usThisItem),
                                              NULL) );

            /****************************************************************
            * Format MP1/MP2 using selected value
            *****************************************************************/
            if ( SHORT1FROMMP(lParam1) == DLG_MD_DD_MP1 )
            {
              WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MP1),
                                MpFormat(pData->qmsgItem.mp1,
                                         pData->pMsg->fMP1 = mpThis,
                                         szText) );
            }
            else
            {
              WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MP2),
                                MpFormat(pData->qmsgItem.mp2,
                                         pData->pMsg->fMP2 = mpThis,
                                         szText) );
            }
          }
    break;

     /*�������������������������������������������������������������������Ŀ*/
     /*� WM_INITDLG:                                                       �*/
     /*�                                                                   �*/
     /*� - MP2 is dialog instance's data                                   �*/
     /*���������������������������������������������������������������������*/
     case WM_INITDLG:
          /*��������������������������������������������������������������Ŀ*/
          /*� Save Dialog's instance data pointer (passed in MP2)          �*/
          /*����������������������������������������������������������������*/
          WinSetWindowPtr(hwnd, QWL_USER, pData = PVOIDFROMMP(lParam2));

          /*��������������������������������������������������������������Ŀ*/
          /*� Setup the Dialog for processing...                           �*/
          /*����������������������������������������������������������������*/
          CenterDialog(hwnd);                                /* Center DLG  */

          /*��������������������������������������������������������������Ŀ*/
          /*� Set up Dialog's title to include MSG name                    �*/
          /*����������������������������������������������������������������*/
          WinQueryWindowText(hwnd, sizeof(szFmt), szFmt);

          sprintf(szText, szFmt, pData->pMsg->pDesc);

          WinSetWindowText(hwnd, szText);

          /*��������������������������������������������������������������Ŀ*/
          /*� Display MSG's value                                          �*/
          /*����������������������������������������������������������������*/
          sprintf(szText,
                  "0x%4.4X (%d)",
                  pData->pMsg->Msg,
                  pData->pMsg->Msg);

          WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_MSG), szText);

          /*��������������������������������������������������������������Ŀ*/
          /*� Display MSG "seen" values                                    �*/
          /*����������������������������������������������������������������*/
          WinQueryWindowText( WinWindowFromID(hwnd, DLG_MD_ST_SEEN),
                              sizeof(szFmt), szFmt);

          sprintf( szText,
                   szFmt,
                   pData->pMsg->aulTimes[MSG_TIMES_EVER],
                   pData->pMsg->aulTimes[MSG_TIMES_SINCE]
                 );

          WinSetWindowText( WinWindowFromID(hwnd, DLG_MD_ST_SEEN), szText);

          /*��������������������������������������������������������������Ŀ*/
          /*� Set MP format values                                         �*/
          /*�                                                              �*/
          /*� Note: WM_CONTROL messages are generated by the following     �*/
          /*�       which cause formatting of MP1 / MP2 data (see above)   �*/
          /*����������������������������������������������������������������*/
          LoadMpFormats(hwnd, DLG_MD_DD_MP1, pData->pMsg->fMP1);
          LoadMpFormats(hwnd, DLG_MD_DD_MP2, pData->pMsg->fMP2);

      break;

     /*�������������������������������������������������������������������Ŀ*/
     /*� We don't need to handle any other messages...                     �*/
     /*�                                                                   �*/
     /*� If this isn't an IPF message, let PM do it's default "thing"      �*/
     /*���������������������������������������������������������������������*/
     default:
          if ( !HandleIPF(hwnd, message, lParam1, lParam2, &dpResult) )
            dpResult = WinDefDlgProc(hwnd, message, lParam1, lParam2 );
   }

   /*�����������������������������������������������������������������������Ŀ*/
   /*� Exit                                                                  �*/
   /*�������������������������������������������������������������������������*/
   return( dpResult );
}
MRESULT EXPENTRY Dlg_UserPage (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2)
{
     switch( msg )
     {
     case WM_INITDLG:
         {
             WinSendMsg(WinWindowFromID(hwnd,USER_LOOP),EM_SETTEXTLIMIT,MPFROM2SHORT(4,TRUE),MPFROM2SHORT(0,TRUE));
             WinSendMsg(WinWindowFromID(hwnd,USER_WAIT),EM_SETTEXTLIMIT,MPFROM2SHORT(4,TRUE),MPFROM2SHORT(0,TRUE));
             String number;
             number = p_config->getUserLoopTimes();
             WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),number.asCharStar());
             number = (int)p_config->getUserLoopDelay();
             WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),number.asCharStar());
             
             if (p_config->getUserAutoStart())
                 WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE);
             else
                 WinCheckButton(hwnd,USER_AUTO,(unsigned short)FALSE);
             
             if (p_config->getUserShowAllFiles())
             {
                 WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)FALSE);
                 WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE);
             }
             else
             {
                 WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)TRUE);
                 WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)FALSE);
             }
             
             if (p_config->getUserSmallIcons())
                 WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE);
             else
                 WinCheckButton(hwnd,USER_ICONS,(unsigned short)FALSE);
         }
         
         break;
     //----------------------------------
     case WM_CLOSE:
         {
             unsigned short previous = WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE);
             p_config->setUserAutoStart(previous);
             previous = WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE);
             p_config->setUserShowAllFiles(previous);
             previous = WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE);
             p_config->setUserSmallIcons(previous);
             
             char *buffer = new char[1024];
             WinQueryWindowText(WinWindowFromID(hwnd,USER_LOOP),1023,buffer);
             p_config->setUserLoopTimes(atoi(buffer));
             WinQueryWindowText(WinWindowFromID(hwnd,USER_WAIT),1023,buffer);
             p_config->setUserLoopDelay(atoi(buffer));
             delete[] buffer;
         }

	 return 0;	// 06 Mar 01 SHL
         
     case WM_CONTROL:
         switch(SHORT2FROMMP(mp1))
         {
             case EN_CHANGE:
             {
                 char *number_str = new char[1024];
                 switch (SHORT1FROMMP(mp1))
                 {
                     case USER_LOOP:
                         WinQueryWindowText(WinWindowFromID(hwnd,USER_LOOP),1023,number_str);
                         if (makeDigitsOnly(number_str))
                             WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),number_str);
                         break;
                     case USER_WAIT:
                         WinQueryWindowText(WinWindowFromID(hwnd,USER_WAIT),1023,number_str);
                         if (makeDigitsOnly(number_str))
                             WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),number_str);
                         break;
                 }
                 
                 delete[] number_str;
             }
         }
                 
         
     //----------------------------------
     case WM_COMMAND:
          switch( SHORT1FROMMP( mp1 ) )
          {
               case PB_DEFAULT:
                    // The default pushbutton has been pressed
                   // The entries should be reset to their default values
                   {
                       WinCheckButton(hwnd,USER_AUTO,(unsigned short)FALSE);
                       WinCheckButton(hwnd,USER_SMALLTREE,(unsigned short)FALSE);
                       WinCheckButton(hwnd,USER_BIGTREE,(unsigned short)TRUE);
                       WinCheckButton(hwnd,USER_ICONS,(unsigned short)TRUE);
                       WinSetWindowText(WinWindowFromID(hwnd,USER_LOOP),"0");
                       WinSetWindowText(WinWindowFromID(hwnd,USER_WAIT),"0");
                   }
                    break;
                //----------------------------------
          }
          return 0;
     //----------------------------------
     case WM_VALIDATE:
         {
/*             // get status of check box
             WinEnableWindowUpdate(WinWindowFromID(hwnd,USER_AUTO),FALSE);
             unsigned short previous = WinCheckButton(hwnd,USER_AUTO,(unsigned short)TRUE);
             WinCheckButton(hwnd,USER_AUTO,previous);
             WinEnableWindowUpdate(WinWindowFromID(hwnd,USER_AUTO),TRUE);

             // check log filename is available & writeable if being used
             char *buffer=new char[1024];
             WinQueryWindowText(WinWindowFromID(hwnd,LOG_PATH),1023,buffer);
             lrSpaceTrim(buffer);
             delete[] buffer;
*/         }
         
          return (MPARAM) 1; // !WinQueryButtonCheckstate( hwnd, CKB_VALIDATIONERROR );
     }//switch( msg )

     return WinDefDlgProc( hwnd, msg, mp1, mp2 );

}// Dlg_NbkpPage Dialog Procedure
MRESULT EXPENTRY MimeDlgProc(HWND hwndDlg,ULONG msg,MPARAM mp1,MPARAM mp2)
{
    HPOINTER  hptrOrig, hptrWait;
    static int num_entries;
    static int entry;
    static FILE *in;
    static Container *list;
    static MimeSet *mimes;
    UserData *ud;
    char buffer[1024];
    int i;
    
    switch(msg)
    {
        
        case WM_INITDLG:
            hptrWait = WinQuerySysPointer( HWND_DESKTOP, SPTR_WAIT, FALSE );
            hptrOrig = WinQueryPointer( HWND_DESKTOP );
            WinSetPointer( HWND_DESKTOP, hptrWait );
            
            WinSendMsg(WinWindowFromID(hwndDlg,MIME_NAME),EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0));
            WinSendMsg(WinWindowFromID(hwndDlg,MIME_EXT), EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0));
            WinSendMsg(WinWindowFromID(hwndDlg,MIME_EXE), EM_SETTEXTLIMIT,MPFROMSHORT(128),MPFROMSHORT(0));
            
            mimes = (MimeSet*)mp2;
            list = new Container();
            list->initialise(hwndDlg,MIME_CONT);
            
            num_entries = mimes->getSetNum();
            for (i=0; i<num_entries; i++)
            {
                sprintf(buffer,"%s: %s",mimes->getName(i),mimes->getExtensions(i));
//                message("%d/%d %s is %s",i,num_entries,mimes->getName(i),mimes->getExtensions(i));
                
                list->insert(buffer,(UserData*)NULL,8888L,8888L);
            }
            
            WinFocusChange(HWND_DESKTOP,WinWindowFromID(hwndDlg,MIME_CONT),0);
            
            WinSetWindowText(WinWindowFromID(hwndDlg,MIME_NAME),mimes->getName(mimes->getSetNum()-1));
            WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXT),mimes->getExtensions(mimes->getSetNum()-1));
            WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXE),mimes->getCommand(mimes->getSetNum()-1));
            list->setItemFocus(list->getLastInsert());
            
            WinSetPointer( HWND_DESKTOP, hptrOrig );
            
            entry = -1;
            break;
            
        case WM_HELP:
            showHelpWindow(HELP_MIMES);
            break;
            
            
        case WM_CLOSE:
            mimes->reload();
            delete list;
            return WinDefDlgProc(hwndDlg,msg,mp1,mp2);
            
        case WM_USER:
            list->arrange();
            break;
            
        case WM_CONTROL:
            switch(SHORT2FROMMP(mp1))
            {
                
                case CN_HELP:
                    WinSendMsg(hwndDlg,WM_HELP,0,0);
                    break;
                    
                // sent every time emphasis of an object is changed, so if
                // change from A to B, get deselect on A, and select on B
                case CN_EMPHASIS:
                {
                    PNOTIFYRECORDEMPHASIS nre = (PNOTIFYRECORDEMPHASIS)mp2;
                    ud = (UserData*)nre->pRecord;
                    
                    if (ud != NULL)
                    {
                        char *buffer = new char[4096];
                        strcpy(buffer,ud->getName());
                        char *ptr = buffer+strlen(buffer)-1;
                        while (ptr>buffer && *ptr!='.') ptr--;
                        if (*ptr == '.')
                        {
                            int index = mimes->find(ptr);
                            
                            if (index > -1)
                            {
                                entry = index;
                                WinSetWindowText(WinWindowFromID(hwndDlg,MIME_NAME),mimes->getName(index));
                                WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXT),mimes->getExtensions(index));
                                WinSetWindowText(WinWindowFromID(hwndDlg,MIME_EXE),mimes->getCommand(index));
                            }
                        }
                        delete[] buffer;
                    }
                }
                break;
                    
                case EN_CHANGE:
                {
                    if (SHORT1FROMMP(mp1) == MIME_EXE)
                    {
                        ud = list->findSelectedRecord(NULL);
                        static int lastindex = 0;
                        if (ud && entry != -1)
                        {
                            if (lastindex == entry)
                            {
                                char *buffer = new char[4096];
                                WinQueryWindowText(WinWindowFromID(hwndDlg,MIME_EXE),129,buffer);
                                mimes->setCommand(entry,buffer);
                                delete[] buffer;
                            }
                            lastindex = entry;
                        }
                    }
                }
                break;
                    
            }
            break;
            
        case WM_COMMAND:
            switch( SHORT1FROMMP( mp1 ) )
            {
                case IDM_DELETE:
//                    message("delete");
                    break;
                    
                case DID_OK:
                    // all OK, close dialog, return
                    if (entry != -1)
                    {
                        WinQueryWindowText(WinWindowFromID(hwndDlg,MIME_EXE),129,buffer);
                        mimes->setCommand(entry,buffer);
                    }
                    mimes->save();
                    delete list;
                    WinDismissDlg( hwndDlg, TRUE);
                    return (MRESULT) TRUE;
                    
                case DID_CANCEL:
                    mimes->reload();
                    delete list;
                    WinDismissDlg( hwndDlg, TRUE);
                    return (MRESULT) FALSE;
            }
            break;
            
            
        default:
            return WinDefDlgProc(hwndDlg,msg,mp1,mp2);
    }
    return (MRESULT) TRUE;
}
INT main( INT argc, PCHAR argv[] )
{
 // Сбрасываем свойства приложения.
 bzero( &Enhancer, sizeof( ENHANCER ) );

 // Определяем приложение в системе.
 Enhancer.Application = WinInitialize( 0 );

 // Если это сделать не удалось - выход.
 if( Enhancer.Application == NULLHANDLE )
  {
   // Звук - ошибка.
   WinAlarm( HWND_DESKTOP, WA_ERROR );
   // Выход.
   DosExit( EXIT_PROCESS, 0 );
  }

 // Создаем очередь сообщений.
 HMQ Message_queue = WinCreateMsgQueue( Enhancer.Application, 0 );

 // Если очередь создать не удалось - выход.
 if( Message_queue == NULLHANDLE )
  {
   // Звук - ошибка.
   WinAlarm( HWND_DESKTOP, WA_ERROR );
   // Выход.
   WinTerminate( Enhancer.Application );
   DosExit( EXIT_PROCESS, 0 );
  }

 // Проверяем системные настройки.
 CheckSystemConfig();

 // Запускаем составляющие приложения.
 StdLib_Start();
 Strings_Start();
 Files_Start();

 Environment_Start();
 EnhancerProperties_Start();

 Loader_Start();
 Launcher_Start();

 // Узнаем, что надо сделать.
 if( argc == 2 )
  {
   if( stristr( "hide",    argv[ 1 ] ) ) Enhancer.Launcher_mode = 1;
   if( stristr( "mini",    argv[ 1 ] ) ) Enhancer.Launcher_mode = 1;
   if( stristr( "launch",  argv[ 1 ] ) ) Enhancer.Launcher_mode = 1;
   if( stristr( "enhance", argv[ 1 ] ) ) Enhancer.Enhancer_mode = 1;
  }

 // Возможно, надо вызвать окно настроек.
 if( argc == 2 )
  {
   if( strstr( "ControlCenter", argv[ 1 ] ) )
    {
     CHAR Path_to_ControlCenter[ SIZE_OF_PATH ] = "";
     GetCurrentPath( Path_to_ControlCenter );
     strcat( Path_to_ControlCenter, "\\Nice-eCS.exe" );

     Execute( Path_to_ControlCenter, argv[ 1 ] );

     WinDestroyMsgQueue( Message_queue );
     WinTerminate( Enhancer.Application );
     DosExit( EXIT_PROCESS, 0 );
    }
  }

 // Если действие не распознано - выход.
 if( !Enhancer.Enhancer_mode && !Enhancer.Launcher_mode )
  {
   WinDestroyMsgQueue( Message_queue );
   WinTerminate( Enhancer.Application );
   DosExit( EXIT_PROCESS, 0 );
  }

 // Если окно приложения уже есть - выход.
 {
  CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!L"; HMTX hmtxAlreadyRunning = NULLHANDLE;
  if( Enhancer.Enhancer_mode ) Semaphore_name[ strlen( Semaphore_name ) - 1 ] = 'E';

  if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) == NO_ERROR )
   {
    WinDestroyMsgQueue( Message_queue );
    WinTerminate( Enhancer.Application );
    DosExit( EXIT_PROCESS, 0 );
   }
  else
   {
    DosCreateMutexSem( Semaphore_name, &hmtxAlreadyRunning, DC_SEM_SHARED, 1 );
   }
 }

 // Загрузчик должен запускаться до расширителя.
 if( Enhancer.Launcher_mode )
  {
   CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!E"; HMTX hmtxAlreadyRunning = NULLHANDLE;

   if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) == NO_ERROR )
    {
     WinDestroyMsgQueue( Message_queue );
     WinTerminate( Enhancer.Application );
     DosExit( EXIT_PROCESS, 0 );
    }
  }

 // Расширитель должен запускаться после загрузчика
 if( Enhancer.Enhancer_mode )
  {
   CHAR Semaphore_name[] = "\\SEM32\\NICE-OS2!L"; HMTX hmtxAlreadyRunning = NULLHANDLE;

   if( DosOpenMutexSem( Semaphore_name, &hmtxAlreadyRunning ) != NO_ERROR )
    {
     WinDestroyMsgQueue( Message_queue );
     WinTerminate( Enhancer.Application );
     DosExit( EXIT_PROCESS, 0 );
    }
  }

 // Если надо вызвать загрузчик:
 if( Enhancer.Launcher_mode )
  {
   // Создаем поток для запуска расширителя.
   DosCreateThread( &Threads.Launcher, (PFNTHREAD) LauncherThread, 0, 0, STACK_SIZE );
  }

 // Если надо вызвать расширитель:
 if( Enhancer.Enhancer_mode )
  {
   // Пробуем найти окно загрузчика.
   HWND Launcher_window = NULLHANDLE; CHAR Launcher_title[] = "Nice-OS2!L";

   {
    // Перебираем окна в окне рабочего стола.
    HENUM Enumeration = WinBeginEnumWindows( WinQueryDesktopWindow( Enhancer.Application, NULLHANDLE ) ); HWND Window = NULLHANDLE;
    while( ( Window = WinGetNextWindow( Enumeration ) ) != NULLHANDLE )
     {
      // Узнаем заголовок окна.
      CHAR Window_title[ SIZE_OF_TITLE ] = "";
      WinQueryWindowText( WinWindowFromID( Window, FID_TITLEBAR ), SIZE_OF_TITLE, Window_title );

      // Если это окно расширителя - запоминаем его.
      if( strc( Window_title, Launcher_title ) )
       {
        Launcher_window = Window;
        break;
       }
     }
    WinEndEnumWindows( Enumeration );
   }

   // Если загрузчика нет - выход.
   // Вообще-то он должен быть, раз найден семафор, но кто знает...
   if( !Launcher_window )
    {
     WinTerminate( Enhancer.Application );
     DosExit( EXIT_PROCESS, 0 );
    }

   // Создаем потоки, устанавливаем обработчики событий.
   BYTE Success = NiceLoadEnhancer( Enhancer.Application, 0, Launcher_window );

   // Если это сделать не удалось - выход.
   if( !Success )
    {
     WinTerminate( Enhancer.Application );
     DosExit( EXIT_PROCESS, 0 );
    }

   // Читаем настройки и загружаем изображения в расширитель.
   // Этот метод выполняется внутри Nice-os2.dll, но так как DLL использует
   // адресное пространство приложения, все данные остаются в этом приложении.
   NiceReadSettings( 0 );

   // Включаем слежение за сообщениями.
   NiceRunEnhancer();
  }

 // Создаем окно рабочей области.
 CHAR Class_name[] = "NiceOS2WndClass!L";
 if( Enhancer.Enhancer_mode ) Class_name[ strlen( Class_name ) - 1 ] = 'E';
 WinRegisterClass( Enhancer.Application, Class_name, (PFNWP) Enhancer_MainWindowProc, 0, 0 );

 // Создаем окно рамки.
 CHAR MainWindow_title[] = "Nice-OS2!L";
 if( Enhancer.Enhancer_mode ) Class_name[ strlen( Class_name ) - 1 ] = 'E';

 ULONG Creation_flags = FCF_TITLEBAR | FCF_SYSMENU;
 Enhancer.Frame_window = WinCreateStdWindow( HWND_DESKTOP, CS_FRAME, &Creation_flags, Class_name, MainWindow_title, 0, NULLHANDLE, 0, &Enhancer.Client_window );
 WinShowWindow( Enhancer.Frame_window, 0 );

 // Выбираем сообщения из очереди.
 QMSG Message; bzero( &Message, sizeof( QMSG ) );
 while( WinGetMsg( Enhancer.Application, &Message, 0, 0, 0 ) ) WinDispatchMsg( Enhancer.Application, &Message );

 // Закрываем окна.
 WinDestroyWindow( Enhancer.Client_window );
 WinDestroyWindow( Enhancer.Frame_window );

 // Если вызван расширитель:
 if( Enhancer.Enhancer_mode )
  {
   // Отключаем обработчики событий, завершаем работу потоков.
   NiceReleaseEnhancer( Enhancer.Application, 0 );
  }

 // Удаляем файлы отладочной версии.
 DosForceDelete( "_log.txt" ); DosForceDelete( "XTest.exe" );

 // Сбрасываем очередь сообщений.
 WinDestroyMsgQueue( Message_queue );

 // Выход.
 WinTerminate( Enhancer.Application );
 DosExit( EXIT_PROCESS, 0 );
}
示例#25
0
void Window::createWindow( Window *parent, Window *owner, char *text, 
                           char *windowClass,
                           Window *behind, ULONG windowStyle, int x, int y,
                           int width, int height )
{
  char str[50], *wClass;

  mouseButtonDown = FALSE;

  this->parent = parent;

  if( parent->getType() == DIALOG)
  	behind = (Window *)parent->getLastControl();

  type = WINDOW;
  this->id = Iterator::getNext();

  Application::tempthis = this;

  oldWndProc = NULL;

  if( windowClass == 0L )
  {
    currentPointer = WinQuerySysPointer( HWND_DESKTOP, SPTR_ARROW, FALSE );

		strcpy( str, "KONBASEWINDOW" );
		if( !baseClassRegistered )
		{
			baseClassRegistered = TRUE;
			if( !WinRegisterClass( Application::hab, (PSZ)str, //(PSZ)itoa( id, str, 10),
												WndProc, CS_SIZEREDRAW | CS_MOVENOTIFY | CS_SYNCPAINT,
												sizeof(Window *) ) )
			{
				exit( 1 );
			}
		}
    wClass = str;
  }
  else
  {
    currentPointer = NULLHANDLE;
    wClass = windowClass;
  }

	if( windowStyle & WS_DISABLED )
	{
		windowStyle &= ~WS_DISABLED;
		isPopupWin = TRUE;
	}

  hWndFrame = hWndClient = WinCreateWindow( (isPopupWin) ? HWND_DESKTOP : parent->getHWND(), wClass, text,
                                            windowStyle, x, y, width, height,
                                            owner->getHWND(),
                                            (behind == NULL) ? HWND_TOP : behind->getHWND(),
                                            id, 0L, 0L );

  // Subclass window

  if( wClass == windowClass )
  {
    WinSetWindowULong(hWndFrame,0,(ULONG)this);
    oldWndProc = WinSubclassWindow( hWndFrame, (PFNWP)WndProc );
  }

  if( hWndFrame == NULLHANDLE )
  {
    DosBeep( 1000, 100 );
    char wText[501];
    WinQueryWindowText( parent->getHWNDFrame(), 500, wText );
  }

  graphics = new Graphics( WinGetPS( hWndClient ) );
}
static MRESULT EXPENTRY _bootCDOptionsDialogProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  CWDataFolder* thisPtr;
  FILEDLG fd = { 0 };
  /* char text[CCHMAXPATH];*/
  char title[CCHMAXPATH];
  ULONG rc;
  THISPTR *tpPtr;

  switch(msg)
    {
    case WM_INITDLG :	
      tpPtr=(THISPTR*)PVOIDFROMMP(mp2);
      thisPtr=(CWDataFolder*)tpPtr->thisPtr;

      /*    sprintf(text,"tpPtr: %x thisPtr: %x",tpPtr,thisPtr);
            WinMessageBox(  HWND_DESKTOP, hwnd,
            text,"2", 0UL, MB_OK | MB_ERROR |MB_MOVEABLE); */

      WinSetWindowULong(WinWindowFromID(hwnd,IDPB_OK),
                        QWL_USER,(ULONG)thisPtr);//Save object ptr.
              
      if(somIsObj(thisPtr)) {        
        WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTIMAGE), thisPtr->chrBootImage );
        WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTCATALOG), thisPtr->chrBootCatalog );
      }
      break;
    case WM_CLOSE:
      WinDismissDlg(hwnd,0);
      return FALSE;
    case WM_COMMAND:
      switch(SHORT1FROMMP(mp1))
        {
        case IDPB_OK:
          /* User pressed the OK button */
          thisPtr=(CWDataFolder*)WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_OK),QWL_USER);
          if(somIsObj(thisPtr)) {
            WinQueryWindowText(WinWindowFromID(hwnd,IDEF_BOOTIMAGE),sizeof(thisPtr->chrBootImage),thisPtr->chrBootImage);
            WinQueryWindowText(WinWindowFromID(hwnd,IDEF_BOOTCATALOG),sizeof(thisPtr->chrBootCatalog),thisPtr->chrBootCatalog);
          }
          WinDismissDlg(hwnd,DID_OK);
          return (MRESULT) FALSE;          
        case IDPB_CANCEL:
          WinDismissDlg(hwnd,0);
          return FALSE;
        case IDPB_BROWSE:
          /* User pressed the browse button */
          fd.cbSize = sizeof( fd );
          /* It's an centered 'Open'-dialog */
          fd.fl = FDS_OPEN_DIALOG|FDS_CENTER;
          /* Title: "Select boot image" */
          getMessage(title,IDSTR_FDLGSEARCHBOOTIMGTITLE,sizeof(title), hDataResource,hwnd);
          /* Set the title of the file dialog */
          fd.pszTitle = title;
          /* Show all files */
          sprintf(fd.szFullFile,"%s","*.*");
          if( WinFileDlg( HWND_DESKTOP, hwnd, &fd ) == NULLHANDLE )
            {
              /* WinFileDlg failed */
              break;
            }
          if( fd.lReturn == DID_OK )
            {
              WinSetWindowText( WinWindowFromID(hwnd,IDEF_BOOTIMAGE), fd.szFullFile );
            }
          break;
        default:
          break;
        }
      return (MRESULT) TRUE;
    default:
      break;
    }
  return WinDefDlgProc(hwnd, msg, mp1, mp2); 
}
示例#27
0
//A Dlg procedure if the plugin has selectable settings.
MRESULT EXPENTRY CBZPluginSetupDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
  short sControlId;
    PLUGINSHARE *pPluginData;
    FILEDLG filedlg;
    HWND hwndDlg;

    switch (msg)
    {
        case WM_INITDLG:
        {
            if ((pPluginData = (PLUGINSHARE *) mp2) == NULL)
            {
                //Error msg..
                WinDismissDlg(hwnd, DID_ERROR);
                return (MRFROMLONG(FALSE));
            }
            WinSetWindowPtr(hwnd, QWL_USER, pPluginData);  // store window words

            WinSendMsg(WinWindowFromID(hwnd, EFID_IMAGE), EM_SETTEXTLIMIT, (MPARAM) CCHMAXPATH, (MPARAM) 0);

            WinSetWindowText(WinWindowFromID(hwnd, EFID_IMAGE), pPluginData->szImageFile);

            /* This is temprary. At the moment only all or no frame control may be drawn */
            WinCheckButton(hwnd, CBID_CLOSEENABLED, TRUE);
            WinCheckButton(hwnd, CBID_MINIMIZEENABLED, TRUE);
            WinCheckButton(hwnd, CBID_MAXIMIZEENABLED, TRUE);
            WinCheckButton(hwnd, CBID_RESTOREENABLED, TRUE);
            WinCheckButton(hwnd, CBID_HIDEENABLED, TRUE);

            WinEnableWindow(WinWindowFromID(hwnd,CBID_CLOSEENABLED ), FALSE);
            WinEnableWindow(WinWindowFromID(hwnd, CBID_MINIMIZEENABLED), FALSE);
            WinEnableWindow(WinWindowFromID(hwnd, CBID_MAXIMIZEENABLED), FALSE);
            WinEnableWindow(WinWindowFromID(hwnd, CBID_RESTOREENABLED), FALSE);
            WinEnableWindow(WinWindowFromID(hwnd, CBID_HIDEENABLED), FALSE);

        }
        break;

        case WM_COMMAND:
        {
            sControlId = COMMANDMSG(&msg)->cmd;

            switch (sControlId)
            {
                case PBID_IMAGE:
                {

                    //popup file change dialog!
                    memset(&filedlg, 0, sizeof(FILEDLG));  // init filedlg struct

                    filedlg.cbSize = sizeof(FILEDLG);
                    filedlg.fl = FDS_OPEN_DIALOG;
                    filedlg.pszTitle = "Choose an image";
                    strcpy(filedlg.szFullFile, "*.*");

                    if ((hwndDlg = WinFileDlg(HWND_DESKTOP, hwnd, &filedlg)) == NULLHANDLE)
                    {
                        return (FALSE);
                    }

                    if (filedlg.lReturn != DID_OK)  // selected one

                    {
                        break;
                    }

                    WinSetWindowText(WinWindowFromID(hwnd, EFID_IMAGE), filedlg.szFullFile);

                }
                break;


                case PBID_OK:
                {
                    if ((pPluginData = (PLUGINSHARE *) WinQueryWindowPtr(hwnd, QWL_USER)) == NULL)
                    {
                        //error message..
                        break;
                    }

                    WinQueryWindowText(WinWindowFromID(hwnd, EFID_IMAGE), CCHMAXPATH, pPluginData->szImageFile);

                    //update!
                    WinDismissDlg(hwnd, PBID_OK);
                }
                break;

                case PBID_CANCEL:
                {
                    //don't update shared Memory!
                    WinDismissDlg(hwnd, PBID_CANCEL);
                }
                break;
            }

            return ((MPARAM) 0);
        }
        break;

        case WM_CONTROL:
        {
            switch (SHORT1FROMMP(mp1))
            {

            }
            return ((MRESULT) 0);
        }
        break;

    }
    return (WinDefDlgProc(hwnd, msg, mp1, mp2));
}
/* This procedure handles the author settings page */ 
MRESULT EXPENTRY authorOptionDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 
{
  CWDataFolder* thisPtr;

  switch(msg)
    {
    case WM_INITDLG :	
      WinSetWindowULong(hwnd, QWL_USER,(ULONG)PVOIDFROMMP(mp2));//Save object ptr.
      thisPtr=(CWDataFolder*)PVOIDFROMMP(mp2);
      WinSendMsg(WinWindowFromID(hwnd,IDEF_APPLICATION),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
      WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication);
      WinSendMsg(WinWindowFromID(hwnd,IDEF_PUBLISHER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
      WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher);
      WinSendMsg(WinWindowFromID(hwnd,IDEF_PREPARER),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)128),0);
      WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer);
      WinSendMsg(WinWindowFromID(hwnd,IDEF_VOLUMENAME),EM_SETTEXTLIMIT,MPFROMSHORT((SHORT)32),0);
      WinSetWindowText(WinWindowFromID(hwnd,IDEF_VOLUMENAME),thisPtr->chrVolumeName);

      /* Move default buttons on Warp 4 */
      cwMoveNotebookButtonsWarp4(hwnd, IDPB_AUTHORHELP, 20);
      return (MRESULT) TRUE;
      /* This prevents switching the notebook page behind the open folder */
    case WM_WINDOWPOSCHANGED:
      {
        MRESULT mr;

        if(WinQueryFocus(HWND_DESKTOP)!=
           WinQueryWindow(WinQueryWindow(hwnd, QW_PARENT), QW_PARENT)) {
          mp2=MPFROMLONG(LONGFROMMP(mp2)|0x80000);/*AWP_ACTIVATE 0x00080000L*/
          mr=WinDefDlgProc(hwnd, msg, mp1, mp2);
          return mr;  
        }
        break;
      }
    case WM_FOCUSCHANGE:
      {
        if(!SHORT1FROMMP(mp2)) {
          if(HWNDFROMMP(mp1)==hwnd) {
            MRESULT mr;

            mr=WinDefDlgProc(hwnd, msg, mp1, mp2);
            WinSendMsg(WinQueryWindow(WinQueryWindow(hwnd, QW_PARENT), QW_PARENT), WM_SETFOCUS, MPFROMHWND(hwnd), (MPARAM)TRUE);
            return mr;
          }
        }
        break;
      }
    case WM_DESTROY:
      /* The notebook closes and gets destroyed */
      /* Set focus to desktop to prevent PM freeze */
      WinSetFocus(HWND_DESKTOP, HWND_DESKTOP);

      /* Let the WPS save the new instance data */
      //      thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER);
      thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
      if(somIsObj(thisPtr)) {
        WinQueryWindowText( WinWindowFromID(hwnd,IDEF_APPLICATION),sizeof(thisPtr->chrApplication),thisPtr->chrApplication);
        WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PUBLISHER),sizeof(thisPtr->chrPublisher),thisPtr->chrPublisher);
        WinQueryWindowText( WinWindowFromID(hwnd,IDEF_PREPARER),sizeof(thisPtr->chrPreparer),thisPtr->chrPreparer);
        WinQueryWindowText( WinWindowFromID(hwnd,IDEF_VOLUMENAME),sizeof(thisPtr->chrVolumeName),thisPtr->chrVolumeName);
        thisPtr->wpSaveDeferred();
      }
      /* Setup is done */
      return (MRESULT) TRUE;
    case WM_COMMAND:	
    switch(SHORT1FROMMP(mp1))
      {
      case IDPB_AUTHORUNDO:
        /* User pressed the UNDO button */
        //   thisPtr=(CWDataFolder*) WinQueryWindowULong(WinWindowFromID(hwnd,IDPB_AUTHORUNDO),QWL_USER);
        thisPtr=(CWDataFolder*) WinQueryWindowULong(hwnd,QWL_USER);
        if(somIsObj(thisPtr)) {
          WinSetWindowText(WinWindowFromID(hwnd,IDEF_APPLICATION),thisPtr->chrApplication);
          WinSetWindowText(WinWindowFromID(hwnd,IDEF_PUBLISHER),thisPtr->chrPublisher);
          WinSetWindowText(WinWindowFromID(hwnd,IDEF_PREPARER),thisPtr->chrPreparer);
          WinSetWindowText(WinWindowFromID(hwnd,IDEF_VOLUMENAME),thisPtr->chrVolumeName);
        }
        break;
      default:
        break;
      }
    return (MRESULT) TRUE;
    default:
      break;
    }
  return WinDefDlgProc(hwnd, msg, mp1, mp2);
}
示例#29
0
static MRESULT EXPENTRY LinkLabelProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
{
    linkData *ld = (linkData *)WinQueryWindowULong( hwnd, QWL_USER );
    switch ( msg )
    {
    case WM_PAINT:
    {
        FONTMETRICS fm;
        FATTRS fat;
        HPS hps;
        ULONG style;
        char *text = (char *)malloc( MAXTEXTLEN );
        WinQueryWindowText( hwnd, MAXTEXTLEN, text);
        hps = WinBeginPaint( hwnd , 0L , 0L );
        GpiQueryFontMetrics( hps , sizeof( FONTMETRICS ) , &fm );
        memset( &fat , 0 , sizeof( fat ) );
        fat.usRecordLength = sizeof( FATTRS );
        fat.lMatch = fm.lMatch;
        fat.fsSelection = FATTR_SEL_UNDERSCORE;
        strcpy( fat.szFacename , fm.szFacename );
        GpiDeleteSetId( hps , 1 );
        GpiCreateLogFont( hps , 0 , 1 , &fat );
        GpiSetCharSet( hps , 1 );
        WinQueryWindowRect( hwnd , &ld->textRect );
        style = WinQueryWindowULong( hwnd, QWL_STYLE );
        style &= DT_LEFT|DT_CENTER|DT_RIGHT|DT_TOP|DT_VCENTER|DT_BOTTOM;
        WinDrawText( hps, -1, text, &ld->textRect,
                     CLR_BLUE, SYSCLR_DIALOGBACKGROUND,
                     style | DT_ERASERECT | DT_UNDERSCORE );
        WinDrawText( hps, -1, text, &ld->textRect,
                     CLR_BLUE, SYSCLR_DIALOGBACKGROUND,
                     style | DT_QUERYEXTENT | DT_UNDERSCORE );
        WinEndPaint( hps );
        free( text );
    }
    return (MRESULT)FALSE;

    case WM_MOUSEMOVE:
    {
        if ( handPtr != NULLHANDLE )
        {
            POINTL ptl;
            ptl.x = SHORT1FROMMP( mp1 );
            ptl.y = SHORT2FROMMP( mp1 );
            if ( WinPtInRect( WinQueryAnchorBlock( hwnd ), &ld->textRect, &ptl) )
            {
                WinSetPointer( HWND_DESKTOP, handPtr );
                return (MRESULT)FALSE;
            }
        }
    }
    break;

    case WM_BUTTON1CLICK:
    {
        PROGDETAILS pd;
        char *text;
        POINTL ptl;

        if ( strcmp( browserExe, "" ) == 0 )  break;

        ptl.x = SHORT1FROMMP( mp1 );
        ptl.y = SHORT2FROMMP( mp1 );
        if ( !WinPtInRect( WinQueryAnchorBlock( hwnd ), &ld->textRect, &ptl) )
            break;

        if ( ld->url == NULL )
        {
            text = (char *)malloc( MAXTEXTLEN );
            WinQueryWindowText( hwnd, MAXTEXTLEN, text);
        }
        else  text = strdup( ld->url );

        pd.Length          = sizeof( PROGDETAILS );
        pd.progt.progc     = PROG_DEFAULT;
        pd.progt.fbVisible = SHE_VISIBLE;
        pd.pszTitle        = NULL;
        pd.pszExecutable   = browserExe;
        pd.pszParameters   = NULL;
        pd.pszStartupDir   = ( browserDir[0] == 0 ) ? NULL : browserDir;
        pd.pszIcon         = NULL;
        pd.pszEnvironment  = NULL;
        pd.swpInitial.fl   = SWP_ACTIVATE;
        pd.swpInitial.cy   = 0;
        pd.swpInitial.cx   = 0;
        pd.swpInitial.y    = 0;
        pd.swpInitial.x    = 0;
        pd.swpInitial.hwndInsertBehind = HWND_TOP;
        pd.swpInitial.hwnd             = NULLHANDLE;
        pd.swpInitial.ulReserved1      = 0;
        pd.swpInitial.ulReserved2      = 0;
        WinStartApp( NULLHANDLE , &pd , text , NULL , 0 );
        free( text );
    }
    break;

    case WM_DESTROY:
        ld->labelProc( hwnd, msg, mp1, mp2 );
        if ( ld->url != NULL )  free( ld->url );
        free( ld );
        return (MRESULT)FALSE;
    }
    return ld->labelProc( hwnd, msg, mp1, mp2 );
}
示例#30
0
文件: HMLEdit.c 项目: komh/hanedit2
ULONG HEOptions(HWND hwnd)
{
HWND hwndDlg;
ULONG TextFormat = (ULONG) WinSendMsg(hwndHMLE,HMLM_QUERYTEXTFORMAT,0L,0L);
ULONG HanType   = (ULONG)  WinSendMsg(hwndHMLE,HMLM_QUERYHANTYPE,0L,0L);
ULONG ulrc = ( ULONG ) WinSendMsg( hwndHMLE, HMLM_QUERYWRAP, 0, 0 );
//int old_eoltype = TextFormat;
//int old_hantype = HanType;
BOOL wordWrap = CHAR3FROMMP( ulrc );
BOOL wordProtect = CHAR4FROMMP( ulrc );
int  wordWrapSize = SHORT1FROMMR( ulrc );
CHAR size[ 10 ];

    hwndDlg = WinLoadDlg(HWND_DESKTOP,hwnd,&WinDefDlgProc,NULLHANDLE,IDD_OPTIONS,NULL);

    if (TextFormat==HMLE_EOL_CRLF)
        WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_CRLF),BM_SETCHECK,MPFROMLONG(1L),0L);
        else
        WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_LF),BM_SETCHECK,MPFROMLONG(1L),0L);
    if (HanType==HMLE_HAN_KS)
        WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_KS),BM_SETCHECK,MPFROMLONG(1L),0L);
        else
        WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_SY),BM_SETCHECK,MPFROMLONG(1L),0L);

    WinSendMsg( WinWindowFromID( hwndDlg, IDB_WORDWRAP ), BM_SETCHECK,
                MPFROMLONG( SHORT1FROMMR( wordWrap )), 0 );

    _itoa( wordWrapSize, size, 10 );
    WinSetWindowText( WinWindowFromID( hwndDlg, IDEF_WORDWRAP_SIZE ), size );

    //WinSetFocus(HWND_DESKTOP,hwndDlg);

    ulrc = WinProcessDlg(hwndDlg);

    if (ulrc == DID_OK)
        {
        TextFormat  = (ULONG) WinSendMsg(WinWindowFromID(hwndDlg,IDB_TF_CRLF),BM_QUERYCHECKINDEX,0L,0L);
        HanType     = (ULONG) WinSendMsg(WinWindowFromID(hwndDlg,IDB_HT_KS),BM_QUERYCHECKINDEX,0L,0L);
        if (TextFormat == 1)
            {
            WinSendMsg(hwndHMLE,HMLM_SETTEXTFORMAT,MPFROMLONG(HMLE_EOL_CRLF),0L);
            WinPostMsg(hwndStatbar,STATBAR_USERM_SETEOLTYPE,MPFROMLONG(HMLE_EOL_CRLF),0L);
            } else {
            WinSendMsg(hwndHMLE,HMLM_SETTEXTFORMAT,MPFROMLONG(HMLE_EOL_LF),0L);
            WinPostMsg(hwndStatbar,STATBAR_USERM_SETEOLTYPE,MPFROMLONG(HMLE_EOL_LF),0L);
            }
        if (HanType == 1)
            {
            WinSendMsg(hwndHMLE,HMLM_SETHANTYPE,MPFROMLONG(HMLE_HAN_KS),0L);
            WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANTYPE,MPFROMLONG(HMLE_HAN_KS),0L);
            } else {
            WinSendMsg(hwndHMLE,HMLM_SETHANTYPE,MPFROMLONG(HMLE_HAN_SY),0L);
            WinPostMsg(hwndStatbar,STATBAR_USERM_SETHANTYPE,MPFROMLONG(HMLE_HAN_SY),0L);
            }

        wordWrap = ( BOOL )WinSendDlgItemMsg( hwndDlg, IDB_WORDWRAP, BM_QUERYCHECK, 0, 0 );
        WinQueryWindowText( WinWindowFromID( hwndDlg, IDEF_WORDWRAP_SIZE ), sizeof( size ), size );
        wordWrapSize = atoi( size );
        if(( wordWrapSize != 0 ) && ( wordWrapSize < MIN_WORDWRAP_SIZE ))
            wordWrapSize = MIN_WORDWRAP_SIZE;

        WinSendMsg( hwndHMLE, HMLM_SETWRAP, MPFROM2SHORT( wordWrap, wordProtect ), MPFROMSHORT( wordWrapSize ));
        }
    WinDestroyWindow(hwndDlg);
    return 0L;
}