Changeset 1163 for trunk/dll/notify.c
- Timestamp:
- Sep 5, 2008, 11:43:52 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/dll/notify.c (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/notify.c
r1063 r1163 1 2 1 /*********************************************************************** 3 2 … … 21 20 #include <string.h> 22 21 #include <ctype.h> 23 #include <stddef.h> // _threadid24 #include <process.h> // _beginthread22 #include <stddef.h> // _threadid 23 #include <process.h> // _beginthread 25 24 26 25 #define INCL_DOS 27 26 #define INCL_WIN 28 27 #define INCL_GPI 29 #define INCL_LONGLONG // dircnrs.h28 #define INCL_LONGLONG // dircnrs.h 30 29 31 30 #include "fm3dlg.h" 32 31 #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" 35 35 #include "fm3dll.h" 36 36 #include "fortify.h" … … 40 40 static PSZ pszSrcFile = __FILE__; 41 41 42 static volatile HWND hwndNotify; // 16 Apr 08 SHL 42 static volatile HWND hwndNotify; // 16 Apr 08 SHL 43 44 VOID StartNotes(CHAR * s); 43 45 44 46 /** … … 58 60 59 61 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); 62 64 } 63 65 else { 64 66 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); 79 81 } 80 82 return rc; … … 105 107 HPS hps = WinGetPS(hwnd); 106 108 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); 117 119 } 118 120 return mr; … … 132 134 if (!showing && hwndMain) { 133 135 if (hwndStatus) 134 WinShowWindow(hwndStatus, TRUE);136 WinShowWindow(hwndStatus, TRUE); 135 137 if (hwndStatus2) 136 WinShowWindow(hwndStatus2, TRUE);138 WinShowWindow(hwndStatus2, TRUE); 137 139 } 138 140 break; … … 162 164 WinQueryWindowPos(hwndStatus2, &swpS2); 163 165 x = hwndMain ? (hwndStatus ? swpS.x - 1 : 164 WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER)) : 0;166 WinQuerySysValue(HWND_DESKTOP, SV_CXSIZEBORDER)) : 0; 165 167 y = hwndMain ? (hwndStatus ? swpS.y - 1 : 166 WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER)) : 0;168 WinQuerySysValue(HWND_DESKTOP, SV_CYSIZEBORDER)) : 0; 167 169 if (hwndMain && hwndStatus) { 168 170 if (hwndStatus2) 169 cx = swpS2.cx + swpS.cx + 8;171 cx = swpS2.cx + swpS.cx + 8; 170 172 else 171 cx = swpS.cx + 6;173 cx = swpS.cx + 6; 172 174 } 173 175 else … … 179 181 p = xmalloc(strlen(str) + 2, pszSrcFile, __LINE__); 180 182 if (!p) 181 p = str;183 p = str; 182 184 else { 183 strcpy(p + 1, str);184 *p = ' ';185 strcpy(p + 1, str); 186 *p = ' '; 185 187 } 186 188 } … … 189 191 190 192 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); 195 197 if (!hwndP) 196 198 Win_Error2(hwndP, hwndP, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); … … 244 246 else if (status == 107) 245 247 sprintf(&errortext[strlen(errortext)], 246 GetPString(IDS_PHANTOMTEXT), toupper(*filename));248 GetPString(IDS_PHANTOMTEXT), toupper(*filename)); 247 249 else if (status == 19) 248 250 strcat(errortext, GetPString(IDS_DISKWRITEPROTEXTTEXT)); … … 270 272 // Already have notes dialog - pass message on 271 273 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); 277 279 } 278 280 WinDismissDlg(hwnd, 0); … … 285 287 BOOL dummy = TRUE; 286 288 PrfWriteProfileData(fmprof, 287 FM3Str, "ThreadNotes", &dummy, sizeof(BOOL));289 FM3Str, "ThreadNotes", &dummy, sizeof(BOOL)); 288 290 } 289 291 if (mp2) { 290 292 WinSendDlgItemMsg(hwnd, 291 NOTE_LISTBOX,292 LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2);293 NOTE_LISTBOX, 294 LM_INSERTITEM, MPFROM2SHORT(LIT_END, 0), mp2); 293 295 free((CHAR *)mp2); 294 296 } … … 308 310 { 309 311 ULONG size = sizeof(SWP), 310 fl = SWP_ZORDER | SWP_FOCUSDEACTIVATE | SWP_SHOW;312 fl = SWP_ZORDER | SWP_FOCUSDEACTIVATE | SWP_SHOW; 311 313 SWP swp; 312 314 313 315 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 else320 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); 321 323 } 322 324 WinSetWindowPos(hwnd, HWND_BOTTOM, swp.x, swp.y, swp.cx, swp.cy, fl); 323 325 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); 328 330 } 329 331 } … … 339 341 WinQueryWindowPos(hwnd, &swp); 340 342 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); 350 352 } 351 353 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)); 360 362 } 361 363 } … … 370 372 SHORT y; 371 373 SHORT x = (SHORT)WinSendDlgItemMsg(hwnd, 372 NOTE_LISTBOX,373 LM_QUERYITEMCOUNT, MPVOID, MPVOID);374 NOTE_LISTBOX, 375 LM_QUERYITEMCOUNT, MPVOID, MPVOID); 374 376 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 } 380 382 } 381 383 } … … 385 387 { 386 388 SHORT x = (SHORT) WinSendDlgItemMsg(hwnd, 387 NOTE_LISTBOX,388 LM_QUERYITEMCOUNT, MPVOID, MPVOID);389 NOTE_LISTBOX, 390 LM_QUERYITEMCOUNT, MPVOID, MPVOID); 389 391 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); 393 395 } 394 396 return 0; … … 396 398 case UM_SHOWME: 397 399 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); 402 404 return 0; 403 405 … … 413 415 fThreadNotes = FALSE; 414 416 PrfWriteProfileData(fmprof, 415 FM3Str, "ThreadNotes", &fThreadNotes, sizeof(BOOL));417 FM3Str, "ThreadNotes", &fThreadNotes, sizeof(BOOL)); 416 418 hwndNotify = (HWND) 0; 417 419 } … … 439 441 if (hmq) { 440 442 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); 444 446 WinDestroyMsgQueue(hmq); 445 447 } … … 463 465 USHORT i; 464 466 for (i = 0; !hwndNotify && i < 10; i++) 465 DosSleep(10);467 DosSleep(10); 466 468 if (!hwndNotify) 467 Runtime_Error(pszSrcFile, __LINE__, "Can not create Notify window");469 Runtime_Error(pszSrcFile, __LINE__, "Can not create Notify window"); 468 470 } 469 471 } … … 485 487 if (*p) { 486 488 if (!hwndNotify) { 487 fThreadNotes = FALSE;488 StartNotes(NULL);489 fThreadNotes = FALSE; 490 StartNotes(NULL); 489 491 } 490 492 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; 506 508 } 507 509 free(s); 508 }510 } 509 511 } 510 512 } … … 544 546 if (hwndNotify) 545 547 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); 549 551 } 550 552
Note:
See TracChangeset
for help on using the changeset viewer.
