📄 windows.lst
字号:
231 4 StartLn = 1;
232 4 CurLn = 1;
233 4 }
234 3 break;
235 3
236 3 case K_RIGHT:
237 3 if(MenuLen>4)
238 3 {
C51 COMPILER V8.01 WINDOWS 03/28/2006 09:48:48 PAGE 5
239 4 if((StartLn+4)<=MenuLen)
240 4 {
241 5 if((StartLn+4)<=MenuLen-4)
242 5 {
243 6 StartLn+=4;
244 6 CurLn+=4;
245 6 }
246 5 else
247 5 {
248 6 StartLn = MenuLen-4+1;
249 6 CurLn = MenuLen-4+1;
250 6 }
251 5 }
252 4 else
253 4 {
254 5 StartLn = MenuLen-4+1;
255 5 CurLn = MenuLen;
256 5 }
257 4 }
258 3 break;
259 3
260 3 default:
261 3 for(i=0;i<k;i++)
262 3 {
263 4 if(key[i]==val)
264 4 {
265 5 key[0] = val;
266 5 return CurLn;
267 5 }
268 4 }
269 3 continue;
270 3 }
271 2 }
272 1 }
273
274 void DelGb18030(uchar *str)
275 {
276 1 uchar i,j,k;
277 1
278 1 i=0;
279 1 j=0;
280 1 while(str[i]!=0)
281 1 {
282 2 if(str[i]<0x80)
283 2 {
284 3 j=1;
285 3 i++;
286 3 }
287 2 else
288 2 // if(str[i]>=0x81)
289 2 {
290 3 i++;
291 3 if(str[i]>=0x40)
292 3 {
293 4 j=2;
294 4 i++;
295 4 }
296 3 else
297 3 {
298 4 j=4;
299 4 i+=3;
300 4 }
C51 COMPILER V8.01 WINDOWS 03/28/2006 09:48:48 PAGE 6
301 3 }
302 2 }
303 1 i--;
304 1 for(k=0;k<j;k++)
305 1 str[i-k]=0;
306 1 }
307
308 uchar DisMenuMode(uchar no,uchar MenuLen,uchar *InputLocation,uchar *key)
309 {
310 1 uchar i,j,k,val;
311 1 uchar StartLn, CurLn;
312 1 uchar SelectInput=0;
313 1 uchar const TotalInput = 5;
314 1 uchar CharBuff[30];
315 1 uchar KeyPress;
316 1 gyt4 num,*xp;
317 1 bit flg;
318 1
319 1 if(no==0) no = 1;
320 1 CurLn = no;
321 1 if(no<=4)
322 1 StartLn = 1;
323 1 else
324 1 StartLn = no-3;
325 1
326 1 KeyPress=key[0];
327 1 while(1)
328 1 {
329 2 Dis4HintMode(StartLn, CurLn,InputLocation);
330 2 ScrollBar(CurLn,MenuLen);
331 2 k=CurLn-1;
332 2 switch(WinDat[k][0])
333 2 {
334 3 //case 7 8 与 case 1 2 的位置不能调换
335 3 case 7:
336 3 case 8: ScanerIni(); //初始化扫描仪
337 3 case 1:
338 3 case 2:
339 3 xp = &WinDat[k][2];
*** WARNING C182 IN LINE 339 OF WINDOWS.C: pointer to different objects
340 3 num.dat = xp->dat;
341 3 val = WinDat[k][1] | 0x80; //允许输入最大长度
342 3 if(WinDat[k][0]==1 || WinDat[k][0]==7)//输入整数
343 3 num.dat = GetInt((CurLn-StartLn)*16,InputLocation[k],num.dat,val,0,key);
344 3 else //输入小数
345 3 num.dat = GetFloat((CurLn-StartLn)*16,InputLocation[k],num.dat,val,key);
346 3 if(key[0] == 0)
347 3 return 0xf0; //扫描仪输入返回
348 3 else
349 3 xp->dat = num.dat;
350 3 val = key[0];
351 3 key[0] = KeyPress;
352 3 break;
353 3
354 3 case 3: memset(CharBuff,0,sizeof(CharBuff));
355 3 if(SelectInput == 0) //拼音输入法
356 3 {
357 4 val = ImeInput(CharBuff);
358 4 }
359 3 if(SelectInput==1) //区位输入法
360 3 {
361 4 val = QuWeiInput(48,32,CharBuff);
C51 COMPILER V8.01 WINDOWS 03/28/2006 09:48:48 PAGE 7
362 4 }
363 3 if(SelectInput==2) //英语输入法
364 3 {
365 4 val = EnglishInput(48,32,CharBuff);
366 4 }
367 3 if(SelectInput==3) //手写板输入
368 3 {
369 4 val = ManuscriptInput(48,32,CharBuff);
370 4 }
371 3 if(SelectInput==4)
372 3 {
373 4 val = Gb18030Input(CharBuff);
374 4 }
375 3 j = strlen(&WinDat[k][2]);
376 3 if(j<WinDat[k][1])
377 3 {
378 4 strncpy(&WinDat[k][j+2],CharBuff,WinDat[k][1]-j);
379 4 }
380 3 break;
381 3
382 3 case 4: xp = &WinDat[k][2]; //输入密码
*** WARNING C182 IN LINE 382 OF WINDOWS.C: pointer to different objects
383 3 num.dat = xp->dat;
384 3 val = WinDat[k][1] | 0x80; //允许输入最大长度
385 3 num.dat = GetInt((CurLn-StartLn)*16,InputLocation[k],num.dat,val,1,key);
386 3 xp->dat = num.dat;
387 3 val = key[0];
388 3 key[0] = KeyPress;
389 3 break;
390 3
391 3 //case 5 与 case 6 的位置不能调换
392 3 case 6: ScanerIni(); //初始化扫描仪
393 3 while(1)
394 3 {
395 4 val = GetKey();
396 4 if(val!=0xff)
397 4 {
398 5 if(val==K_TM)
399 5 {
400 6 IEA &= 0xEF; //禁止扫描仪输入的串口中断
401 6 // WinDat[k][0] = 5; //切换到键盘输入,
402 6 flg=0; //继续执行case 5:
403 6 break;
404 6 }
405 5 if((val==K_UP)||(val==K_DOWN)||(val==K_LEFT)||(val==K_RIGHT)||(val==K_TC)||(val==K_HJ))
406 5 {
407 6 IEA &= 0xEF; //禁止扫描仪输入的串口中断
408 6 flg=1;
409 6 break;
410 6 }
411 5 }
412 4 if(RxdFlg)
413 4 {//收到条形码
414 5 IEA &= 0xEF; //关描仪输入的串口中断
415 5 // UartTxd(15,&RxdBuf[200]);
416 5 RxdBuf[213] = 0;
417 5 StrToBcd(WinDat[k][1],&RxdBuf[200],&WinDat[k][2]);
418 5 // UartTxd(8,&WinDat[k][2]);
419 5 val = 0;
420 5 flg=1;
421 5 RxdFlg=0;
422 5 break;
C51 COMPILER V8.01 WINDOWS 03/28/2006 09:48:48 PAGE 8
423 5 }
424 4 }
425 3 if(flg==1)break;
426 3 case 5: //输入BCD码;
427 3 val = GetBcd((CurLn-StartLn)*16,InputLocation[k],&WinDat[k][2],WinDat[k][1]|0x80,key);
428 3 key[0] = KeyPress;;
429 3 break;
430 3
431 3 default:val = ScanNumber(0,0,0,0);
432 3 if(val<11)continue;
433 3 break;
434 3 }
435 2 // val&=0x7F;
436 2 switch(val)
437 2 {
438 3 case K_UP: if(CurLn>StartLn)
439 3 CurLn--;
440 3 else
441 3 {
442 4 CurLn--;
443 4 StartLn--;
444 4 if((CurLn<1) || (StartLn<1))
445 4 {
446 5 CurLn = MenuLen;
447 5 if(MenuLen>3)
448 5 {
449 6 StartLn = MenuLen - 3;
450 6 }
451 5 else
452 5 {
453 6 StartLn = 1;
454 6 }
455 5 }
456 4 }
457 3 break;
458 3
459 3 case K_DOWN: if(CurLn<(StartLn+3))
460 3 {
461 4 CurLn++;
462 4 if(CurLn>MenuLen)
463 4 {
464 5 CurLn = 1;
465 5 StartLn = 1;
466 5 }
467 4 }
468 3 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -