home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / code25.zip / fsprefr.c < prev    next >
Text File  |  1995-10-24  |  18KB  |  594 lines

  1.  
  2. #define VAR_SCOPE extern
  3.  
  4. #include "fsp.h"
  5.  
  6. //*** Prototypes *************************************************************
  7.  
  8. MRESULT EXPENTRY pfndpRefrProps  ( HWND, ULONG, MPARAM, MPARAM );
  9.  
  10. VOID             pfnShowEAs      ( HWND, PREFRREC, BOOL );
  11. VOID             pfnCleanUp      ( PUSEREC, BOOL );
  12.  
  13. //*** Globals ****************************************************************
  14.  
  15. //****************************************************************************
  16. // Reference Properties Dialog
  17. //****************************************************************************
  18.  
  19. MRESULT EXPENTRY pfndpRefrProps      ( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 )
  20. {
  21.    PUSEREC     pRecScn;
  22.     
  23.    pRecScn = (PUSEREC) WinQueryWindowULong ( hwnd, QWL_USER );
  24.     
  25.    switch ( msg ) 
  26.    {
  27.        
  28.       case WM_INITDLG:
  29.       {
  30.          PDATREC  pdr;
  31.          PREFRREC prr;
  32.          PBYTE    pbScn;
  33.  
  34.          pRecScn = PVOIDFROMMP ( mp2 );
  35.           
  36.          WinSetWindowULong ( hwnd, QWL_USER, (ULONG) pRecScn );
  37.           
  38.          pdr = pRecScn->pdr;
  39.           
  40.          pdr->hwndE = hwnd;//WinWindowFromID ( WinQueryWindow ( hwnd, QW_PARENT ), FID_MENU );
  41.          pfnHaveAKid ( pRecScn, TRUE );
  42.  
  43.          pdr->pszStat = malloc ( 80 );
  44.  
  45.          pdr->pvWork  = malloc ( sizeof ( REFRREC ) );
  46.  
  47.          prr = (PREFRREC) pdr->pvWork;
  48.  
  49.          //*** Load Stored Data *********************************************
  50.  
  51.          pbScn = (PBYTE) pdr->pvDat;
  52.  
  53.          prr->pszFileName = (PSZ) malloc ( strlen ( pbScn ) + 1 );
  54.          strcpy ( prr->pszFileName, (PSZ) pbScn );
  55.          pbScn += strlen ( prr->pszFileName ) + 1;
  56.  
  57.          prr->pszIconFile = (PSZ) malloc ( strlen ( pbScn ) + 1 );
  58.          strcpy ( prr->pszIconFile, (PSZ) pbScn );
  59.          pbScn += strlen ( prr->pszIconFile ) + 1;
  60.  
  61.          memcpy ( &prr->cdUpd, pbScn, sizeof ( CDATE ) );
  62.          pbScn += sizeof ( CDATE );
  63.           
  64.          memcpy ( &prr->ulOpt, pbScn, sizeof ( ULONG ) );
  65.          pbScn += sizeof ( ULONG );
  66.  
  67.          //*** Init Dialog **************************************************
  68.  
  69.          WinCheckButton    ( hwnd, DIT_REFR_DEFICON, ( prr->ulOpt & SCB_REFR_DEFICON ) ? TRUE : FALSE );
  70.  
  71.          WinSetDlgItemText ( hwnd, DIT_REFR_FILENAME, prr->pszFileName );
  72.          WinSetDlgItemText ( hwnd, DIT_REFR_ICONFILE, prr->pszIconFile );
  73.  
  74.          //*** Load EA's from Disk and Display Them *************************
  75.  
  76.          pfnShowEAs ( hwnd, prr, FALSE );
  77.  
  78.          pfnSelEntry ( hwnd, DIT_REFR_SUBJECT );
  79.  
  80.          WinEnableControl ( hwnd, DID_OK, FALSE );
  81.       }
  82.       return (MRESULT)TRUE;//break;
  83.        
  84.       case UWM_SETRECPTR: //*** Store Data Pointer **************************
  85.       {
  86.          pRecScn = PVOIDFROMMP ( mp1 );
  87.           
  88.          WinSetWindowPtr ( hwnd, 0, pRecScn );
  89.       }
  90.       break;
  91.  
  92.       case UWM_SAVE:
  93.       {
  94.          pfnRefrSave ( pRecScn, hwnd, TRUE);
  95.       }
  96.       break;
  97.  
  98.       case WM_HELP:
  99.       {
  100.          SHORT   sId;
  101.  
  102.          sId = WinQueryWindowUShort ( hwnd, QWS_ID );
  103.  
  104.          WinSendMsg ( hwndH, HM_DISPLAY_HELP,
  105.                       MPFROM2SHORT ( sId, 0 ), MPFROMSHORT ( HM_RESOURCEID ) );
  106.       }
  107.       break;
  108.        
  109.       case WM_CONTROL:
  110.       {
  111.          if ( SHORT2FROMMP ( mp1 ) == EN_CHANGE || SHORT2FROMMP ( mp1 ) == MLN_CHANGE ||
  112.               ( SHORT2FROMMP ( mp1 ) == BN_CLICKED && SHORT1FROMMP ( mp1 ) == DIT_REFR_DEFICON ) )
  113.             if ( ! WinIsControlEnabled ( hwnd, DID_OK ) )
  114.             {
  115.                WinEnableControl ( hwnd, DID_OK, TRUE );
  116.                pRecScn->pdr->fbModified = TRUE;
  117.             }
  118.          if ( WinSendDlgItemMsg ( hwnd, DIT_REFR_DEFICON, BM_QUERYCHECK, NULL, NULL ) )
  119.          {
  120.             WinEnableControl ( hwnd, DIT_REFR_ICONFILE_GET, FALSE );
  121.             WinEnableControl ( hwnd, DIT_REFR_ICONFILE,     FALSE );
  122.          }
  123.          else
  124.          {
  125.             WinEnableControl ( hwnd, DIT_REFR_ICONFILE_GET, TRUE );
  126.             WinEnableControl ( hwnd, DIT_REFR_ICONFILE,     TRUE );
  127.          }
  128.       }
  129.       break;
  130.        
  131.       case WM_CLOSE:
  132.       {
  133.          WinSendMsg ( hwnd, WM_COMMAND, MPFROM2SHORT ( DID_CANCEL, 0 ), NULL );
  134.       }
  135.       return WinDefDlgProc ( hwnd, msg, mp1, mp2 );
  136.        
  137.       case WM_COMMAND:
  138.       {
  139.          switch ( SHORT1FROMMP ( mp1 ) ) 
  140.          {
  141.             case DIT_REFR_ICONFILE_GET:
  142.             {
  143.                PSZ      pszFileTmp;
  144.                PDATREC  pdr;
  145.                PREFRREC prr;
  146.                 
  147.                pdr = pRecScn->pdr;
  148.              
  149.                prr = (PREFRREC) pdr->pvWork;
  150.              
  151.                /*if ( *prr->pszFileName )
  152.                   pszFileTmp = pfnFileNameBuf ( "prr->pszFileName" );
  153.                else*/
  154.                   pszFileTmp = pfnFileNameBuf ( "*" );
  155.       
  156.                if ( pfnFileDialog ( hwnd, "Get Reference Icon File", TRUE, pszFileTmp ) )
  157.                {
  158.                   if ( ! strlen ( pszFileTmp ) )
  159.                   {
  160.                      break;
  161.                   }
  162.  
  163.                   if ( ! pfnFileExists ( pszFileTmp ) )
  164.                   {
  165.                      CHAR achBuf[CCHMAXPATH+80];
  166.                      sprintf ( achBuf, "Error ! Icon file: %s not found.", pszFileTmp );
  167.                       
  168.                      pfnMsgOK ( hwnd, APP_TITLE, achBuf );
  169.                      break;
  170.                   }
  171.  
  172.                   pdr->fbModified = TRUE;
  173.  
  174.                   prr->pszIconFile = realloc ( prr->pszIconFile, strlen ( pszFileTmp ) + 1 );
  175.  
  176.                   strcpy ( prr->pszIconFile, pszFileTmp );
  177.  
  178.                   WinSetDlgItemText ( hwnd, DIT_REFR_ICONFILE, prr->pszIconFile );
  179.  
  180.                   WinEnableControl ( hwnd, DID_OK, TRUE );
  181.                }
  182.       
  183.                free ( pszFileTmp );
  184.             }
  185.             break;
  186.              
  187.             case DID_CANCEL:
  188.             {
  189.                if ( WinIsControlEnabled ( hwnd, DID_OK ) )
  190.                {
  191.                   if (  pfnMsgYesNo ( hwnd, APP_TITLE,
  192.                                       "This entry has been modified. Save changes ?" ) )
  193.                   {
  194.                      WinSendMsg ( hwnd, WM_COMMAND, MPFROM2SHORT ( DID_OK, 0 ), NULL );
  195.                      break;
  196.                   }
  197.                }
  198.                 
  199.                pfnCleanUp ( pRecScn, FALSE );
  200.  
  201.                WinDismissDlg ( hwnd, FALSE );
  202.             }
  203.             break;
  204.              
  205.             case DID_OK:
  206.             {
  207.                if ( pfnRefrSave ( pRecScn, hwnd, FALSE) )
  208.                   WinDismissDlg ( hwnd, TRUE );
  209.             }
  210.             break;
  211.              
  212.          };
  213.       }
  214.       break;
  215.        
  216.       default:
  217.       return WinDefDlgProc ( hwnd, msg, mp1, mp2 );
  218.        
  219.    }
  220.    return (MRESULT) FALSE;
  221. }
  222.  
  223. //****************************************************************************
  224. // Show EA's
  225. //****************************************************************************
  226. VOID             pfnShowEAs      ( HWND hwnd, PREFRREC prr, BOOL FirstFree )
  227. {
  228.    if ( FirstFree )
  229.    {
  230.       free ( prr->pszSub      );
  231.       free ( prr->pszKey      );
  232.       free ( prr->pszCom      );
  233.    }
  234.  
  235.    prr->pszSub = 0;
  236.    prr->pszKey = 0;
  237.    prr->pszCom = 0;
  238.  
  239.    if ( ! pfnGetStdEAs ( prr->pszFileName, &prr->pszSub, &prr->pszCom, &prr->pszKey ) )
  240.    {
  241.       pfnMsgOK ( hwnd, APP_TITLE,
  242.                  "Could not get extended attributes." );
  243.    }
  244.    else
  245.    {
  246.       if ( prr->pszSub )
  247.          WinSetDlgItemText ( hwnd, DIT_REFR_SUBJECT,  prr->pszSub      );
  248.  
  249.       if ( prr->pszKey )
  250.          pfnImportToMLE    ( hwnd, DIT_REFR_KEYWRDS,  prr->pszKey      );
  251.       if ( prr->pszCom )
  252.          pfnImportToMLE    ( hwnd, DIT_REFR_COMMNTS,  prr->pszCom      );
  253.    }
  254.     
  255. }
  256.  
  257. //****************************************************************************
  258. // Save the Entry
  259. //****************************************************************************
  260. BOOL             pfnRefrSave         ( PUSEREC pRecScn, HWND hwnd, BOOL force )
  261. {
  262.    if ( hwnd )
  263.    {
  264.       PDATREC  pdr;
  265.       PREFRREC prr;
  266.       ULONG    ulLen;
  267.       
  268.       pdr = pRecScn->pdr;
  269.        
  270.       prr = (PREFRREC) pdr->pvWork;
  271.       
  272.       //*** File Name *************************************************
  273.        
  274.       /*if ( pfnExportFromEF ( hwnd, DIT_REFR_FILENAME, &prr->pszFileName, &ulLen, force ) )
  275.       {
  276.          if ( ulLen < 2 && ! force )
  277.          {
  278.             pfnMsgOK ( hwnd, APP_TITLE, "File name must be specified." );
  279.             pfnSelEntry ( hwnd, DIT_REFR_FILENAME );
  280.             return FALSE;
  281.          }
  282.       
  283.          ++ulLen;
  284.           
  285.          prr->pszFileName = realloc ( prr->pszFileName, ulLen );
  286.           
  287.          WinQueryDlgItemText ( hwnd, DIT_REFR_FILENAME, ulLen, prr->pszFileName );
  288.       
  289.          pdr->ulOpts &= ~SCB_REFR_ISFILE;
  290.          pdr->ulOpts &= ~SCB_REFR_ISPATH;
  291.  
  292.          if ( pfnFileExists ( prr->pszFileName ) )
  293.             pdr->ulOpts |=  SCB_REFR_ISFILE;
  294.          else if ( pfnPathExists ( prr->pszFileName ) )
  295.             pdr->ulOpts |=  SCB_REFR_ISPATH;
  296.          else
  297.          {
  298.             CHAR achBuf[CCHMAXPATH+80];
  299.             sprintf ( achBuf, "Error ! %s not found.", prr->pszFileName );
  300.              
  301.             pfnMsgOK ( hwnd, APP_TITLE, achBuf );
  302.             pfnSelEntry ( hwnd, DIT_REFR_FILENAME );
  303.             return FALSE;
  304.          }
  305.       
  306.          pdr->fbModified = TRUE;
  307.          fbModified = TRUE;
  308.       }*/
  309.        
  310.       //*** Icon File *************************************************
  311.        
  312.       ulLen = 0;
  313.  
  314.       if ( WinQueryButtonCheckstate ( hwnd, DIT_REFR_DEFICON ) )
  315.          prr->ulOpt |= SCB_REFR_DEFICON;
  316.  
  317.       else if ( pfnExportFromEF ( hwnd, DIT_REFR_ICONFILE, &prr->pszIconFile, &ulLen, force ) )
  318.       {
  319.          if ( ulLen > 1 && ! pfnFileExists ( prr->pszIconFile ) )
  320.          {
  321.             CHAR achBuf[CCHMAXPATH+80];
  322.             sprintf ( achBuf, "Error ! %s not found.", prr->pszIconFile );
  323.              
  324.             pfnMsgOK ( hwnd, APP_TITLE, achBuf );
  325.             pfnSelEntry ( hwnd, DIT_REFR_ICONFILE );
  326.             pdr->fbModified = FALSE;
  327.             return FALSE;
  328.          }
  329.          else if ( ulLen )
  330.             prr->ulOpt &= ~SCB_REFR_DEFICON;
  331.       
  332.          pdr->fbModified = TRUE;
  333.          fbModified = TRUE;
  334.       }
  335.        
  336.       //*** Subject ***************************************************
  337.        
  338.       if ( pfnExportFromEF ( hwnd, DIT_REFR_SUBJECT, &prr->pszSub, &ulLen, FALSE ) )
  339.          pfnPutStdEA ( prr->pszFileName, ".SUBJECT", prr->pszSub );
  340.        
  341.       //*** Key Phrases ***********************************************
  342.        
  343.       if ( pfnExportFromMLE ( hwnd, DIT_REFR_KEYWRDS, &prr->pszKey, &ulLen, FALSE ) )
  344.          pfnPutStdEA ( prr->pszFileName, ".KEYPHRASES", prr->pszKey );
  345.        
  346.       //*** Comments **************************************************
  347.        
  348.       if ( pfnExportFromMLE ( hwnd, DIT_REFR_COMMNTS, &prr->pszCom, &ulLen, FALSE ) )
  349.          pfnPutStdEA ( prr->pszFileName, ".COMMENTS", prr->pszCom );
  350.        
  351.       pfnCleanUp ( pRecScn, TRUE );
  352.    }
  353.  
  354.    return TRUE;
  355. }
  356.  
  357. //****************************************************************************
  358. // Clean Up from Properties Dialog
  359. //****************************************************************************
  360. VOID             pfnCleanUp          ( PUSEREC pRecScn, BOOL SaveIt )
  361. {
  362.    PDATREC  pdr;
  363.    PREFRREC prr;
  364.    PBYTE    pbScn;
  365.  
  366.    pdr = pRecScn->pdr;
  367.     
  368.    prr = (PREFRREC) pdr->pvWork;
  369.  
  370.    //*** Save the Entry ******************************************************
  371.  
  372.    if ( SaveIt )
  373.    {
  374.       pdr->ulDLen = strlen ( prr->pszFileName ) + 1 +
  375.                     strlen ( prr->pszIconFile ) + 1 +
  376.                     sizeof ( CDATE ) +
  377.                     sizeof ( ULONG );
  378.  
  379.       pdr->pvDat = realloc ( pdr->pvDat, pdr->ulDLen );
  380.  
  381.       pbScn = (PBYTE) pdr->pvDat;
  382.  
  383.       memcpy ( pbScn, prr->pszFileName, strlen ( prr->pszFileName ) + 1 );
  384.       pbScn += strlen ( prr->pszFileName ) + 1;
  385.        
  386.       memcpy ( pbScn, prr->pszIconFile, strlen ( prr->pszIconFile ) + 1 );
  387.       pbScn += strlen ( prr->pszIconFile ) + 1;
  388.        
  389.       pfnSetWhen ( &prr->cdUpd, NULL );
  390.  
  391.       memcpy ( pbScn, &prr->cdUpd, sizeof ( CDATE ) );
  392.       pbScn += sizeof ( CDATE );
  393.        
  394.       memcpy ( pbScn, &prr->ulOpt, sizeof ( ULONG ) );
  395.       pbScn += sizeof ( ULONG );
  396.  
  397.       //*** Update Tree View Icon ********************************************
  398.  
  399.       if ( pdr->fbModified )
  400.       {
  401.          pfnRefrIcon ( pRecScn );
  402.  
  403.          WinSendMsg ( hwndC, CM_INVALIDATERECORD,
  404.                       MPFROMP ( &pRecScn ), MPFROM2SHORT ( 1, CMA_NOREPOSITION ) );
  405.  
  406.          pdr->fbModified = FALSE;
  407.       }
  408.    }
  409.  
  410.    //*** Clean Up Tree Display ***********************************************
  411.  
  412.    //pdr->ulOpts &= ~SCB_OPENED;
  413.     
  414.    pdr->hwndD   = 0;
  415.    pdr->hwndE   = 0;
  416.    pfnHaveAKid ( pRecScn, FALSE );
  417.     
  418.    WinEnableWindowUpdate ( pdr->hwndE, FALSE );
  419.  
  420.    //pfnNodeScan  ( pdr->hwndE, SCB_FREE,
  421.    //               pRecScn->ulType, pRecScn->pdr->pvDat );
  422.  
  423.    //free ( pdr->psSrch->pszFnd );
  424.    //free ( pdr->psSrch );
  425.    //free ( pdr->pszStat );
  426.     
  427.    /*WinSendMsg ( hwndC, CM_SETRECORDEMPHASIS,
  428.                 MPFROMP ( pRecScn ),
  429.                 MPFROM2SHORT ( FALSE, CRA_INUSE ) );*/
  430.     
  431.    //*** Free the Memory *****************************************************
  432.  
  433.    free ( prr->pszFileName );
  434.    free ( prr->pszIconFile );
  435.    free ( prr->pszSub      );
  436.    free ( prr->pszKey      );
  437.    free ( prr->pszCom      );
  438.  
  439.    free ( pdr->pszStat );
  440.    free ( pdr->pvWork  );
  441. }
  442.  
  443. //****************************************************************************
  444. // Create New Record
  445. //****************************************************************************
  446. BOOL             pfnRefrNewRec   ( PUSEREC pRecScn, PSZ pszFileName )
  447. {
  448.    PDATREC  pdr;
  449.    PBYTE    pbScn;
  450.    CDATE    cdUpd;
  451.    PULONG   pulOpts;
  452.  
  453.    pdr = pRecScn->pdr;
  454.     
  455.    pdr->ulDLen = strlen ( pszFileName ) + 1 +
  456.                  1 +
  457.                  sizeof ( CDATE ) +
  458.                  sizeof ( ULONG );
  459.  
  460.    pdr->pvDat = (PVOID) malloc ( pdr->ulDLen );
  461.  
  462.    pbScn = (PBYTE) pdr->pvDat;
  463.  
  464.    memcpy ( pbScn, pszFileName, strlen ( pszFileName ) + 1 );
  465.    pbScn += strlen ( pszFileName ) + 1;
  466.     
  467.    memcpy ( pbScn, "\0", 1 );
  468.    pbScn += 1;
  469.     
  470.    pfnSetWhen ( &cdUpd, NULL );
  471.  
  472.    memcpy ( pbScn, &cdUpd, sizeof ( CDATE ) );
  473.    pbScn += sizeof ( CDATE );
  474.     
  475.    pulOpts = (PULONG) pbScn;
  476.    memcpy ( pbScn, &ulRefrOpts, sizeof ( ULONG ) );
  477.    pbScn += sizeof ( ULONG );
  478.  
  479.  
  480.    if ( pfnFileExists ( pszFileName ) )
  481.    {
  482.       *pulOpts |= SCB_REFR_ISFILE;
  483.    }
  484.    else if ( pfnPathExists ( pszFileName ) )
  485.    {
  486.       *pulOpts |= SCB_REFR_ISPATH;
  487.    }
  488.  
  489.    if ( pfnRefrIcon ( pRecScn ) )
  490.       WinSendMsg ( hwndC, CM_INVALIDATERECORD,
  491.                    MPFROMP ( &pRecScn ), MPFROM2SHORT ( 1, CMA_NOREPOSITION ) );
  492.  
  493.    return TRUE;
  494. }
  495.  
  496. //****************************************************************************
  497. // Load Record Info Structure
  498. //****************************************************************************
  499. PREFRREC         pfnRefrLoadEntry    ( PUSEREC pRecScn )
  500. {
  501.    PDATREC  pdr;
  502.    PREFRREC prr = 0;
  503.    PBYTE    pbScn;
  504.  
  505.    pdr = pRecScn->pdr;
  506.     
  507.    prr  = (PREFRREC) malloc ( sizeof ( REFRREC ) );
  508.  
  509.    memset ( prr, 0, sizeof ( REFRREC ) );
  510.  
  511.    //*** Load Stored Data *********************************************
  512.  
  513.    pbScn = (PBYTE) pdr->pvDat;
  514.  
  515.    prr->pszFileName = (PSZ) malloc ( strlen ( pbScn ) + 1 );
  516.    strcpy ( prr->pszFileName, (PSZ) pbScn );
  517.    pbScn += strlen ( prr->pszFileName ) + 1;
  518.  
  519.    prr->pszIconFile = (PSZ) malloc ( strlen ( pbScn ) + 1 );
  520.    strcpy ( prr->pszIconFile, (PSZ) pbScn );
  521.    pbScn += strlen ( prr->pszIconFile ) + 1;
  522.  
  523.    memcpy ( &prr->cdUpd, pbScn, sizeof ( CDATE ) );
  524.    pbScn += sizeof ( CDATE );
  525.     
  526.    memcpy ( &prr->ulOpt, pbScn, sizeof ( ULONG ) );
  527.    pbScn += sizeof ( ULONG );
  528.  
  529.    //*** Load EA's from Disk ******************************************
  530.  
  531.    if ( ! pfnGetStdEAs ( prr->pszFileName, &prr->pszSub, &prr->pszCom, &prr->pszKey ) )
  532.    {
  533.       free ( prr );
  534.       return 0;
  535.    }
  536.  
  537.    //*** Done ****************************************************************
  538.  
  539.    return prr;
  540. }
  541.  
  542. //****************************************************************************
  543. // Free Record Info Structure
  544. //****************************************************************************
  545. VOID             pfnRefrFreeEntry    ( PREFRREC pr )
  546. {
  547.    if ( ! pr )
  548.       return;
  549.  
  550.    if ( pr->pszFileName )
  551.       free ( pr->pszFileName );
  552.    if ( pr->pszIconFile )
  553.       free ( pr->pszIconFile );
  554.    if ( pr->pszSub )
  555.       free ( pr->pszSub );
  556.    if ( pr->pszKey )
  557.       free ( pr->pszKey );
  558.    if ( pr->pszCom )
  559.       free ( pr->pszCom );
  560.  
  561.    free ( pr );
  562. }
  563.  
  564. //****************************************************************************
  565. // Clean Up from Properties Dialog
  566. //****************************************************************************
  567. BOOL             pfnRefrIcon         ( PUSEREC pRecScn )
  568. {
  569.    PSZ      pszFile;
  570.    PSZ      pszIcon;
  571.    PULONG   theOpts;
  572.  
  573.    pszFile = (PSZ) pRecScn->pdr->pvDat;
  574.  
  575.    pszIcon = (PSZ) ((PBYTE)pRecScn->pdr->pvDat + strlen ( pszFile ) + 1 );
  576.  
  577.    theOpts = (PULONG) ((PBYTE)pRecScn->pdr->pvDat + 
  578.                               strlen ( pszFile ) + 1 + 
  579.                               strlen ( pszIcon ) + 1 + sizeof (CDATE) );
  580.  
  581.    if ( *theOpts & SCB_REFR_DEFICON )
  582.       pRecScn->crecCore.hptrIcon = hptrRefr;
  583.    else if (*pszIcon)
  584.       pRecScn->crecCore.hptrIcon = WinLoadFileIcon ( pszIcon, FALSE );
  585.    else
  586.       pRecScn->crecCore.hptrIcon = WinLoadFileIcon ( pszFile, FALSE );
  587.  
  588.    if ( pRecScn->crecCore.hptrIcon == NULLHANDLE )
  589.       pRecScn->crecCore.hptrIcon = hptrRefr;
  590.  
  591.    return ( pRecScn->crecCore.hptrIcon != NULLHANDLE );
  592. }
  593.  
  594.