Changeset 551 for trunk/dll/seticon.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/seticon.c
r335 r551 32 32 #pragma alloc_text(MENU,SetIconDlgProc) 33 33 34 MRESULT EXPENTRY SetIconDlgProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2) 35 { 36 switch (msg) { 37 case WM_INITDLG: 38 WinSetWindowPtr(hwnd, 0, (PVOID) mp2); 39 WinCheckButton(hwnd, SETICON_SPTR_ARROW, TRUE); 40 break; 34 41 35 MRESULT EXPENTRY SetIconDlgProc (HWND hwnd,ULONG msg,MPARAM mp1,MPARAM mp2) 36 { 37 switch(msg) { 38 case WM_INITDLG: 39 WinSetWindowPtr(hwnd,0,(PVOID)mp2); 40 WinCheckButton(hwnd,SETICON_SPTR_ARROW,TRUE); 42 case WM_CONTROL: 43 return 0; 44 45 case WM_COMMAND: 46 switch (SHORT1FROMMP(mp1)) { 47 case DID_OK: 48 { 49 CHAR *filename = WinQueryWindowPtr(hwnd, 0), *buff = NULL; 50 ICONINFO icf; 51 ULONG icid = SPTR_ARROW; 52 INT x; 53 HWND hwndDeskTop; 54 FILE *fp; 55 56 hwndDeskTop = WinQueryDesktopWindow(WinQueryAnchorBlock(hwnd), 57 NULLHANDLE); 58 memset(&icf, 0, sizeof(ICONINFO)); 59 icf.cb = sizeof(ICONINFO); 60 icf.fFormat = ICON_DATA; 61 if (filename && *filename) { 62 fp = xfsopen(filename, "rb", SH_DENYNO, pszSrcFile, __LINE__); 63 if (!fp) 64 break; 65 else { 66 fseek(fp, 0L, SEEK_END); 67 icf.cbIconData = ftell(fp); 68 fseek(fp, 0L, SEEK_SET); 69 buff = xmalloc(icf.cbIconData, pszSrcFile, __LINE__); 70 if (!buff) { 71 fclose(fp); 72 break; 73 } 74 fread(buff, icf.cbIconData, 1, fp); 75 icf.pIconData = (PVOID) buff; 76 fclose(fp); 77 } 78 } 79 for (x = 1; x < 15; x++) { 80 if (WinQueryButtonCheckstate(hwnd, SETICON_FRAME + x)) { 81 icid = (ULONG) x; 82 break; 83 } 84 } 85 for (x = 18; x < 23; x++) { 86 if (WinQueryButtonCheckstate(hwnd, SETICON_FRAME + x)) { 87 icid = (ULONG) x; 88 break; 89 } 90 } 91 if (!WinSetSysPointerData(hwndDeskTop, icid, 92 (PICONINFO) ((filename && *filename) ? 93 &icf : NULL))) { 94 Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "WinSetSysPointerData"); 95 } 96 if (buff) 97 free(buff); 98 } 99 WinDismissDlg(hwnd, 1); 41 100 break; 42 101 43 case WM_CONTROL: 44 return 0; 102 case IDM_HELP: 103 if (hwndHelp) 104 WinSendMsg(hwndHelp, 105 HM_DISPLAY_HELP, 106 MPFROM2SHORT(HELP_SETICON, 0), MPFROMSHORT(HM_RESOURCEID)); 107 break; 45 108 46 case WM_COMMAND: 47 switch(SHORT1FROMMP(mp1)) { 48 case DID_OK: 49 { 50 CHAR *filename = WinQueryWindowPtr(hwnd,0),*buff = NULL; 51 ICONINFO icf; 52 ULONG icid = SPTR_ARROW; 53 INT x; 54 HWND hwndDeskTop; 55 FILE *fp; 56 57 hwndDeskTop = WinQueryDesktopWindow(WinQueryAnchorBlock(hwnd), 58 NULLHANDLE); 59 memset(&icf,0,sizeof(ICONINFO)); 60 icf.cb = sizeof(ICONINFO); 61 icf.fFormat = ICON_DATA; 62 if (filename && *filename) { 63 fp = xfsopen(filename,"rb",SH_DENYNO,pszSrcFile,__LINE__); 64 if(!fp) 65 break; 66 else { 67 fseek(fp,0L,SEEK_END); 68 icf.cbIconData = ftell(fp); 69 fseek(fp,0L,SEEK_SET); 70 buff = xmalloc(icf.cbIconData,pszSrcFile,__LINE__); 71 if (!buff) { 72 fclose(fp); 73 break; 74 } 75 fread(buff,icf.cbIconData,1,fp); 76 icf.pIconData = (PVOID)buff; 77 fclose(fp); 78 } 79 } 80 for(x = 1;x < 15;x++) { 81 if(WinQueryButtonCheckstate(hwnd,SETICON_FRAME + x)) { 82 icid = (ULONG)x; 83 break; 84 } 85 } 86 for(x = 18;x < 23;x++) { 87 if(WinQueryButtonCheckstate(hwnd,SETICON_FRAME + x)) { 88 icid = (ULONG)x; 89 break; 90 } 91 } 92 if(!WinSetSysPointerData(hwndDeskTop,icid, 93 (PICONINFO)((filename && *filename) ? 94 &icf : NULL))) 95 { 96 Win_Error(hwnd,hwnd,pszSrcFile,__LINE__,"WinSetSysPointerData"); 97 } 98 if(buff) 99 free(buff); 100 } 101 WinDismissDlg(hwnd,1); 102 break; 103 104 case IDM_HELP: 105 if(hwndHelp) 106 WinSendMsg(hwndHelp, 107 HM_DISPLAY_HELP, 108 MPFROM2SHORT(HELP_SETICON,0), 109 MPFROMSHORT(HM_RESOURCEID)); 110 break; 111 112 case DID_CANCEL: 113 WinDismissDlg(hwnd,0); 114 break; 115 } 116 return 0; 109 case DID_CANCEL: 110 WinDismissDlg(hwnd, 0); 111 break; 112 } 113 return 0; 117 114 } 118 return WinDefDlgProc(hwnd, msg,mp1,mp2);115 return WinDefDlgProc(hwnd, msg, mp1, mp2); 119 116 } 120
Note:
See TracChangeset
for help on using the changeset viewer.