Changeset 551 for trunk/dll/codepage.c
- Timestamp:
- Feb 28, 2007, 2:33:51 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/codepage.c
r347 r551 32 32 #pragma alloc_text(FMCODEPAGE,PickCodePageDlgBox,PickCodepage) 33 33 34 MRESULT EXPENTRY PickCodePageDlgBox (HWND hwnd,ULONG msg,MPARAM mp1, 35 MPARAM mp2) { 34 MRESULT EXPENTRY PickCodePageDlgBox(HWND hwnd, ULONG msg, MPARAM mp1, 35 MPARAM mp2) 36 { 36 37 37 38 SHORT sSelect; 38 39 39 switch(msg) { 40 case WM_INITDLG: 41 WinShowWindow(WinWindowFromID(hwnd,PICK_SAVEPOS), 42 FALSE); 40 switch (msg) { 41 case WM_INITDLG: 42 WinShowWindow(WinWindowFromID(hwnd, PICK_SAVEPOS), FALSE); 43 { 44 ULONG cp; 45 char *p; 46 47 cp = WinQueryCp(WinQueryWindowULong(hwnd, QWL_HMQ)); 48 for (sSelect = 0; 49 (p = GetPString(IDS_CODEPAGES1 + sSelect)) != NULL; sSelect++) { 50 if (!strcmp(p, "0")) 51 break; 52 WinSendDlgItemMsg(hwnd, 53 PICK_LISTBOX, 54 LM_INSERTITEM, MPFROMSHORT(LIT_END), MPFROMP(p)); 55 if (atoi(p) == cp) { 56 WinSendDlgItemMsg(hwnd, 57 PICK_LISTBOX, 58 LM_SETTOPINDEX, MPFROM2SHORT(sSelect, 0), MPVOID); 59 WinSendDlgItemMsg(hwnd, 60 PICK_LISTBOX, 61 LM_SELECTITEM, 62 MPFROM2SHORT(sSelect, 0), MPFROMSHORT(TRUE)); 63 } 64 } 65 } 66 WinSendDlgItemMsg(hwnd, 67 PICK_INPUT, 68 EM_SETTEXTLIMIT, MPFROM2SHORT(256, 0), MPVOID); 69 WinSetWindowText(hwnd, GetPString(IDS_PICKCODEPAGETEXT)); 70 PostMsg(hwnd, UM_STRETCH, MPVOID, MPVOID); 71 break; 72 73 case UM_STRETCH: 74 { 75 SWP swp, swpL, swpE; 76 LONG titl, szbx, szby; 77 78 WinQueryWindowPos(hwnd, &swp); 79 if (!(swp.fl & (SWP_HIDE | SWP_MINIMIZE)) && 80 (swp.x != SHORT1FROMMP(mp1) || swp.cx != SHORT2FROMMP(mp1) || 81 swp.y != SHORT1FROMMP(mp2) || swp.cy != SHORT2FROMMP(mp2))) { 82 szbx = SysVal(SV_CXSIZEBORDER); 83 szby = SysVal(SV_CYSIZEBORDER); 84 titl = SysVal(SV_CYTITLEBAR); 85 WinQueryWindowPos(WinWindowFromID(hwnd, PICK_LISTBOX), &swpL); 86 WinQueryWindowPos(WinWindowFromID(hwnd, PICK_INPUT), &swpE); 87 WinSetWindowPos(WinWindowFromID(hwnd, PICK_LISTBOX), HWND_TOP, 88 szbx, 89 swpL.y, 90 swp.cx - (szbx * 2L), 91 ((((swp.cy - swpL.y) - swpE.cy) - 8) - titl) - 92 (szby * 2L), SWP_MOVE | SWP_SIZE); 93 WinSetWindowPos(WinWindowFromID(hwnd, PICK_INPUT), HWND_TOP, 94 szbx + 2, 95 swpL.y + (((((swp.cy - swpL.y) - swpE.cy) - 8) - 96 titl) - (szby * 2L)) + 4, 97 0L, 0L, SWP_MOVE); 98 WinInvalidateRect(WinWindowFromID(hwnd, PICK_INPUT), NULL, FALSE); 99 } 100 } 101 return 0; 102 103 case WM_ADJUSTWINDOWPOS: 104 { 105 SWP swp; 106 107 WinQueryWindowPos(hwnd, &swp); 108 PostMsg(hwnd, 109 UM_STRETCH, 110 MPFROM2SHORT((SHORT) swp.x, (SHORT) swp.cx), 111 MPFROM2SHORT((SHORT) swp.y, (SHORT) swp.cy)); 112 } 113 break; 114 115 case WM_CONTROL: 116 switch (SHORT1FROMMP(mp1)) { 117 case PICK_LISTBOX: 118 switch (SHORT2FROMMP(mp1)) { 119 case LN_SELECT: 120 sSelect = (USHORT) WinSendDlgItemMsg(hwnd, 121 PICK_LISTBOX, 122 LM_QUERYSELECTION, 123 MPFROMSHORT(LIT_FIRST), MPVOID); 124 if (sSelect >= 0) 125 WinSetDlgItemText(hwnd, 126 PICK_INPUT, GetPString(IDS_CODEPAGES1 + sSelect)); 127 break; 128 case LN_ENTER: 129 PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID); 130 break; 131 } 132 break; 133 } 134 return 0; 135 136 case WM_COMMAND: 137 switch (SHORT1FROMMP(mp1)) { 138 case DID_OK: 43 139 { 44 ULONG cp; 45 char *p; 46 47 cp = WinQueryCp(WinQueryWindowULong(hwnd, 48 QWL_HMQ)); 49 for(sSelect = 0; 50 (p = GetPString(IDS_CODEPAGES1 + sSelect)) != NULL; 51 sSelect++) { 52 if(!strcmp(p,"0")) 53 break; 54 WinSendDlgItemMsg(hwnd, 55 PICK_LISTBOX, 56 LM_INSERTITEM, 57 MPFROMSHORT(LIT_END), 58 MPFROMP(p)); 59 if(atoi(p) == cp) { 60 WinSendDlgItemMsg(hwnd, 61 PICK_LISTBOX, 62 LM_SETTOPINDEX, 63 MPFROM2SHORT(sSelect,0), 64 MPVOID); 65 WinSendDlgItemMsg(hwnd, 66 PICK_LISTBOX, 67 LM_SELECTITEM, 68 MPFROM2SHORT(sSelect,0), 69 MPFROMSHORT(TRUE)); 70 } 71 } 72 } 73 WinSendDlgItemMsg(hwnd, 74 PICK_INPUT, 75 EM_SETTEXTLIMIT, 76 MPFROM2SHORT(256,0), 77 MPVOID); 78 WinSetWindowText(hwnd, 79 GetPString(IDS_PICKCODEPAGETEXT)); 80 PostMsg(hwnd, 81 UM_STRETCH, 82 MPVOID, 83 MPVOID); 84 break; 85 86 case UM_STRETCH: 87 { 88 SWP swp,swpL,swpE; 89 LONG titl,szbx,szby; 90 91 WinQueryWindowPos(hwnd,&swp); 92 if(!(swp.fl & (SWP_HIDE | SWP_MINIMIZE)) && 93 (swp.x != SHORT1FROMMP(mp1) || swp.cx != SHORT2FROMMP(mp1) || 94 swp.y != SHORT1FROMMP(mp2) || swp.cy != SHORT2FROMMP(mp2))) { 95 szbx = SysVal(SV_CXSIZEBORDER); 96 szby = SysVal(SV_CYSIZEBORDER); 97 titl = SysVal(SV_CYTITLEBAR); 98 WinQueryWindowPos(WinWindowFromID(hwnd,PICK_LISTBOX),&swpL); 99 WinQueryWindowPos(WinWindowFromID(hwnd,PICK_INPUT),&swpE); 100 WinSetWindowPos(WinWindowFromID(hwnd,PICK_LISTBOX),HWND_TOP, 101 szbx, 102 swpL.y, 103 swp.cx - (szbx * 2L), 104 ((((swp.cy - swpL.y) - swpE.cy) - 8) - titl) - 105 (szby * 2L), 106 SWP_MOVE | SWP_SIZE); 107 WinSetWindowPos(WinWindowFromID(hwnd,PICK_INPUT),HWND_TOP, 108 szbx + 2, 109 swpL.y + (((((swp.cy - swpL.y) - swpE.cy) - 8) - 110 titl) - (szby * 2L)) + 4, 111 0L,0L, 112 SWP_MOVE); 113 WinInvalidateRect(WinWindowFromID(hwnd,PICK_INPUT), 114 NULL, 115 FALSE); 116 } 117 } 118 return 0; 119 120 case WM_ADJUSTWINDOWPOS: 121 { 122 SWP swp; 123 124 WinQueryWindowPos(hwnd,&swp); 125 PostMsg(hwnd, 126 UM_STRETCH, 127 MPFROM2SHORT((SHORT)swp.x,(SHORT)swp.cx), 128 MPFROM2SHORT((SHORT)swp.y,(SHORT)swp.cy)); 129 } 130 break; 131 132 case WM_CONTROL: 133 switch(SHORT1FROMMP(mp1)) { 134 case PICK_LISTBOX: 135 switch(SHORT2FROMMP(mp1)) { 136 case LN_SELECT: 137 sSelect = (USHORT)WinSendDlgItemMsg(hwnd, 138 PICK_LISTBOX, 139 LM_QUERYSELECTION, 140 MPFROMSHORT(LIT_FIRST), 141 MPVOID); 142 if(sSelect >= 0) 143 WinSetDlgItemText(hwnd, 144 PICK_INPUT, 145 GetPString(IDS_CODEPAGES1 + sSelect)); 146 break; 147 case LN_ENTER: 148 PostMsg(hwnd, 149 WM_COMMAND, 150 MPFROM2SHORT(DID_OK,0), 151 MPVOID); 152 break; 153 } 154 break; 155 } 156 return 0; 157 158 case WM_COMMAND: 159 switch(SHORT1FROMMP(mp1)) { 160 case DID_OK: 161 { 162 INT x; 163 CHAR s[257],*p; 164 165 *s = 0; 166 WinQueryDlgItemText(hwnd, 167 PICK_INPUT, 168 257, 169 s); 170 if(!*s) 171 Runtime_Error(pszSrcFile, __LINE__, "no input"); 172 else { 173 for(x = 0; 174 (p = GetPString(IDS_CODEPAGES1 + x)) != NULL; 175 x++) { 176 if(!stricmp(s,p)) { 177 WinDismissDlg(hwnd,atoi(p)); 178 break; 179 } 180 } 181 } 182 } 183 break; 184 185 case IDM_HELP: 186 if(hwndHelp) 187 WinSendMsg(hwndHelp, 188 HM_DISPLAY_HELP, 189 MPFROM2SHORT(HELP_CODEPAGE,0), 190 MPFROMSHORT(HM_RESOURCEID)); 191 break; 192 193 case PICK_SAVEPOS: 194 break; 195 196 case DID_CANCEL: 197 WinDismissDlg(hwnd,0); 198 break; 199 } 200 return 0; 201 202 case WM_CLOSE: 203 return 0; 140 INT x; 141 CHAR s[257], *p; 142 143 *s = 0; 144 WinQueryDlgItemText(hwnd, PICK_INPUT, 257, s); 145 if (!*s) 146 Runtime_Error(pszSrcFile, __LINE__, "no input"); 147 else { 148 for (x = 0; (p = GetPString(IDS_CODEPAGES1 + x)) != NULL; x++) { 149 if (!stricmp(s, p)) { 150 WinDismissDlg(hwnd, atoi(p)); 151 break; 152 } 153 } 154 } 155 } 156 break; 157 158 case IDM_HELP: 159 if (hwndHelp) 160 WinSendMsg(hwndHelp, 161 HM_DISPLAY_HELP, 162 MPFROM2SHORT(HELP_CODEPAGE, 0), 163 MPFROMSHORT(HM_RESOURCEID)); 164 break; 165 166 case PICK_SAVEPOS: 167 break; 168 169 case DID_CANCEL: 170 WinDismissDlg(hwnd, 0); 171 break; 172 } 173 return 0; 174 175 case WM_CLOSE: 176 return 0; 204 177 } 205 return WinDefDlgProc(hwnd, msg,mp1,mp2);178 return WinDefDlgProc(hwnd, msg, mp1, mp2); 206 179 } 207 180 208 209 INT PickCodepage (HWND hwnd){181 INT PickCodepage(HWND hwnd) 182 { 210 183 211 184 INT cp; 212 185 213 cp = (INT)WinDlgBox(HWND_DESKTOP, 214 hwnd, 215 PickCodePageDlgBox, 216 FM3ModHandle, 217 PICK_FRAME, 218 MPVOID); 219 if(cp > 0) { 220 221 HMQ hmq; 222 ULONG cps[50],len,x; 186 cp = (INT) WinDlgBox(HWND_DESKTOP, 187 hwnd, 188 PickCodePageDlgBox, FM3ModHandle, PICK_FRAME, MPVOID); 189 if (cp > 0) { 190 191 HMQ hmq; 192 ULONG cps[50], len, x; 223 193 224 194 /* … … 234 204 } 235 205 */ 236 if (cp == 1004) {237 hmq = WinQueryWindowULong(hwnd, QWL_HMQ);238 WinSetCp(hmq, cp);239 } 240 else if (!DosQueryCp(sizeof(cps),cps,&len)) {241 for (x = 0;x < len / sizeof(ULONG);x++) {242 if(cps[x] == (ULONG)cp) {243 hmq = WinQueryWindowULong(hwnd,QWL_HMQ);244 WinSetCp(hmq,cp);245 246 206 if (cp == 1004) { 207 hmq = WinQueryWindowULong(hwnd, QWL_HMQ); 208 WinSetCp(hmq, cp); 209 } 210 else if (!DosQueryCp(sizeof(cps), cps, &len)) { 211 for (x = 0; x < len / sizeof(ULONG); x++) { 212 if (cps[x] == (ULONG) cp) { 213 hmq = WinQueryWindowULong(hwnd, QWL_HMQ); 214 WinSetCp(hmq, cp); 215 break; 216 } 247 217 } 248 218 } … … 253 223 return cp; 254 224 } 255
Note:
See TracChangeset
for help on using the changeset viewer.