📄 w32g_subwin2.c
字号:
saved_curattr = w32g_wrd_wnd.curattr; saved_curposx = w32g_wrd_wnd.curposx; saved_curposy = w32g_wrd_wnd.curposy; } else { w32g_wrd_wnd.curforecolor = saved_curforecolor; w32g_wrd_wnd.curbackcolor = saved_curbackcolor; w32g_wrd_wnd.curattr = saved_curattr; WrdWndGoto( saved_curposx, saved_curposy ); }}// from_from 峴偐傜 from_to 峴傑偱傪 to_from 峴傪愭摢偵僐僺乕丅void WrdWndCopyLineS ( int from_from, int from_to, int to_from, int lockflag ){ int y, to_to; if ( !w32g_wrd_wnd.active ) return; if ( to_from >= w32g_wrd_wnd.col ) return; if ( to_from == from_from ) return; if ( from_to < from_from ) return; if ( to_from < 0 ) { from_from -= to_from; from_to -= to_from; to_from = 0; } to_to = to_from + from_to - from_from; if ( to_to >= w32g_wrd_wnd.col ) to_to = w32g_wrd_wnd.col - 1; if ( lockflag ) wrd_wnd_lock(); if ( to_from < from_from ) { for ( y = to_from; y <= to_to; y++ ) { int y_from = from_from + y - to_from; if ( y_from < 0 || y_from >= w32g_wrd_wnd.col ) { memset ( w32g_wrd_wnd.textbuf[y], 0x20, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.forecolorbuf[y], W32G_WRDWND_BLACK, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.backcolorbuf[y], W32G_WRDWND_BLACK, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.attrbuf[y], 0, w32g_wrd_wnd.row); } else { memcpy ( w32g_wrd_wnd.textbuf[y], w32g_wrd_wnd.textbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.forecolorbuf[y], w32g_wrd_wnd.forecolorbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.backcolorbuf[y], w32g_wrd_wnd.backcolorbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.attrbuf[y], w32g_wrd_wnd.attrbuf[y_from], w32g_wrd_wnd.row ); } } } else { for ( y = to_to; y >= to_from; y-- ) { int y_from = from_from + y - to_from; if ( y_from < 0 || y_from >= w32g_wrd_wnd.col ) { memset ( w32g_wrd_wnd.textbuf[y], 0x20, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.forecolorbuf[y], W32G_WRDWND_BLACK, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.backcolorbuf[y], W32G_WRDWND_BLACK, w32g_wrd_wnd.row ); memset ( w32g_wrd_wnd.attrbuf[y], 0, w32g_wrd_wnd.row); } else { memcpy ( w32g_wrd_wnd.textbuf[y], w32g_wrd_wnd.textbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.forecolorbuf[y], w32g_wrd_wnd.forecolorbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.backcolorbuf[y], w32g_wrd_wnd.backcolorbuf[y_from], w32g_wrd_wnd.row ); memcpy ( w32g_wrd_wnd.attrbuf[y], w32g_wrd_wnd.attrbuf[y_from], w32g_wrd_wnd.row ); } } } if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( 0, to_from, w32g_wrd_wnd.row - 1, to_to, lockflag );}// from 峴傪 to 峴偵僐僺乕丅void WrdWndCopyLine ( int from, int to, int lockflag ){ if ( !w32g_wrd_wnd.active ) return; WrdWndCopyLineS ( from, from, to, lockflag );}// from峴偐傜 to 峴傑偱僋儕傾void WrdWndClearLineFromTo(int from, int to, int lockflag){ int i; if ( !w32g_wrd_wnd.active ) return; if ( from < 0 ) from = 0; if ( from >= w32g_wrd_wnd.col ) from = w32g_wrd_wnd.col - 1; if ( to < 0 ) to = 0; if ( to >= w32g_wrd_wnd.col ) to = w32g_wrd_wnd.col - 1; if ( to < from ) return; if ( lockflag ) wrd_wnd_lock(); for ( i = from; i <= to; i++ ) { memset(w32g_wrd_wnd.textbuf[i], 0x20, w32g_wrd_wnd.row); memset(w32g_wrd_wnd.forecolorbuf[i], W32G_WRDWND_BLACK, w32g_wrd_wnd.row); memset(w32g_wrd_wnd.backcolorbuf[i], W32G_WRDWND_BLACK, w32g_wrd_wnd.row); memset(w32g_wrd_wnd.attrbuf[i], 0, w32g_wrd_wnd.row); } if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( 0, from, w32g_wrd_wnd.row - 1, to, lockflag );}// from 峴傪 to 峴偵堏摦丅void WrdWndMoveLine(int from, int to, int lockflag){ if ( !w32g_wrd_wnd.active ) return; if ( from == to ) return; if ( from < 0 || from >= w32g_wrd_wnd.col ) return; if ( to < 0 || to >= w32g_wrd_wnd.col ) return; WrdWndCopyLine ( from, to, lockflag ); WrdWndClearLineFromTo ( from,from, lockflag );}// 僗僋儘乕儖僟僂儞偡傞丅void WrdWndScrollDown(int lockflag){ if ( !w32g_wrd_wnd.active ) return; WrdWndCopyLineS ( 0, w32g_wrd_wnd.col - 1, 1, lockflag ); WrdWndClearLineFromTo ( 0, 0, lockflag );}// 僗僋儘乕儖傾僢僾偡傞丅void WrdWndScrollUp(int lockflag){ if ( !w32g_wrd_wnd.active ) return; WrdWndCopyLineS ( 1, w32g_wrd_wnd.col - 1, 0, lockflag ); WrdWndClearLineFromTo ( w32g_wrd_wnd.col - 1, w32g_wrd_wnd.col - 1, lockflag );}// 夋柺徚嫀void WrdWndClear(int lockflag){ if ( !w32g_wrd_wnd.active ) return; WrdWndClearLineFromTo ( 0, w32g_wrd_wnd.col - 1, lockflag );}// 暥帤弌椡void WrdWndPutString(char *str, int lockflag){ if ( !w32g_wrd_wnd.active ) return; WrdWndPutStringN(str, strlen(str),lockflag);}// 暥帤弌椡(n暥帤)void WrdWndPutStringN(char *str, int n, int lockflag){ int i; if ( !w32g_wrd_wnd.active ) return; if ( lockflag ) wrd_wnd_lock(); for(;;){ if ( w32g_wrd_wnd.curposx + n <= w32g_wrd_wnd.row ) { memcpy( &w32g_wrd_wnd.textbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], str, n ); memset( &w32g_wrd_wnd.forecolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curforecolor, n ); memset( &w32g_wrd_wnd.backcolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curbackcolor, n ); memset( &w32g_wrd_wnd.attrbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curattr, n ); if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( w32g_wrd_wnd.curposx, w32g_wrd_wnd.curposy, w32g_wrd_wnd.curposx + n - 1, w32g_wrd_wnd.curposy, lockflag ); if ( lockflag ) wrd_wnd_lock(); w32g_wrd_wnd.curposx += n; if ( w32g_wrd_wnd.curposx >= w32g_wrd_wnd.row ) { w32g_wrd_wnd.curposx = 0; w32g_wrd_wnd.curposy++; if ( w32g_wrd_wnd.curposy >= w32g_wrd_wnd.col ) { if ( lockflag ) wrd_wnd_unlock(); WrdWndScrollUp ( lockflag ); if ( lockflag ) wrd_wnd_lock(); w32g_wrd_wnd.curposy = w32g_wrd_wnd.col - 1; } } break; } else { int len = w32g_wrd_wnd.row - w32g_wrd_wnd.curposx; char mbt = _MBC_SINGLE; if ( PlayerLanguage == LANGUAGE_JAPANESE ) { for ( i=0; i < len; i++ ) { mbt = _mbbtype ( str[i], mbt ); } if ( mbt == _MBC_LEAD ) len -= 1; } memcpy( &w32g_wrd_wnd.textbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], str, len ); memset( &w32g_wrd_wnd.forecolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curforecolor, len ); memset( &w32g_wrd_wnd.backcolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curbackcolor, len ); memset( &w32g_wrd_wnd.attrbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], w32g_wrd_wnd.curattr, len ); if ( mbt == _MBC_LEAD ) { w32g_wrd_wnd.textbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.row-1] = 0x20; w32g_wrd_wnd.forecolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.row-1] = w32g_wrd_wnd.curforecolor; w32g_wrd_wnd.backcolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.row-1] = w32g_wrd_wnd.curbackcolor; w32g_wrd_wnd.attrbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.row-1] = 0; } if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( w32g_wrd_wnd.curposx, w32g_wrd_wnd.curposy, w32g_wrd_wnd.curposx + len - 1, w32g_wrd_wnd.curposy, lockflag ); if ( lockflag ) wrd_wnd_lock(); n -= len; str += len; w32g_wrd_wnd.curposx = 0; w32g_wrd_wnd.curposy++; if ( w32g_wrd_wnd.curposy >= w32g_wrd_wnd.col ) { if ( lockflag ) wrd_wnd_unlock(); WrdWndScrollUp(lockflag); if ( lockflag ) wrd_wnd_lock(); w32g_wrd_wnd.curposy = w32g_wrd_wnd.col - 1; } } } if ( lockflag ) wrd_wnd_unlock();}// left == TRUE : 峴偺嵍徚嫀// left != TRUE : 峴偺塃徚嫀void WrdWndLineClearFrom(int left, int lockflag){ if ( !w32g_wrd_wnd.active ) return; if ( lockflag ) wrd_wnd_lock(); if ( left ) { memset( w32g_wrd_wnd.textbuf[w32g_wrd_wnd.curposy] , 0x20 , w32g_wrd_wnd.curposx + 1 ); memset( w32g_wrd_wnd.forecolorbuf[w32g_wrd_wnd.curposy], W32G_WRDWND_BLACK, w32g_wrd_wnd.curposx + 1 ); memset( w32g_wrd_wnd.backcolorbuf[w32g_wrd_wnd.curposy], W32G_WRDWND_BLACK, w32g_wrd_wnd.curposx + 1 ); memset( w32g_wrd_wnd.attrbuf[w32g_wrd_wnd.curposy], 0, w32g_wrd_wnd.curposx + 1 ); if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( 0, w32g_wrd_wnd.curposy, w32g_wrd_wnd.curposx - 1, w32g_wrd_wnd.curposy, lockflag ); } else { memset( &w32g_wrd_wnd.textbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], 0x20 , w32g_wrd_wnd.row - w32g_wrd_wnd.curposx ); memset( &w32g_wrd_wnd.forecolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], W32G_WRDWND_BLACK, w32g_wrd_wnd.row - w32g_wrd_wnd.curposx ); memset( &w32g_wrd_wnd.backcolorbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], W32G_WRDWND_BLACK, w32g_wrd_wnd.row - w32g_wrd_wnd.curposx ); memset( &w32g_wrd_wnd.attrbuf[w32g_wrd_wnd.curposy][w32g_wrd_wnd.curposx], 0, w32g_wrd_wnd.row - w32g_wrd_wnd.curposx ); if ( lockflag ) wrd_wnd_unlock(); wrd_text_update ( w32g_wrd_wnd.curposx, w32g_wrd_wnd.curposy, w32g_wrd_wnd.row - 1, w32g_wrd_wnd.curposy, lockflag ); }}// PC98 偺傾僩儕價儏乕僩偱愝掕void WrdWndSetAttr98(int attr){ if ( !w32g_wrd_wnd.active ) return; switch ( attr ) { case 0: // 婯掕抣 w32g_wrd_wnd.curforecolor = W32G_WRDWND_WHITE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 1: // 僴僀儔僀僩 w32g_wrd_wnd.curattr = 0; break; case 2: // 僶乕僥傿僇儖儔僀儞 w32g_wrd_wnd.curattr = 0; break; case 4: // 傾儞僟乕儔僀儞 w32g_wrd_wnd.curattr = 0; break; case 5: // 僽儕儞僋 w32g_wrd_wnd.curattr = 0; break; case 7: // 儕僶乕僗 { char tmp = w32g_wrd_wnd.curbackcolor; w32g_wrd_wnd.curbackcolor = w32g_wrd_wnd.curforecolor; w32g_wrd_wnd.curforecolor = tmp; w32g_wrd_wnd.curattr = 0; w32g_wrd_wnd.curattr |= W32G_WRDWND_ATTR_REVERSE; } break; case 8: // 僔乕僋儗僢僩 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 16: // 崟 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 17: // 愒 w32g_wrd_wnd.curforecolor = W32G_WRDWND_RED; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 18: // 惵 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLUE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 19: // 巼 w32g_wrd_wnd.curforecolor = W32G_WRDWND_PURPLE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 20: // 椢 w32g_wrd_wnd.curforecolor = W32G_WRDWND_GREEN; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 21: // 墿怓 w32g_wrd_wnd.curforecolor = W32G_WRDWND_YELLOW; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 22: // 悈怓 w32g_wrd_wnd.curforecolor = W32G_WRDWND_LIGHTBLUE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 23: // 敀 w32g_wrd_wnd.curforecolor = W32G_WRDWND_WHITE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 30: // 崟 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 31: // 愒 w32g_wrd_wnd.curforecolor = W32G_WRDWND_RED; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 32: // 椢 w32g_wrd_wnd.curforecolor = W32G_WRDWND_GREEN; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 33: // 墿怓 w32g_wrd_wnd.curforecolor = W32G_WRDWND_YELLOW; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 34: // 惵 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLUE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 35: // 巼 w32g_wrd_wnd.curforecolor = W32G_WRDWND_PURPLE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 36: // 悈怓 w32g_wrd_wnd.curforecolor = W32G_WRDWND_LIGHTBLUE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 37: // 敀 w32g_wrd_wnd.curforecolor = W32G_WRDWND_WHITE; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; break; case 40: // 崟斀揮 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curattr = 0; w32g_wrd_wnd.curattr |= W32G_WRDWND_ATTR_REVERSE; break; case 41: // 愒斀揮 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_RED; w32g_wrd_wnd.curattr = 0; w32g_wrd_wnd.curattr |= W32G_WRDWND_ATTR_REVERSE; break; case 42: // 椢斀揮 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_GREEN; w32g_wrd_wnd.curattr = 0; w32g_wrd_wnd.curattr |= W32G_WRDWND_ATTR_REVERSE; break; case 43: // 墿怓斀揮 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BLACK; w32g_wrd_wnd.curbackcolor = W32G_WRDWND_YELLOW; w32g_wrd_wnd.curattr = 0; w32g_wrd_wnd.curattr |= W32G_WRDWND_ATTR_REVERSE; break; case 44: // 惵斀揮 w32g_wrd_wnd.curforecolor = W32G_WRDWND_BL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -