Changeset 1163 for trunk/dll/notify.c


Ignore:
Timestamp:
Sep 5, 2008, 11:43:52 PM (17 years ago)
Author:
John Small
Message:

Ticket 187: Draft 1: Functions only

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/notify.c

    r1063 r1163  
    1 
    21/***********************************************************************
    32
     
    2120#include <string.h>
    2221#include <ctype.h>
    23 #include <stddef.h>                     // _threadid
    24 #include <process.h>                    // _beginthread
     22#include <stddef.h>                     // _threadid
     23#include <process.h>                    // _beginthread
    2524
    2625#define INCL_DOS
    2726#define INCL_WIN
    2827#define INCL_GPI
    29 #define INCL_LONGLONG                   // dircnrs.h
     28#define INCL_LONGLONG                   // dircnrs.h
    3029
    3130#include "fm3dlg.h"
    3231#include "fm3str.h"
    33 #include "errutil.h"                    // Dos_Error...
    34 #include "strutil.h"                    // GetPString
     32#include "errutil.h"                    // Dos_Error...
     33#include "strutil.h"                    // GetPString
     34#include "notify.h"
    3535#include "fm3dll.h"
    3636#include "fortify.h"
     
    4040static PSZ pszSrcFile = __FILE__;
    4141
    42 static volatile HWND hwndNotify;        // 16 Apr 08 SHL
     42static volatile HWND hwndNotify;        // 16 Apr 08 SHL
     43
     44VOID StartNotes(CHAR * s);
    4345
    4446/**
     
    5860
    5961      if (!WinStartTimer(WinQueryAnchorBlock(hwnd), hwnd, ID_TIMER2, 5000)) {
    60         Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "WinStartTimer");
    61         WinDestroyWindow(hwnd);
     62        Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "WinStartTimer");
     63        WinDestroyWindow(hwnd);
    6264      }
    6365      else {
    6466
    65         RGB2 rgb2F, rgb2;
    66 
    67         memset(&rgb2F, 0, sizeof(RGB2));
    68         rgb2F.bRed = (BYTE)65;
    69         rgb2.bRed = rgb2.bGreen = rgb2.bBlue = (BYTE)255;
    70         rgb2.fcOptions = 0;
    71         SetPresParams(hwnd, &rgb2, &rgb2F, &rgb2, GetPString(IDS_8HELVTEXT));
    72         if (hwndMain) {
    73           if (hwndStatus)
    74             WinShowWindow(hwndStatus, FALSE);
    75           if (hwndStatus2)
    76             WinShowWindow(hwndStatus2, FALSE);
    77         }
    78         PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     67        RGB2 rgb2F, rgb2;
     68
     69        memset(&rgb2F, 0, sizeof(RGB2));
     70        rgb2F.bRed = (BYTE)65;
     71        rgb2.bRed = rgb2.bGreen = rgb2.bBlue = (BYTE)255;
     72        rgb2.fcOptions = 0;
     73        SetPresParams(hwnd, &rgb2, &rgb2F, &rgb2, GetPString(IDS_8HELVTEXT));
     74        if (hwndMain) {
     75          if (hwndStatus)
     76            WinShowWindow(hwndStatus, FALSE);
     77          if (hwndStatus2)
     78            WinShowWindow(hwndStatus2, FALSE);
     79        }
     80        PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
    7981      }
    8082      return rc;
     
    105107      HPS hps = WinGetPS(hwnd);
    106108      if (hps) {
    107         if (WinQueryWindowPos(hwnd, &swp)) {
    108           ptl.x = 0;
    109           ptl.y = 0;
    110           GpiMove(hps, &ptl);
    111           GpiSetColor(hps, CLR_RED);
    112           ptl.x = swp.cx - 1;
    113           ptl.y = swp.cy - 1;
    114           GpiBox(hps, DRO_OUTLINE, &ptl, 2, 2);
    115         }
    116         WinReleasePS(hwnd);
     109        if (WinQueryWindowPos(hwnd, &swp)) {
     110          ptl.x = 0;
     111          ptl.y = 0;
     112          GpiMove(hps, &ptl);
     113          GpiSetColor(hps, CLR_RED);
     114          ptl.x = swp.cx - 1;
     115          ptl.y = swp.cy - 1;
     116          GpiBox(hps, DRO_OUTLINE, &ptl, 2, 2);
     117        }
     118        WinReleasePS(hwnd);
    117119      }
    118120      return mr;
     
    132134    if (!showing && hwndMain) {
    133135      if (hwndStatus)
    134         WinShowWindow(hwndStatus, TRUE);
     136        WinShowWindow(hwndStatus, TRUE);
    135137      if (hwndStatus2)
    136         WinShowWindow(hwndStatus2, TRUE);
     138        WinShowWindow(hwndStatus2, TRUE);
    137139    }
    138140    break;
     
    162164      WinQueryWindowPos(hwndStatus2, &swpS2);
    163165    x = hwndMain ? (hwndStatus ? swpS.x - 1 :
    164                       WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER)) : 0;
     166                      WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER)) : 0;
    165167    y = hwndMain ? (hwndStatus ? swpS.y - 1 :
    166                       WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER)) : 0;
     168                      WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER)) : 0;
    167169    if (hwndMain && hwndStatus) {
    168170      if (hwndStatus2)
    169         cx = swpS2.cx + swpS.cx + 8;
     171        cx = swpS2.cx + swpS.cx + 8;
    170172      else
    171         cx = swpS.cx + 6;
     173        cx = swpS.cx + 6;
    172174    }
    173175    else
     
    179181      p = xmalloc(strlen(str) + 2, pszSrcFile, __LINE__);
    180182      if (!p)
    181         p = str;
     183        p = str;
    182184      else {
    183         strcpy(p + 1, str);
    184         *p = ' ';
     185        strcpy(p + 1, str);
     186        *p = ' ';
    185187      }
    186188    }
     
    189191
    190192    hwnd = WinCreateWindow(hwndP,
    191                            WC_ERRORWND,
    192                            p,
    193                            SS_TEXT | DT_LEFT | DT_VCENTER | WS_VISIBLE,
    194                            x, y, cx, cy, hwndP, HWND_TOP, id++, NULL, NULL);
     193                           WC_ERRORWND,
     194                           p,
     195                           SS_TEXT | DT_LEFT | DT_VCENTER | WS_VISIBLE,
     196                           x, y, cx, cy, hwndP, HWND_TOP, id++, NULL, NULL);
    195197    if (!hwndP)
    196198      Win_Error2(hwndP, hwndP, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW);
     
    244246    else if (status == 107)
    245247      sprintf(&errortext[strlen(errortext)],
    246               GetPString(IDS_PHANTOMTEXT), toupper(*filename));
     248              GetPString(IDS_PHANTOMTEXT), toupper(*filename));
    247249    else if (status == 19)
    248250      strcat(errortext, GetPString(IDS_DISKWRITEPROTEXTTEXT));
     
    270272      // Already have notes dialog - pass message on
    271273      if (mp2) {
    272         WinSendDlgItemMsg(hwndNotify,
    273                           NOTE_LISTBOX,
    274                           LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2);
    275         PostMsg(hwndNotify, UM_NOTIFY, MPVOID, MPVOID);
    276         free((CHAR *)mp2);
     274        WinSendDlgItemMsg(hwndNotify,
     275                          NOTE_LISTBOX,
     276                          LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2);
     277        PostMsg(hwndNotify, UM_NOTIFY, MPVOID, MPVOID);
     278        free((CHAR *)mp2);
    277279      }
    278280      WinDismissDlg(hwnd, 0);
     
    285287      BOOL dummy = TRUE;
    286288      PrfWriteProfileData(fmprof,
    287                           FM3Str, "ThreadNotes", &dummy, sizeof(BOOL));
     289                          FM3Str, "ThreadNotes", &dummy, sizeof(BOOL));
    288290    }
    289291    if (mp2) {
    290292      WinSendDlgItemMsg(hwnd,
    291                         NOTE_LISTBOX,
    292                         LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2);
     293                        NOTE_LISTBOX,
     294                        LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2);
    293295      free((CHAR *)mp2);
    294296    }
     
    308310    {
    309311      ULONG size = sizeof(SWP),
    310         fl = SWP_ZORDER | SWP_FOCUSDEACTIVATE | SWP_SHOW;
     312        fl = SWP_ZORDER | SWP_FOCUSDEACTIVATE | SWP_SHOW;
    311313      SWP swp;
    312314
    313315      if (PrfQueryProfileData(fmprof,
    314                               FM3Str, "NoteWndSwp", (PVOID) & swp, &size)) {
    315         if (swp.fl & (SWP_HIDE | SWP_MINIMIZE)) {
    316           fl |= SWP_MINIMIZE;
    317           fl &= (~SWP_SHOW);
    318         }
    319         else
    320           fl |= (SWP_MOVE | SWP_SIZE);
     316                              FM3Str, "NoteWndSwp", (PVOID) & swp, &size)) {
     317        if (swp.fl & (SWP_HIDE | SWP_MINIMIZE)) {
     318          fl |= SWP_MINIMIZE;
     319          fl &= (~SWP_SHOW);
     320        }
     321        else
     322          fl |= (SWP_MOVE | SWP_SIZE);
    321323      }
    322324      WinSetWindowPos(hwnd, HWND_BOTTOM, swp.x, swp.y, swp.cx, swp.cy, fl);
    323325      if (fl & SWP_MINIMIZE) {
    324         WinSetWindowUShort(hwnd, QWS_XRESTORE, (USHORT) swp.x);
    325         WinSetWindowUShort(hwnd, QWS_CXRESTORE, (USHORT) swp.cx);
    326         WinSetWindowUShort(hwnd, QWS_YRESTORE, (USHORT) swp.y);
    327         WinSetWindowUShort(hwnd, QWS_CYRESTORE, (USHORT) swp.cy);
     326        WinSetWindowUShort(hwnd, QWS_XRESTORE, (USHORT) swp.x);
     327        WinSetWindowUShort(hwnd, QWS_CXRESTORE, (USHORT) swp.cx);
     328        WinSetWindowUShort(hwnd, QWS_YRESTORE, (USHORT) swp.y);
     329        WinSetWindowUShort(hwnd, QWS_CYRESTORE, (USHORT) swp.cy);
    328330      }
    329331    }
     
    339341      WinQueryWindowPos(hwnd, &swp);
    340342      if (!(swp.fl & (SWP_MINIMIZE | SWP_HIDE))) {
    341         szbx = SysVal(SV_CXSIZEBORDER);
    342         szby = SysVal(SV_CYSIZEBORDER);
    343         titl = SysVal(SV_CYTITLEBAR);
    344         WinSetWindowPos(WinWindowFromID(hwnd, NOTE_LISTBOX),
    345                         HWND_TOP,
    346                         szbx,
    347                         szby,
    348                         swp.cx - (szbx * 2L),
    349                         (swp.cy - titl) - (szby * 2L), SWP_MOVE | SWP_SIZE);
     343        szbx = SysVal(SV_CXSIZEBORDER);
     344        szby = SysVal(SV_CYSIZEBORDER);
     345        titl = SysVal(SV_CYTITLEBAR);
     346        WinSetWindowPos(WinWindowFromID(hwnd, NOTE_LISTBOX),
     347                        HWND_TOP,
     348                        szbx,
     349                        szby,
     350                        swp.cx - (szbx * 2L),
     351                        (swp.cy - titl) - (szby * 2L), SWP_MOVE | SWP_SIZE);
    350352      }
    351353      if (!(swp.fl & SWP_MAXIMIZE)) {
    352         if (swp.fl & (SWP_MINIMIZE | SWP_HIDE)) {
    353           swp.x = WinQueryWindowUShort(hwnd, QWS_XRESTORE);
    354           swp.y = WinQueryWindowUShort(hwnd, QWS_YRESTORE);
    355           swp.cx = WinQueryWindowUShort(hwnd, QWS_CXRESTORE);
    356           swp.cy = WinQueryWindowUShort(hwnd, QWS_CYRESTORE);
    357         }
    358         PrfWriteProfileData(fmprof,
    359                             FM3Str, "NoteWndSwp", (PVOID) & swp, sizeof(SWP));
     354        if (swp.fl & (SWP_MINIMIZE | SWP_HIDE)) {
     355          swp.x = WinQueryWindowUShort(hwnd, QWS_XRESTORE);
     356          swp.y = WinQueryWindowUShort(hwnd, QWS_YRESTORE);
     357          swp.cx = WinQueryWindowUShort(hwnd, QWS_CXRESTORE);
     358          swp.cy = WinQueryWindowUShort(hwnd, QWS_CYRESTORE);
     359        }
     360        PrfWriteProfileData(fmprof,
     361                            FM3Str, "NoteWndSwp", (PVOID) & swp, sizeof(SWP));
    360362      }
    361363    }
     
    370372      SHORT y;
    371373      SHORT x = (SHORT)WinSendDlgItemMsg(hwnd,
    372                                         NOTE_LISTBOX,
    373                                         LM_QUERYITEMCOUNT, MPVOID, MPVOID);
     374                                        NOTE_LISTBOX,
     375                                        LM_QUERYITEMCOUNT, MPVOID, MPVOID);
    374376      if (x > 60) {
    375         for (y = 0; y < x - 50; y++) {
    376           WinSendDlgItemMsg(hwnd,
    377                             NOTE_LISTBOX,
    378                             LM_DELETEITEM, MPFROMSHORT(y), MPVOID);
    379         }
     377        for (y = 0; y < x - 50; y++) {
     378          WinSendDlgItemMsg(hwnd,
     379                            NOTE_LISTBOX,
     380                            LM_DELETEITEM, MPFROMSHORT(y), MPVOID);
     381        }
    380382      }
    381383    }
     
    385387    {
    386388      SHORT x = (SHORT) WinSendDlgItemMsg(hwnd,
    387                                           NOTE_LISTBOX,
    388                                           LM_QUERYITEMCOUNT, MPVOID, MPVOID);
     389                                          NOTE_LISTBOX,
     390                                          LM_QUERYITEMCOUNT, MPVOID, MPVOID);
    389391      if (x > 0)
    390         WinSendDlgItemMsg(hwnd,
    391                           NOTE_LISTBOX,
    392                           LM_SETTOPINDEX, MPFROMSHORT(x), MPVOID);
     392        WinSendDlgItemMsg(hwnd,
     393                          NOTE_LISTBOX,
     394                          LM_SETTOPINDEX, MPFROMSHORT(x), MPVOID);
    393395    }
    394396    return 0;
     
    396398  case UM_SHOWME:
    397399    WinSetWindowPos(hwnd,
    398                     HWND_TOP,
    399                     0,
    400                     0,
    401                     0, 0, SWP_SHOW | SWP_RESTORE | SWP_ZORDER | SWP_ACTIVATE);
     400                    HWND_TOP,
     401                    0,
     402                    0,
     403                    0, 0, SWP_SHOW | SWP_RESTORE | SWP_ZORDER | SWP_ACTIVATE);
    402404    return 0;
    403405
     
    413415      fThreadNotes = FALSE;
    414416      PrfWriteProfileData(fmprof,
    415                           FM3Str, "ThreadNotes", &fThreadNotes, sizeof(BOOL));
     417                          FM3Str, "ThreadNotes", &fThreadNotes, sizeof(BOOL));
    416418      hwndNotify = (HWND) 0;
    417419    }
     
    439441    if (hmq) {
    440442      if (!hwndNotify)
    441         WinDlgBox(HWND_DESKTOP,
    442                   HWND_DESKTOP,
    443                   NoteWndProc, FM3ModHandle, NOTE_FRAME, (CHAR *)args);
     443        WinDlgBox(HWND_DESKTOP,
     444                  HWND_DESKTOP,
     445                  NoteWndProc, FM3ModHandle, NOTE_FRAME, (CHAR *)args);
    444446      WinDestroyMsgQueue(hmq);
    445447    }
     
    463465      USHORT i;
    464466      for (i = 0; !hwndNotify && i < 10; i++)
    465         DosSleep(10);
     467        DosSleep(10);
    466468      if (!hwndNotify)
    467         Runtime_Error(pszSrcFile, __LINE__, "Can not create Notify window");
     469        Runtime_Error(pszSrcFile, __LINE__, "Can not create Notify window");
    468470    }
    469471  }
     
    485487    if (*p) {
    486488      if (!hwndNotify) {
    487         fThreadNotes = FALSE;
    488         StartNotes(NULL);
     489        fThreadNotes = FALSE;
     490        StartNotes(NULL);
    489491      }
    490492      if (hwndNotify) {
    491         s = xmalloc(strlen(p) + 14, pszSrcFile, __LINE__);
    492         if (s) {
    493           sprintf(s, "%08lx  %s", _threadid, p);
    494           while (!once) {
    495             if ((SHORT) WinSendDlgItemMsg(hwndNotify,
    496                                           NOTE_LISTBOX,
    497                                           LM_INSERTITEM,
    498                                           MPFROM2SHORT(LIT_END, 0),
    499                                           MPFROMP(s)) >= 0) {
    500               ret = TRUE;
    501               PostMsg(hwndNotify, UM_NOTIFY, MPVOID, MPVOID);
    502               break;
    503             }
    504             PostMsg(hwndNotify, UM_CONTAINER_FILLED, MPVOID, MPVOID);
    505             once = TRUE;
     493        s = xmalloc(strlen(p) + 14, pszSrcFile, __LINE__);
     494        if (s) {
     495          sprintf(s, "%08lx  %s", _threadid, p);
     496          while (!once) {
     497            if ((SHORT) WinSendDlgItemMsg(hwndNotify,
     498                                          NOTE_LISTBOX,
     499                                          LM_INSERTITEM,
     500                                          MPFROM2SHORT(LIT_END, 0),
     501                                          MPFROMP(s)) >= 0) {
     502              ret = TRUE;
     503              PostMsg(hwndNotify, UM_NOTIFY, MPVOID, MPVOID);
     504              break;
     505            }
     506            PostMsg(hwndNotify, UM_CONTAINER_FILLED, MPVOID, MPVOID);
     507            once = TRUE;
    506508          }
    507509          free(s);
    508         }
     510        }
    509511      }
    510512    }
     
    544546  if (hwndNotify)
    545547    WinSetWindowPos(hwndNotify,
    546                     HWND_BOTTOM,
    547                     0,
    548                     0, 0, 0, SWP_MINIMIZE | SWP_ZORDER | SWP_FOCUSDEACTIVATE);
     548                    HWND_BOTTOM,
     549                    0,
     550                    0, 0, 0, SWP_MINIMIZE | SWP_ZORDER | SWP_FOCUSDEACTIVATE);
    549551}
    550552
Note: See TracChangeset for help on using the changeset viewer.