Changeset 551 for trunk/dll/common.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/common.c
r536 r551 48 48 #pragma alloc_text(COMMON5,OpenDirCnr) 49 49 50 51 MRESULT EXPENTRY CommonFrameWndProc (USHORT id, 52 HWND hwnd, 53 ULONG msg, 54 MPARAM mp1, 55 MPARAM mp2) 56 { 57 PFNWP oldproc = (PFNWP)WinQueryWindowPtr(hwnd,0); 58 59 switch(msg) { 60 case UM_TIMER: 61 case UM_ACTION: 62 case UM_SHOWME: 63 case UM_OPENWINDOWFORME: 64 case UM_MINIMIZE: 65 case UM_MAXIMIZE: 66 case UM_CONTAINERDIR: 67 case UM_FILTER: 68 case UM_INITMENU: 69 case UM_COMMAND: 70 case UM_UPDATERECORD: 71 case UM_UPDATERECORDLIST: 72 case WM_COMMAND: 73 case MM_PORTHOLEINIT: 74 case WM_INITMENU: 75 case UM_CONTAINER_FILLED: 76 case UM_FILESMENU: 77 return WinSendMsg(WinWindowFromID(hwnd,FID_CLIENT),msg,mp1,mp2); 78 79 case UM_CONTEXTMENU: 80 PostMsg(WinWindowFromID(hwnd,FID_CLIENT),msg,mp1,mp2); 81 return 0; 82 83 case UM_CONTAINERHWND: 84 return MRFROMLONG(WinWindowFromID(hwnd,id)); 85 86 case DM_DROP: 87 case DM_DRAGOVER: 88 case DM_DRAGLEAVE: 89 case DM_DROPHELP: 90 { 91 CNRDRAGINFO cnd; 92 USHORT dcmd; 93 94 switch(msg) { 95 case DM_DROP: 96 dcmd = CN_DROP; 97 break; 98 case DM_DRAGOVER: 99 dcmd = CN_DRAGOVER; 100 break; 101 case DM_DRAGLEAVE: 102 dcmd = CN_DRAGLEAVE; 103 break; 104 case DM_DROPHELP: 105 dcmd = CN_DROPHELP; 106 break; 107 } 108 cnd.pDragInfo = (PDRAGINFO)mp1; 109 cnd.pRecord = NULL; 110 return WinSendMsg(WinWindowFromID(hwnd,FID_CLIENT), 111 WM_CONTROL, 112 MPFROM2SHORT(id,dcmd), 113 MPFROMP(&cnd)); 114 } 115 116 case UM_RESCAN: 117 if(fAutoTile && 118 !fAmClosing && 119 !fNoTileUpdate && 120 !ParentIsDesktop(hwnd,(HWND)0)) 121 PostMsg(WinQueryWindow(hwnd,QW_PARENT), 122 UM_RESCAN, 123 MPVOID, 124 MPVOID); 125 return 0; 126 127 case WM_MINMAXFRAME: 128 { 129 PSWP pswp = (PSWP)mp1; 130 MRESULT rc; 131 132 rc = oldproc(hwnd,msg,mp1,mp2); 133 if(pswp->fl & (SWP_MINIMIZE | SWP_HIDE | SWP_RESTORE)) 134 WinSendMsg(hwnd,UM_RESCAN,MPVOID,MPVOID); 135 return rc; 136 } 137 138 case WM_DESTROY: 139 WinSendMsg(hwnd,UM_RESCAN,MPVOID,MPVOID); 140 break; 141 } 142 return oldproc(hwnd,msg,mp1,mp2); 143 } 144 145 146 MRESULT EXPENTRY CommonTextProc (HWND hwnd, 147 ULONG msg, 148 MPARAM mp1, 149 MPARAM mp2) 150 { 151 switch(msg) { 152 case WM_CREATE: 153 { 154 MRESULT rc; 155 char font[] = "8.Helv"; 156 157 rc = PFNWPStatic(hwnd,msg,mp1,mp2); 158 switch(WinQueryWindowUShort(hwnd,QWS_ID)) { 159 case DIR_SORT: 160 case DIR_VIEW: 161 case DIR_FILTER: 162 *font = '7'; 163 } 164 SetPresParams(hwnd, 165 &RGBGREY, 166 &RGBBLACK, 167 &RGBBLACK, 168 font); 169 return rc; 170 } 171 } 172 return PFNWPStatic(hwnd,msg,mp1,mp2); 173 } 174 175 176 void CommonTextPaint (HWND hwnd,HPS hps) 50 MRESULT EXPENTRY CommonFrameWndProc(USHORT id, 51 HWND hwnd, 52 ULONG msg, MPARAM mp1, MPARAM mp2) 53 { 54 PFNWP oldproc = (PFNWP) WinQueryWindowPtr(hwnd, 0); 55 56 switch (msg) { 57 case UM_TIMER: 58 case UM_ACTION: 59 case UM_SHOWME: 60 case UM_OPENWINDOWFORME: 61 case UM_MINIMIZE: 62 case UM_MAXIMIZE: 63 case UM_CONTAINERDIR: 64 case UM_FILTER: 65 case UM_INITMENU: 66 case UM_COMMAND: 67 case UM_UPDATERECORD: 68 case UM_UPDATERECORDLIST: 69 case WM_COMMAND: 70 case MM_PORTHOLEINIT: 71 case WM_INITMENU: 72 case UM_CONTAINER_FILLED: 73 case UM_FILESMENU: 74 return WinSendMsg(WinWindowFromID(hwnd, FID_CLIENT), msg, mp1, mp2); 75 76 case UM_CONTEXTMENU: 77 PostMsg(WinWindowFromID(hwnd, FID_CLIENT), msg, mp1, mp2); 78 return 0; 79 80 case UM_CONTAINERHWND: 81 return MRFROMLONG(WinWindowFromID(hwnd, id)); 82 83 case DM_DROP: 84 case DM_DRAGOVER: 85 case DM_DRAGLEAVE: 86 case DM_DROPHELP: 87 { 88 CNRDRAGINFO cnd; 89 USHORT dcmd; 90 91 switch (msg) { 92 case DM_DROP: 93 dcmd = CN_DROP; 94 break; 95 case DM_DRAGOVER: 96 dcmd = CN_DRAGOVER; 97 break; 98 case DM_DRAGLEAVE: 99 dcmd = CN_DRAGLEAVE; 100 break; 101 case DM_DROPHELP: 102 dcmd = CN_DROPHELP; 103 break; 104 } 105 cnd.pDragInfo = (PDRAGINFO) mp1; 106 cnd.pRecord = NULL; 107 return WinSendMsg(WinWindowFromID(hwnd, FID_CLIENT), 108 WM_CONTROL, MPFROM2SHORT(id, dcmd), MPFROMP(&cnd)); 109 } 110 111 case UM_RESCAN: 112 if (fAutoTile && 113 !fAmClosing && !fNoTileUpdate && !ParentIsDesktop(hwnd, (HWND) 0)) 114 PostMsg(WinQueryWindow(hwnd, QW_PARENT), UM_RESCAN, MPVOID, MPVOID); 115 return 0; 116 117 case WM_MINMAXFRAME: 118 { 119 PSWP pswp = (PSWP) mp1; 120 MRESULT rc; 121 122 rc = oldproc(hwnd, msg, mp1, mp2); 123 if (pswp->fl & (SWP_MINIMIZE | SWP_HIDE | SWP_RESTORE)) 124 WinSendMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 125 return rc; 126 } 127 128 case WM_DESTROY: 129 WinSendMsg(hwnd, UM_RESCAN, MPVOID, MPVOID); 130 break; 131 } 132 return oldproc(hwnd, msg, mp1, mp2); 133 } 134 135 MRESULT EXPENTRY CommonTextProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 136 { 137 switch (msg) { 138 case WM_CREATE: 139 { 140 MRESULT rc; 141 char font[] = "8.Helv"; 142 143 rc = PFNWPStatic(hwnd, msg, mp1, mp2); 144 switch (WinQueryWindowUShort(hwnd, QWS_ID)) { 145 case DIR_SORT: 146 case DIR_VIEW: 147 case DIR_FILTER: 148 *font = '7'; 149 } 150 SetPresParams(hwnd, &RGBGREY, &RGBBLACK, &RGBBLACK, font); 151 return rc; 152 } 153 } 154 return PFNWPStatic(hwnd, msg, mp1, mp2); 155 } 156 157 void CommonTextPaint(HWND hwnd, HPS hps) 177 158 { 178 159 int x; 179 USHORT ids[] = {DIR_FOLDERICON,DIR_TOTALS,DIR_SELECTED,DIR_VIEW,180 DIR_FILTER,DIR_SORT,DIR_MAX,0};181 BOOL bools[] = {TRUE,FALSE,TRUE,TRUE,TRUE,TRUE,TRUE};182 183 for(x = 0;ids[x];x++) { 184 if(WinWindowFromID(hwnd,ids[x]) != (HWND)0)185 PaintRecessedWindow(WinWindowFromID(hwnd,ids[x]),hps,186 bools[x],FALSE);187 } 188 }189 190 191 void CommonCreateTextChildren (HWND hwnd,char *class,USHORT *ids)192 { 193 int 194 CHAR 160 USHORT ids[] = { DIR_FOLDERICON, DIR_TOTALS, DIR_SELECTED, DIR_VIEW, 161 DIR_FILTER, DIR_SORT, DIR_MAX, 0 162 }; 163 BOOL bools[] = { TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE }; 164 165 for (x = 0; ids[x]; x++) { 166 if (WinWindowFromID(hwnd, ids[x]) != (HWND) 0) 167 PaintRecessedWindow(WinWindowFromID(hwnd, ids[x]), hps, 168 bools[x], FALSE); 169 } 170 } 171 172 void CommonCreateTextChildren(HWND hwnd, char *class, USHORT * ids) 173 { 174 int x; 175 CHAR s[33]; 195 176 ULONG attrs; 196 177 HWND hwndTmp; … … 201 182 } 202 183 203 for (x = 0;ids[x];x++) {184 for (x = 0; ids[x]; x++) { 204 185 *s = 0; 205 switch (ids[x]) {206 207 208 209 210 211 212 213 214 sprintf(s,"#%d",ids[x]);215 216 217 218 219 } 220 hwndTmp = WinCreateWindow(hwnd, class,s,attrs,0,0,0,0,hwnd,221 HWND_TOP,ids[x],NULL,NULL);186 switch (ids[x]) { 187 case DIR_SORT: 188 case DIR_FILTER: 189 case DIR_VIEW: 190 attrs = SS_TEXT | DT_LEFT | DT_VCENTER; 191 break; 192 case DIR_FOLDERICON: 193 case DIR_MAX: 194 attrs = SS_BITMAP; 195 sprintf(s, "#%d", ids[x]); 196 break; 197 default: 198 attrs = SS_TEXT | DT_CENTER | DT_VCENTER; 199 break; 200 } 201 hwndTmp = WinCreateWindow(hwnd, class, s, attrs, 0, 0, 0, 0, hwnd, 202 HWND_TOP, ids[x], NULL, NULL); 222 203 if (!hwndTmp) 223 Win_Error2(hwnd,hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW); 224 } // for 225 } 226 227 228 void CommonDriveCmd (HWND hwnd,char *drive,USHORT cmd) 204 Win_Error2(hwnd, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 205 } // for 206 } 207 208 void CommonDriveCmd(HWND hwnd, char *drive, USHORT cmd) 229 209 { 230 210 char dv[CCHMAXPATH]; 231 211 232 if (!drive || !*drive)212 if (!drive || !*drive) 233 213 return; 234 strcpy(dv, drive);214 strcpy(dv, drive); 235 215 MakeValidDir(dv); 236 216 237 switch(cmd) { 238 case IDM_MKDIR: 239 PMMkDir(hwnd, 240 dv, 241 FALSE); 242 break; 243 case IDM_INFO: 244 WinDlgBox(HWND_DESKTOP, 245 HWND_DESKTOP, 246 DrvInfoProc, 247 FM3ModHandle, 248 INFO_FRAME, 249 (PVOID)dv); 250 break; 251 case IDM_DRVFLAGS: 252 if(WinDlgBox(HWND_DESKTOP, 253 hwnd, 254 SetDrvProc, 255 FM3ModHandle, 256 DVS_FRAME, 257 MPFROMP(dv)) && 258 hwndTree) 259 PostMsg(hwndTree, 260 WM_COMMAND, 261 MPFROM2SHORT(IDM_UPDATE,0), 262 MPVOID); 263 break; 264 case IDM_SIZES: 265 WinDlgBox(HWND_DESKTOP, 266 HWND_DESKTOP, 267 DirSizeProc, 268 FM3ModHandle, 269 DSZ_FRAME, 270 dv); 271 break; 272 case IDM_SHOWALLFILES: 273 StartSeeAll(HWND_DESKTOP, 274 FALSE, 275 dv); 276 break; 277 case IDM_UNDELETE: 278 WinDlgBox(HWND_DESKTOP, 279 hwnd, 280 UndeleteDlgProc, 281 FM3ModHandle, 282 UNDEL_FRAME, 283 MPFROMP(dv)); 284 break; 285 case IDM_CHKDSK: 286 runemf2(SEPARATE | WINDOWED, 287 hwnd, 288 NULL, 289 NULL, 290 "PMCHKDSK.EXE %c:", 291 toupper(*dv)); 292 break; 293 case IDM_OPTIMIZE: 294 { 295 CHAR FileSystem[CCHMAXPATH]; 296 ULONG type; 297 298 CheckDrive(*dv,FileSystem,&type); 299 if(*FileSystem) { 300 strcat(FileSystem,"OPT.CMD"); 301 runemf2(SEPARATE | WINDOWED, 302 hwnd, 303 NULL, 304 NULL, 305 "%s /C %s %c:", 306 GetCmdSpec(FALSE), 307 FileSystem, 308 toupper(*dv)); 309 } 310 } 311 break; 312 case IDM_FORMAT: 313 runemf2(SEPARATE | WINDOWED, 314 hwnd, 315 NULL, 316 NULL, 317 "PMFORMAT.EXE %c:", 318 toupper(*dv)); 319 break; 320 321 #if 0 // fixme to be gone? 322 323 case IDM_CLOSETRAY: 324 if(driveflags[*dv - 'A'] & DRIVE_CDROM) { 325 326 BYTE parm[4] = {"CD01"}; 327 ULONG dlen,plen; 328 HFILE hfile; 329 APIRET rc; 330 331 dv[2] = 0; 332 rc = DosOpen(dv, 333 &hfile, 334 &dlen, 335 0, 336 0, 337 OPEN_ACTION_OPEN_IF_EXISTS | 338 OPEN_ACTION_CREATE_IF_NEW, 339 OPEN_FLAGS_DASD | 340 OPEN_FLAGS_FAIL_ON_ERROR | 341 OPEN_SHARE_DENYNONE, 342 NULL); 343 if (rc) 344 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosOpen"); 345 else { 346 dlen = 0; 347 plen = sizeof(parm); 348 rc = DosDevIOCtl(hfile, 349 0x80, 350 0x45, 351 &parm, 352 sizeof(parm), 353 &plen, 354 NULL, 355 0, 356 &dlen); 357 DosClose(hfile); 358 if (rc) 359 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosDevIOCtl"); 360 } 361 } 362 break; 217 switch (cmd) { 218 case IDM_MKDIR: 219 PMMkDir(hwnd, dv, FALSE); 220 break; 221 case IDM_INFO: 222 WinDlgBox(HWND_DESKTOP, 223 HWND_DESKTOP, 224 DrvInfoProc, FM3ModHandle, INFO_FRAME, (PVOID) dv); 225 break; 226 case IDM_DRVFLAGS: 227 if (WinDlgBox(HWND_DESKTOP, 228 hwnd, 229 SetDrvProc, 230 FM3ModHandle, DVS_FRAME, MPFROMP(dv)) && hwndTree) 231 PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_UPDATE, 0), MPVOID); 232 break; 233 case IDM_SIZES: 234 WinDlgBox(HWND_DESKTOP, 235 HWND_DESKTOP, DirSizeProc, FM3ModHandle, DSZ_FRAME, dv); 236 break; 237 case IDM_SHOWALLFILES: 238 StartSeeAll(HWND_DESKTOP, FALSE, dv); 239 break; 240 case IDM_UNDELETE: 241 WinDlgBox(HWND_DESKTOP, 242 hwnd, UndeleteDlgProc, FM3ModHandle, UNDEL_FRAME, MPFROMP(dv)); 243 break; 244 case IDM_CHKDSK: 245 runemf2(SEPARATE | WINDOWED, 246 hwnd, NULL, NULL, "PMCHKDSK.EXE %c:", toupper(*dv)); 247 break; 248 case IDM_OPTIMIZE: 249 { 250 CHAR FileSystem[CCHMAXPATH]; 251 ULONG type; 252 253 CheckDrive(*dv, FileSystem, &type); 254 if (*FileSystem) { 255 strcat(FileSystem, "OPT.CMD"); 256 runemf2(SEPARATE | WINDOWED, 257 hwnd, 258 NULL, 259 NULL, 260 "%s /C %s %c:", GetCmdSpec(FALSE), FileSystem, toupper(*dv)); 261 } 262 } 263 break; 264 case IDM_FORMAT: 265 runemf2(SEPARATE | WINDOWED, 266 hwnd, NULL, NULL, "PMFORMAT.EXE %c:", toupper(*dv)); 267 break; 268 269 #if 0 // fixme to be gone? 270 271 case IDM_CLOSETRAY: 272 if (driveflags[*dv - 'A'] & DRIVE_CDROM) { 273 274 BYTE parm[4] = { "CD01" }; 275 ULONG dlen, plen; 276 HFILE hfile; 277 APIRET rc; 278 279 dv[2] = 0; 280 rc = DosOpen(dv, 281 &hfile, 282 &dlen, 283 0, 284 0, 285 OPEN_ACTION_OPEN_IF_EXISTS | 286 OPEN_ACTION_CREATE_IF_NEW, 287 OPEN_FLAGS_DASD | 288 OPEN_FLAGS_FAIL_ON_ERROR | OPEN_SHARE_DENYNONE, NULL); 289 if (rc) 290 Dos_Error(MB_CANCEL, rc, hwnd, pszSrcFile, __LINE__, "DosOpen"); 291 else { 292 dlen = 0; 293 plen = sizeof(parm); 294 rc = DosDevIOCtl(hfile, 295 0x80, 296 0x45, &parm, sizeof(parm), &plen, NULL, 0, &dlen); 297 DosClose(hfile); 298 if (rc) 299 Dos_Error(MB_CANCEL, rc, hwnd, pszSrcFile, __LINE__, "DosDevIOCtl"); 300 } 301 } 302 break; 363 303 #endif // fixme to be gone? 364 304 365 366 case IDM_LOCK: 367 case IDM_UNLOCK: 368 case IDM_EJECT: 369 { 370 BYTE parm[2]; 371 ULONG plen = sizeof(parm),dlen = 0L; 372 373 switch(SHORT1FROMMP(cmd)) { 374 case IDM_LOCK: 375 parm[0] = 1; 376 break; 377 case IDM_UNLOCK: 378 parm[0] = 0; 379 break; 380 case IDM_EJECT: 381 parm[0] = 2; 382 break; 383 } 384 parm[1] = (BYTE)(*dv - 'A'); 385 DosError(FERR_DISABLEHARDERR); 386 DosDevIOCtl(-1L, 387 8L, 388 0x40L, 389 &parm, 390 sizeof(parm), 391 &plen, 392 NULL, 393 0L, 394 &dlen); 395 } 396 break; 397 } 398 } 399 400 401 void CommonCreateMainChildren (HWND hwnd,SWP *swp) 402 { 403 HWND hwndFrame = WinQueryWindow(hwnd,QW_PARENT); 305 case IDM_LOCK: 306 case IDM_UNLOCK: 307 case IDM_EJECT: 308 { 309 BYTE parm[2]; 310 ULONG plen = sizeof(parm), dlen = 0L; 311 312 switch (SHORT1FROMMP(cmd)) { 313 case IDM_LOCK: 314 parm[0] = 1; 315 break; 316 case IDM_UNLOCK: 317 parm[0] = 0; 318 break; 319 case IDM_EJECT: 320 parm[0] = 2; 321 break; 322 } 323 parm[1] = (BYTE) (*dv - 'A'); 324 DosError(FERR_DISABLEHARDERR); 325 DosDevIOCtl(-1L, 326 8L, 0x40L, &parm, sizeof(parm), &plen, NULL, 0L, &dlen); 327 } 328 break; 329 } 330 } 331 332 void CommonCreateMainChildren(HWND hwnd, SWP * swp) 333 { 334 HWND hwndFrame = WinQueryWindow(hwnd, QW_PARENT); 404 335 HWND hwndTmp; 405 336 PFNWP oldproc; … … 407 338 // Create a children of frame window 408 339 hwndStatus = WinCreateWindow(hwndFrame, 409 GetPString(IDS_WCSTATUS), 410 "Status", 411 WS_VISIBLE | SS_TEXT | DT_LEFT | 412 DT_VCENTER, 413 swp->x + 4 + 414 WinQuerySysValue(HWND_DESKTOP, 415 SV_CXSIZEBORDER), 416 swp->y + 4 + 417 WinQuerySysValue(HWND_DESKTOP, 418 SV_CYSIZEBORDER), 419 ((swp->cx / 2) - 8) - 420 (WinQuerySysValue(HWND_DESKTOP, 421 SV_CXSIZEBORDER) * 2), 422 20, 423 hwndFrame, 424 HWND_TOP, 425 MAIN_STATUS, 426 NULL, 427 NULL); 340 GetPString(IDS_WCSTATUS), 341 "Status", 342 WS_VISIBLE | SS_TEXT | DT_LEFT | 343 DT_VCENTER, 344 swp->x + 4 + 345 WinQuerySysValue(HWND_DESKTOP, 346 SV_CXSIZEBORDER), 347 swp->y + 4 + 348 WinQuerySysValue(HWND_DESKTOP, 349 SV_CYSIZEBORDER), 350 ((swp->cx / 2) - 8) - 351 (WinQuerySysValue(HWND_DESKTOP, 352 SV_CXSIZEBORDER) * 2), 353 20, 354 hwndFrame, HWND_TOP, MAIN_STATUS, NULL, NULL); 428 355 if (!hwndStatus) 429 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);356 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 430 357 431 358 hwndStatus2 = WinCreateWindow(hwndFrame, 432 GetPString(IDS_WCSTATUS), 433 "Status2", 434 WS_VISIBLE | SS_TEXT | DT_LEFT | 435 DT_VCENTER, 436 ((swp->cx / 2) + 4) + 437 WinQuerySysValue(HWND_DESKTOP, 438 SV_CXSIZEBORDER), 439 ((swp->cy / 2) + 4) + 440 WinQuerySysValue(HWND_DESKTOP, 441 SV_CYSIZEBORDER), 442 ((swp->cx / 2) - 8) - 443 (WinQuerySysValue(HWND_DESKTOP, 444 SV_CXSIZEBORDER) * 2), 445 20, 446 hwndFrame, 447 HWND_TOP, 448 MAIN_STATUS2, 449 NULL, 450 NULL); 359 GetPString(IDS_WCSTATUS), 360 "Status2", 361 WS_VISIBLE | SS_TEXT | DT_LEFT | 362 DT_VCENTER, 363 ((swp->cx / 2) + 4) + 364 WinQuerySysValue(HWND_DESKTOP, 365 SV_CXSIZEBORDER), 366 ((swp->cy / 2) + 4) + 367 WinQuerySysValue(HWND_DESKTOP, 368 SV_CYSIZEBORDER), 369 ((swp->cx / 2) - 8) - 370 (WinQuerySysValue(HWND_DESKTOP, 371 SV_CXSIZEBORDER) * 2), 372 20, 373 hwndFrame, 374 HWND_TOP, MAIN_STATUS2, NULL, NULL); 451 375 if (!hwndStatus2) 452 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);376 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 453 377 454 378 hwndAttr = WinCreateWindow(hwndFrame, 455 GetPString(IDS_WCSTATUS), 456 "Attr", 457 WS_VISIBLE | SS_TEXT | DT_CENTER | 458 DT_VCENTER, 459 swp->x + 4 + 460 WinQuerySysValue(HWND_DESKTOP, 461 SV_CXSIZEBORDER), 462 swp->y + 4 + 24 + 463 WinQuerySysValue(HWND_DESKTOP, 464 SV_CYSIZEBORDER), 465 ((swp->cx / 4) - 8) - 466 (WinQuerySysValue(HWND_DESKTOP, 467 SV_CXSIZEBORDER) * 2), 468 20, 469 hwndFrame, 470 HWND_TOP, 471 IDM_ATTRS, 472 NULL, 473 NULL); 379 GetPString(IDS_WCSTATUS), 380 "Attr", 381 WS_VISIBLE | SS_TEXT | DT_CENTER | 382 DT_VCENTER, 383 swp->x + 4 + 384 WinQuerySysValue(HWND_DESKTOP, 385 SV_CXSIZEBORDER), 386 swp->y + 4 + 24 + 387 WinQuerySysValue(HWND_DESKTOP, 388 SV_CYSIZEBORDER), 389 ((swp->cx / 4) - 8) - 390 (WinQuerySysValue(HWND_DESKTOP, 391 SV_CXSIZEBORDER) * 2), 392 20, hwndFrame, HWND_TOP, IDM_ATTRS, NULL, NULL); 474 393 if (!hwndAttr) 475 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);394 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 476 395 477 396 hwndDate = WinCreateWindow(hwndFrame, 478 GetPString(IDS_WCSTATUS), 479 "Date", 480 WS_VISIBLE | SS_TEXT | DT_CENTER | 481 DT_VCENTER, 482 ((swp->x / 4) * 2) + 4 + 483 WinQuerySysValue(HWND_DESKTOP, 484 SV_CXSIZEBORDER), 485 swp->y + 4 + 24 + 486 WinQuerySysValue(HWND_DESKTOP, 487 SV_CYSIZEBORDER), 488 ((swp->cx / 4) - 8) - 489 (WinQuerySysValue(HWND_DESKTOP, 490 SV_CXSIZEBORDER) * 2), 491 20, 492 hwndFrame, 493 HWND_TOP, 494 IDM_INFO, 495 NULL, 496 NULL); 397 GetPString(IDS_WCSTATUS), 398 "Date", 399 WS_VISIBLE | SS_TEXT | DT_CENTER | 400 DT_VCENTER, 401 ((swp->x / 4) * 2) + 4 + 402 WinQuerySysValue(HWND_DESKTOP, 403 SV_CXSIZEBORDER), 404 swp->y + 4 + 24 + 405 WinQuerySysValue(HWND_DESKTOP, 406 SV_CYSIZEBORDER), 407 ((swp->cx / 4) - 8) - 408 (WinQuerySysValue(HWND_DESKTOP, 409 SV_CXSIZEBORDER) * 2), 410 20, hwndFrame, HWND_TOP, IDM_INFO, NULL, NULL); 497 411 if (!hwndDate) 498 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);412 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 499 413 500 414 hwndName = WinCreateWindow(hwndFrame, 501 GetPString(IDS_WCSTATUS), 502 "Name", 503 WS_VISIBLE | SS_TEXT | DT_LEFT | 504 DT_VCENTER, 505 ((swp->x / 4) * 3) + 4 + 506 WinQuerySysValue(HWND_DESKTOP, 507 SV_CXSIZEBORDER), 508 swp->y + 4 + 509 WinQuerySysValue(HWND_DESKTOP, 510 SV_CYSIZEBORDER), 511 ((swp->cx / 4) - 8) - 512 (WinQuerySysValue(HWND_DESKTOP, 513 SV_CXSIZEBORDER) * 2), 514 20, 515 hwndFrame, 516 HWND_TOP, 517 IDM_RENAME, 518 NULL, 519 NULL); 415 GetPString(IDS_WCSTATUS), 416 "Name", 417 WS_VISIBLE | SS_TEXT | DT_LEFT | 418 DT_VCENTER, 419 ((swp->x / 4) * 3) + 4 + 420 WinQuerySysValue(HWND_DESKTOP, 421 SV_CXSIZEBORDER), 422 swp->y + 4 + 423 WinQuerySysValue(HWND_DESKTOP, 424 SV_CYSIZEBORDER), 425 ((swp->cx / 4) - 8) - 426 (WinQuerySysValue(HWND_DESKTOP, 427 SV_CXSIZEBORDER) * 2), 428 20, hwndFrame, HWND_TOP, IDM_RENAME, NULL, NULL); 520 429 if (!hwndName) 521 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);430 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 522 431 523 432 hwndTmp = WinCreateWindow(hwndFrame, 524 GetPString(IDS_WCTOOLBACK), 525 NullStr, 526 WS_VISIBLE | SS_TEXT | DT_CENTER | DT_VCENTER, 527 swp->x + 528 WinQuerySysValue(HWND_DESKTOP, 529 SV_CXSIZEBORDER), 530 (swp->cy - 531 WinQuerySysValue(HWND_DESKTOP, 532 SV_CYSIZEBORDER)) - 30, 533 swp->cx - 534 (WinQuerySysValue(HWND_DESKTOP, 535 SV_CXSIZEBORDER) * 2), 536 30, 537 hwndFrame, 538 HWND_TOP, 539 MAIN_TOOLS, 540 NULL, 541 NULL); 433 GetPString(IDS_WCTOOLBACK), 434 NullStr, 435 WS_VISIBLE | SS_TEXT | DT_CENTER | DT_VCENTER, 436 swp->x + 437 WinQuerySysValue(HWND_DESKTOP, 438 SV_CXSIZEBORDER), 439 (swp->cy - 440 WinQuerySysValue(HWND_DESKTOP, 441 SV_CYSIZEBORDER)) - 30, 442 swp->cx - 443 (WinQuerySysValue(HWND_DESKTOP, 444 SV_CXSIZEBORDER) * 2), 445 30, hwndFrame, HWND_TOP, MAIN_TOOLS, NULL, NULL); 542 446 if (!hwndTmp) 543 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);447 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 544 448 545 449 hwndBack = WinCreateWindow(hwndFrame, 546 GetPString(IDS_WCDRIVEBACK), 547 NullStr, 548 WS_VISIBLE | SS_TEXT | DT_RIGHT | DT_BOTTOM, 549 swp->x + 550 WinQuerySysValue(HWND_DESKTOP, 551 SV_CXSIZEBORDER), 552 (swp->cy - 553 WinQuerySysValue(HWND_DESKTOP, 554 SV_CYSIZEBORDER)) - 30, 555 swp->cx - 556 (WinQuerySysValue(HWND_DESKTOP, 557 SV_CXSIZEBORDER) * 2), 558 30, 559 hwndFrame, 560 HWND_TOP, 561 MAIN_DRIVES, 562 NULL, 563 NULL); 450 GetPString(IDS_WCDRIVEBACK), 451 NullStr, 452 WS_VISIBLE | SS_TEXT | DT_RIGHT | DT_BOTTOM, 453 swp->x + 454 WinQuerySysValue(HWND_DESKTOP, 455 SV_CXSIZEBORDER), 456 (swp->cy - 457 WinQuerySysValue(HWND_DESKTOP, 458 SV_CYSIZEBORDER)) - 30, 459 swp->cx - 460 (WinQuerySysValue(HWND_DESKTOP, 461 SV_CXSIZEBORDER) * 2), 462 30, 463 hwndFrame, HWND_TOP, MAIN_DRIVES, NULL, NULL); 564 464 565 465 if (!hwndBack) 566 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);466 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 567 467 568 468 hwndLED = WinCreateWindow(hwndFrame, 569 GetPString(IDS_WCLED), 570 "#920", 571 WS_VISIBLE | SS_BITMAP, 572 swp->cx - 58, 573 swp->y, 574 12, 575 12, 576 hwndFrame, 577 HWND_TOP, 578 MAIN_LED, 579 NULL, 580 NULL); 469 GetPString(IDS_WCLED), 470 "#920", 471 WS_VISIBLE | SS_BITMAP, 472 swp->cx - 58, 473 swp->y, 474 12, 475 12, hwndFrame, HWND_TOP, MAIN_LED, NULL, NULL); 581 476 if (!hwndLED) 582 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);477 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 583 478 584 479 hwndLEDHdr = WinCreateWindow(hwndFrame, 585 GetPString(IDS_WCLED), 586 "0", 587 WS_VISIBLE | SS_TEXT | DT_VCENTER | 588 DT_CENTER, 589 swp->cx - 58, 590 swp->y + 12, 591 12, 592 12, 593 hwndFrame, 594 HWND_TOP, 595 MAIN_LEDHDR, 596 NULL, 597 NULL); 480 GetPString(IDS_WCLED), 481 "0", 482 WS_VISIBLE | SS_TEXT | DT_VCENTER | 483 DT_CENTER, 484 swp->cx - 58, 485 swp->y + 12, 486 12, 487 12, 488 hwndFrame, HWND_TOP, MAIN_LEDHDR, NULL, NULL); 598 489 if (!hwndLEDHdr) 599 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);490 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 600 491 601 492 hwndAutoview = WinCreateWindow(hwndFrame, 602 GetPString(IDS_WCAUTOVIEW), 603 NullStr, 604 WS_VISIBLE | SS_TEXT | DT_LEFT | 605 DT_TOP | DT_WORDBREAK, 606 swp->x + 4 + 607 WinQuerySysValue(HWND_DESKTOP, 608 SV_CXSIZEBORDER), 609 swp->y + 4 + 610 WinQuerySysValue(HWND_DESKTOP, 611 SV_CYSIZEBORDER) + 16, 612 (swp->cx - 8) - 613 (WinQuerySysValue(HWND_DESKTOP, 614 SV_CXSIZEBORDER) * 2), 615 48, 616 hwndFrame, 617 HWND_TOP, 618 MAIN_AUTOVIEW, 619 NULL, 620 NULL); 493 GetPString(IDS_WCAUTOVIEW), 494 NullStr, 495 WS_VISIBLE | SS_TEXT | DT_LEFT | 496 DT_TOP | DT_WORDBREAK, 497 swp->x + 4 + 498 WinQuerySysValue(HWND_DESKTOP, 499 SV_CXSIZEBORDER), 500 swp->y + 4 + 501 WinQuerySysValue(HWND_DESKTOP, 502 SV_CYSIZEBORDER) + 16, 503 (swp->cx - 8) - 504 (WinQuerySysValue(HWND_DESKTOP, 505 SV_CXSIZEBORDER) * 2), 506 48, 507 hwndFrame, 508 HWND_TOP, MAIN_AUTOVIEW, NULL, NULL); 621 509 if (!hwndAutoview) 622 Win_Error2(hwndFrame, hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW);510 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 623 511 624 512 hwndAutoMLE = WinCreateWindow(hwndFrame, 625 // GetPString(IDS_WCAUTOVIEW), 626 WC_MLE, 627 NullStr, 628 WS_VISIBLE | MLS_HSCROLL | 629 MLS_VSCROLL | MLS_BORDER, 630 swp->x + 4 + 631 WinQuerySysValue(HWND_DESKTOP, 632 SV_CXSIZEBORDER), 633 swp->y + 4 + 634 WinQuerySysValue(HWND_DESKTOP, 635 SV_CYSIZEBORDER) + 16, 636 (swp->cx - 8) - 637 (WinQuerySysValue(HWND_DESKTOP, 638 SV_CXSIZEBORDER) * 2), 639 48, 640 hwndFrame, 641 HWND_TOP, 642 MAIN_AUTOVIEWMLE, 643 NULL, 644 NULL); 513 // GetPString(IDS_WCAUTOVIEW), 514 WC_MLE, 515 NullStr, 516 WS_VISIBLE | MLS_HSCROLL | 517 MLS_VSCROLL | MLS_BORDER, 518 swp->x + 4 + 519 WinQuerySysValue(HWND_DESKTOP, 520 SV_CXSIZEBORDER), 521 swp->y + 4 + 522 WinQuerySysValue(HWND_DESKTOP, 523 SV_CYSIZEBORDER) + 16, 524 (swp->cx - 8) - 525 (WinQuerySysValue(HWND_DESKTOP, 526 SV_CXSIZEBORDER) * 2), 527 48, 528 hwndFrame, 529 HWND_TOP, MAIN_AUTOVIEWMLE, NULL, NULL); 645 530 if (!hwndAutoMLE) 646 Win_Error2(hwndFrame,hwnd,pszSrcFile,__LINE__,IDS_WINCREATEWINDOW); 647 648 oldproc = WinSubclassWindow(hwndAutoMLE,AutoViewProc); 649 WinSetWindowPtr(hwndAutoMLE,0,(PVOID)oldproc); 650 PostMsg(hwndAutoMLE,UM_SETUP,MPVOID,MPVOID); 651 } 652 653 MRESULT EXPENTRY CommonMainWndProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 654 { 655 switch(msg) { 656 case UM_THREADUSE: 657 if (hbmLEDon && hbmLEDoff) { 658 static LONG threaduse; 659 CHAR ts[33]; 660 661 if(mp1) { 662 threaduse++; 663 if (threaduse == 1) 664 WinSendMsg(hwndLED, 665 SM_SETHANDLE, 666 MPFROMLONG(hbmLEDon), 667 MPVOID); 668 } 669 else { 670 threaduse--; 671 if(threaduse <= 0) { 672 threaduse = 0; 673 WinSendMsg(hwndLED, 674 SM_SETHANDLE, 675 MPFROMLONG(hbmLEDoff), 676 MPVOID); 677 } 531 Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__, IDS_WINCREATEWINDOW); 532 533 oldproc = WinSubclassWindow(hwndAutoMLE, AutoViewProc); 534 WinSetWindowPtr(hwndAutoMLE, 0, (PVOID) oldproc); 535 PostMsg(hwndAutoMLE, UM_SETUP, MPVOID, MPVOID); 536 } 537 538 MRESULT EXPENTRY CommonMainWndProc(HWND hwnd, ULONG msg, MPARAM mp1, 539 MPARAM mp2) 540 { 541 switch (msg) { 542 case UM_THREADUSE: 543 if (hbmLEDon && hbmLEDoff) { 544 static LONG threaduse; 545 CHAR ts[33]; 546 547 if (mp1) { 548 threaduse++; 549 if (threaduse == 1) 550 WinSendMsg(hwndLED, SM_SETHANDLE, MPFROMLONG(hbmLEDon), MPVOID); 551 } 552 else { 553 threaduse--; 554 if (threaduse <= 0) { 555 threaduse = 0; 556 WinSendMsg(hwndLED, SM_SETHANDLE, MPFROMLONG(hbmLEDoff), MPVOID); 678 557 } 679 ltoa(threaduse,ts,10); 680 WinSetWindowText(hwndLEDHdr,ts); 681 DosSleep(0); 682 } 683 return 0; 684 685 case UM_LOADFILE: 686 { 687 CHAR *s = NULL; 688 static CHAR lastfile[CCHMAXPATH] = ""; 689 690 if(!fAutoView) { 691 if(*lastfile) 692 PostMsg((fComments) ? hwndAutoMLE : hwndAutoview, 693 UM_LOADFILE, 694 MPVOID, 695 MPVOID); 696 *lastfile = 0; 697 } 698 else { 699 if(mp1) { 700 if(!mp2 && !stricmp(lastfile,(CHAR *)mp1)) 701 return 0; 702 strcpy(lastfile,(CHAR *)mp1); 703 s = xstrdup(lastfile,pszSrcFile,__LINE__); 704 } 705 else 706 *lastfile = 0; 707 if(!PostMsg((fComments) ? hwndAutoMLE : hwndAutoview, 708 UM_LOADFILE, 709 MPFROMP(s), 710 MPVOID)) { 711 if(s) 712 free(s); 713 } 714 } 715 } 716 return 0; 717 718 case UM_BUILDDRIVEBAR: 719 BuildDriveBarButtons(WinWindowFromID(WinQueryWindow(hwnd,QW_PARENT), 720 MAIN_DRIVES)); 721 return 0; 722 } 723 return WinDefWindowProc(hwnd,msg,mp1,mp2); 724 } 725 726 727 MRESULT EXPENTRY CommonTextButton (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 728 { 729 static HWND hwndLast = (HWND)0; 558 } 559 ltoa(threaduse, ts, 10); 560 WinSetWindowText(hwndLEDHdr, ts); 561 DosSleep(0); 562 } 563 return 0; 564 565 case UM_LOADFILE: 566 { 567 CHAR *s = NULL; 568 static CHAR lastfile[CCHMAXPATH] = ""; 569 570 if (!fAutoView) { 571 if (*lastfile) 572 PostMsg((fComments) ? hwndAutoMLE : hwndAutoview, 573 UM_LOADFILE, MPVOID, MPVOID); 574 *lastfile = 0; 575 } 576 else { 577 if (mp1) { 578 if (!mp2 && !stricmp(lastfile, (CHAR *) mp1)) 579 return 0; 580 strcpy(lastfile, (CHAR *) mp1); 581 s = xstrdup(lastfile, pszSrcFile, __LINE__); 582 } 583 else 584 *lastfile = 0; 585 if (!PostMsg((fComments) ? hwndAutoMLE : hwndAutoview, 586 UM_LOADFILE, MPFROMP(s), MPVOID)) { 587 if (s) 588 free(s); 589 } 590 } 591 } 592 return 0; 593 594 case UM_BUILDDRIVEBAR: 595 BuildDriveBarButtons(WinWindowFromID(WinQueryWindow(hwnd, QW_PARENT), 596 MAIN_DRIVES)); 597 return 0; 598 } 599 return WinDefWindowProc(hwnd, msg, mp1, mp2); 600 } 601 602 MRESULT EXPENTRY CommonTextButton(HWND hwnd, ULONG msg, MPARAM mp1, 603 MPARAM mp2) 604 { 605 static HWND hwndLast = (HWND) 0; 730 606 static ULONG lastclick = 0; 731 607 732 switch(msg) { 733 case WM_MOUSEMOVE: 734 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 735 if(!fNoFinger) { 736 WinSetPointer(HWND_DESKTOP,hptrFinger); 737 return MRFROMLONG(TRUE); 738 } 739 break; 740 741 case WM_BUTTON1DOWN: 742 case WM_BUTTON3DOWN: 743 if(hwndBubble) 744 WinDestroyWindow(hwndBubble); 745 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 746 WinSetCapture(HWND_DESKTOP,hwnd); 747 PaintRecessedWindow(hwnd,(HPS)0,FALSE,FALSE); 748 break; 749 750 case WM_BUTTON2UP: 751 case WM_BUTTON2DOWN: 752 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 753 if(msg == WM_BUTTON2UP && hwndLast) { 754 PostMsg(hwnd, 755 UM_FOCUSME, 756 MPFROMP(hwndLast), 757 MPVOID); 758 hwndLast = (HWND)0; 759 } 760 break; 761 762 case WM_BUTTON1UP: 763 case WM_BUTTON3UP: 764 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 765 WinSetCapture(HWND_DESKTOP, 766 (HWND)0); 767 PaintRecessedWindow(hwnd, 768 (HPS)0, 769 TRUE, 770 FALSE); 771 { 772 ULONG check; 773 774 DosQuerySysInfo(QSV_MS_COUNT, 775 QSV_MS_COUNT, 776 &check, 777 sizeof(check)); 778 if(check > lastclick + 500) { 779 780 RECTL rcl; 781 POINTS pts; 782 783 pts.x = SHORT1FROMMP(mp1); 784 pts.y = SHORT2FROMMP(mp1); 785 WinQueryWindowRect(hwnd,&rcl); 786 if(pts.x > 0 && 787 pts.y > 0 && 788 pts.x < rcl.xRight && 789 pts.y < rcl.yTop) 790 PostMsg(hwnd, 791 UM_CLICKED + (msg == WM_BUTTON3UP), 792 mp1, 793 mp2); 794 } 795 lastclick = check; 796 } 797 PostMsg(hwnd, 798 UM_FOCUSME, 799 MPFROMP(hwndLast), 800 MPVOID); 801 hwndLast = (HWND)0; 802 break; 803 804 case WM_SETFOCUS: 805 if(mp2) 806 hwndLast = (HWND)mp1; 807 break; 808 809 case UM_FOCUSME: 810 if(mp1) { 811 812 PID pid; 813 TID tid; 814 815 if(WinIsWindow(WinQueryAnchorBlock(hwnd),(HWND)mp1) && 816 WinQueryWindowProcess((HWND)mp1,&pid,&tid) && 817 pid == mypid) { 818 WinSetFocus(HWND_DESKTOP, 819 (HWND)mp1); 820 return 0; 821 } 822 } 823 { 824 HWND htemp = (HWND)0; 825 826 if(hwndMain) 827 htemp = TopWindow(hwndMain,(HWND)0); 828 if(!htemp) 829 htemp = hwndTree; 830 if(htemp) 831 WinSetFocus(HWND_DESKTOP,htemp); 832 else 833 WinSetFocus(HWND_DESKTOP,WinQueryWindow(hwnd,QW_PARENT)); 834 } 835 return 0; 836 } 837 838 return PFNWPStatic(hwnd,msg,mp1,mp2); 839 } 840 841 842 MRESULT EXPENTRY CommonCnrProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 843 { 844 DIRCNRDATA *dcd = WinQueryWindowPtr(hwnd,0); 845 846 switch(msg) { 847 case UM_FIXCNRMLE: 848 if(dcd) { 849 850 SWP swp,swpC; 851 852 if(WinQueryWindowPos(WinWindowFromID(hwnd,CID_MLE),&swp)) { 853 if(WinQueryWindowPos(hwnd,&swpC)) { 854 swpC.cx -= (WinQuerySysValue(HWND_DESKTOP,SV_CXVSCROLL) + 4); 855 swpC.cx -= swp.x; 856 WinSetWindowPos(WinWindowFromID(hwnd,CID_MLE), 857 HWND_TOP, 858 0, 859 0, 860 swpC.cx, 861 swp.cy + 2, 862 SWP_SIZE); 863 } 864 } 865 if(mp1) 866 WinSendMsg(WinWindowFromID(hwnd,CID_MLE), 867 MLM_SETTEXTLIMIT, 868 mp1, 869 MPVOID); 870 } 871 return 0; 872 873 case UM_FIXEDITNAME: 874 if(dcd) { 875 if(mp1 && 876 (INT)mp1 != -1) { 877 878 CHAR *p; 879 880 WinSendMsg(hwnd, 881 UM_FIXCNRMLE, 882 MPFROMLONG(CCHMAXPATH), 883 MPVOID); 884 MLEdelete(WinWindowFromID(hwnd,CID_MLE), 885 0, 886 strlen((CHAR *)mp1) + 1); 887 WinSetDlgItemText(hwnd, 888 CID_MLE, 889 (CHAR *)mp1); 890 p = strrchr((CHAR *)mp1,'\\'); 891 if(p) { 892 p++; 893 MLEsetcurposa(WinWindowFromID(hwnd,CID_MLE), 894 (p - (CHAR *)mp1)); 895 MLEsetcurposc(WinWindowFromID(hwnd,CID_MLE), 896 strlen((CHAR *)mp1)); 897 } 898 else 899 MLEsetcurpos(WinWindowFromID(hwnd,CID_MLE), 900 strlen((CHAR *)mp1)); 901 } 902 else if(mp2) { 903 if((INT)mp1 == -1) { 904 905 PCNRITEM pci = (PCNRITEM)mp2; 906 907 WinSendMsg(hwnd, 908 CM_REMOVERECORD, 909 MPFROMP(&pci), 910 MPFROM2SHORT(1,CMA_FREE | CMA_INVALIDATE)); 911 } 912 else { 913 Broadcast(WinQueryAnchorBlock(hwnd), 914 dcd->hwndParent, 915 UM_UPDATERECORD, 916 mp2, 917 MPVOID); 918 free(mp2); 919 } 920 } 921 } 922 return 0; 923 } 924 return PFNWPCnr(hwnd,msg,mp1,mp2); 925 } 926 927 928 HWND OpenDirCnr (HWND hwnd,HWND hwndParent,HWND hwndRestore, 929 BOOL noautotile,char *directory) 930 { 931 SWP swp; 608 switch (msg) { 609 case WM_MOUSEMOVE: 610 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 611 if (!fNoFinger) { 612 WinSetPointer(HWND_DESKTOP, hptrFinger); 613 return MRFROMLONG(TRUE); 614 } 615 break; 616 617 case WM_BUTTON1DOWN: 618 case WM_BUTTON3DOWN: 619 if (hwndBubble) 620 WinDestroyWindow(hwndBubble); 621 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 622 WinSetCapture(HWND_DESKTOP, hwnd); 623 PaintRecessedWindow(hwnd, (HPS) 0, FALSE, FALSE); 624 break; 625 626 case WM_BUTTON2UP: 627 case WM_BUTTON2DOWN: 628 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 629 if (msg == WM_BUTTON2UP && hwndLast) { 630 PostMsg(hwnd, UM_FOCUSME, MPFROMP(hwndLast), MPVOID); 631 hwndLast = (HWND) 0; 632 } 633 break; 634 635 case WM_BUTTON1UP: 636 case WM_BUTTON3UP: 637 shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL)); 638 WinSetCapture(HWND_DESKTOP, (HWND) 0); 639 PaintRecessedWindow(hwnd, (HPS) 0, TRUE, FALSE); 640 { 641 ULONG check; 642 643 DosQuerySysInfo(QSV_MS_COUNT, QSV_MS_COUNT, &check, sizeof(check)); 644 if (check > lastclick + 500) { 645 646 RECTL rcl; 647 POINTS pts; 648 649 pts.x = SHORT1FROMMP(mp1); 650 pts.y = SHORT2FROMMP(mp1); 651 WinQueryWindowRect(hwnd, &rcl); 652 if (pts.x > 0 && pts.y > 0 && pts.x < rcl.xRight && pts.y < rcl.yTop) 653 PostMsg(hwnd, UM_CLICKED + (msg == WM_BUTTON3UP), mp1, mp2); 654 } 655 lastclick = check; 656 } 657 PostMsg(hwnd, UM_FOCUSME, MPFROMP(hwndLast), MPVOID); 658 hwndLast = (HWND) 0; 659 break; 660 661 case WM_SETFOCUS: 662 if (mp2) 663 hwndLast = (HWND) mp1; 664 break; 665 666 case UM_FOCUSME: 667 if (mp1) { 668 669 PID pid; 670 TID tid; 671 672 if (WinIsWindow(WinQueryAnchorBlock(hwnd), (HWND) mp1) && 673 WinQueryWindowProcess((HWND) mp1, &pid, &tid) && pid == mypid) { 674 WinSetFocus(HWND_DESKTOP, (HWND) mp1); 675 return 0; 676 } 677 } 678 { 679 HWND htemp = (HWND) 0; 680 681 if (hwndMain) 682 htemp = TopWindow(hwndMain, (HWND) 0); 683 if (!htemp) 684 htemp = hwndTree; 685 if (htemp) 686 WinSetFocus(HWND_DESKTOP, htemp); 687 else 688 WinSetFocus(HWND_DESKTOP, WinQueryWindow(hwnd, QW_PARENT)); 689 } 690 return 0; 691 } 692 693 return PFNWPStatic(hwnd, msg, mp1, mp2); 694 } 695 696 MRESULT EXPENTRY CommonCnrProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 697 { 698 DIRCNRDATA *dcd = WinQueryWindowPtr(hwnd, 0); 699 700 switch (msg) { 701 case UM_FIXCNRMLE: 702 if (dcd) { 703 704 SWP swp, swpC; 705 706 if (WinQueryWindowPos(WinWindowFromID(hwnd, CID_MLE), &swp)) { 707 if (WinQueryWindowPos(hwnd, &swpC)) { 708 swpC.cx -= (WinQuerySysValue(HWND_DESKTOP, SV_CXVSCROLL) + 4); 709 swpC.cx -= swp.x; 710 WinSetWindowPos(WinWindowFromID(hwnd, CID_MLE), 711 HWND_TOP, 0, 0, swpC.cx, swp.cy + 2, SWP_SIZE); 712 } 713 } 714 if (mp1) 715 WinSendMsg(WinWindowFromID(hwnd, CID_MLE), 716 MLM_SETTEXTLIMIT, mp1, MPVOID); 717 } 718 return 0; 719 720 case UM_FIXEDITNAME: 721 if (dcd) { 722 if (mp1 && (INT) mp1 != -1) { 723 724 CHAR *p; 725 726 WinSendMsg(hwnd, UM_FIXCNRMLE, MPFROMLONG(CCHMAXPATH), MPVOID); 727 MLEdelete(WinWindowFromID(hwnd, CID_MLE), 728 0, strlen((CHAR *) mp1) + 1); 729 WinSetDlgItemText(hwnd, CID_MLE, (CHAR *) mp1); 730 p = strrchr((CHAR *) mp1, '\\'); 731 if (p) { 732 p++; 733 MLEsetcurposa(WinWindowFromID(hwnd, CID_MLE), (p - (CHAR *) mp1)); 734 MLEsetcurposc(WinWindowFromID(hwnd, CID_MLE), strlen((CHAR *) mp1)); 735 } 736 else 737 MLEsetcurpos(WinWindowFromID(hwnd, CID_MLE), strlen((CHAR *) mp1)); 738 } 739 else if (mp2) { 740 if ((INT) mp1 == -1) { 741 742 PCNRITEM pci = (PCNRITEM) mp2; 743 744 WinSendMsg(hwnd, 745 CM_REMOVERECORD, 746 MPFROMP(&pci), 747 MPFROM2SHORT(1, CMA_FREE | CMA_INVALIDATE)); 748 } 749 else { 750 Broadcast(WinQueryAnchorBlock(hwnd), 751 dcd->hwndParent, UM_UPDATERECORD, mp2, MPVOID); 752 free(mp2); 753 } 754 } 755 } 756 return 0; 757 } 758 return PFNWPCnr(hwnd, msg, mp1, mp2); 759 } 760 761 HWND OpenDirCnr(HWND hwnd, HWND hwndParent, HWND hwndRestore, 762 BOOL noautotile, char *directory) 763 { 764 SWP swp; 932 765 HWND hwndDir; 933 766 934 if(ParentIsDesktop(hwnd,hwndParent) || 935 *(ULONG *)realappname != FM3UL) 936 StartDirCnr(HWND_DESKTOP, 937 directory, 938 hwndRestore, 939 1); 940 else if(*(ULONG *)realappname == FM3UL) { 941 if(!fAutoTile) 942 GetNextWindowPos(hwndParent, 943 &swp, 944 NULL, 945 NULL); 946 hwndDir = StartDirCnr(hwndParent, 947 directory, 948 hwndRestore, 949 1); 950 if(hwndDir) { 951 if(!fAutoTile) 952 WinSetWindowPos(hwndDir, 953 HWND_TOP, 954 swp.x, 955 swp.y, 956 swp.cx, 957 swp.cy, 958 SWP_MOVE | SWP_SIZE | 959 SWP_SHOW | SWP_ZORDER); 960 else if(!noautotile) 961 TileChildren(hwndParent, 962 TRUE); 767 if (ParentIsDesktop(hwnd, hwndParent) || *(ULONG *) realappname != FM3UL) 768 StartDirCnr(HWND_DESKTOP, directory, hwndRestore, 1); 769 else if (*(ULONG *) realappname == FM3UL) { 770 if (!fAutoTile) 771 GetNextWindowPos(hwndParent, &swp, NULL, NULL); 772 hwndDir = StartDirCnr(hwndParent, directory, hwndRestore, 1); 773 if (hwndDir) { 774 if (!fAutoTile) 775 WinSetWindowPos(hwndDir, 776 HWND_TOP, 777 swp.x, 778 swp.y, 779 swp.cx, 780 swp.cy, SWP_MOVE | SWP_SIZE | SWP_SHOW | SWP_ZORDER); 781 else if (!noautotile) 782 TileChildren(hwndParent, TRUE); 963 783 WinSetWindowPos(hwndDir, 964 HWND_TOP, 965 0, 966 0, 967 0, 968 0, 969 SWP_RESTORE | SWP_SHOW | SWP_ACTIVATE); 784 HWND_TOP, 785 0, 0, 0, 0, SWP_RESTORE | SWP_SHOW | SWP_ACTIVATE); 970 786 } 971 787 } … … 976 792 assign_ignores(s); 977 793 runemf2(WINDOWED | SEPARATE, 978 979 980 981 982 (*s) ? s : NullStr,(*s) ? " " : NullStr,983 984 794 hwnd, 795 NULL, 796 NULL, 797 "VDIR.EXE %s%s\"%s%s\"", 798 (*s) ? s : NullStr, (*s) ? " " : NullStr, 799 directory, 800 (directory[strlen(directory) - 1] == '\\') ? "\\" : NullStr); 985 801 } 986 802 return hwndDir; … … 992 808 { 993 809 if (hwndMain) 994 WinPostMsg(hwndMain,UM_THREADUSE,MPFROMLONG(1),MPVOID); 995 } 996 810 WinPostMsg(hwndMain, UM_THREADUSE, MPFROMLONG(1), MPVOID); 811 } 997 812 998 813 //= DecrThreadUsage() Decrement thread usage counter == … … 1001 816 { 1002 817 if (hwndMain) 1003 WinPostMsg(hwndMain, UM_THREADUSE,MPVOID,MPVOID);1004 } 818 WinPostMsg(hwndMain, UM_THREADUSE, MPVOID, MPVOID); 819 }
Note:
See TracChangeset
for help on using the changeset viewer.