ConsoleWindows控制台的增强

联合创作 · 2023-09-29 06:05

Console是Windows控制台的增强的实现。受eConsole(http://www.informatik.uni-frankfurt.de/~corion)项目的启发而创建。



Console功能包括:


多选项卡(多标签页)支持


像文本编辑器一样选择文本


设置不同类型的背景(纯色,图形,透明度)


设置字体


各种不同的窗口风格


注:Console不是一个Shell,因此,它没有实现Shell的特性,如命令完成,语法着色,命令行历史等。


Console是你选择的Shell(cmd.exe, 4NT, bash等)的更强大的终端。


=============================================================================


官方版本不支持中文显示和输入,并且窗口最大化


我们可以对其做一些修改来实现中文显示和输入。


1,中文显示


把下面的内容保存为reg文件:


Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\Console\Console2 command window]


"CodePage"=dword:000003a8


"ScreenBufferSize"=dword:01f40050


"WindowPosition"=dword:00ee0127


"FontSize"=dword:000e0000


"FontFamily"=dword:00000036


"FontWeight"=dword:00000190


"FaceName"="新宋体"


 


2,中文输入(需要修改源代码)


修改ConsoleView.cpp文件:


BOOL ConsoleView::PreTranslateMessage(MSG* pMsg)


{


if ((pMsg->message == WM_KEYDOWN) || 


(pMsg->message == WM_KEYUP) ||


(pMsg->message == WM_SYSKEYDOWN) || 


(pMsg->message == WM_SYSKEYUP))


{


// Avoid calling ::TranslateMessage for WM_KEYDOWN, WM_KEYUP,


// WM_SYSKEYDOWN and WM_SYSKEYUP (except for wParam == VK_PACKET, 


// which is sent by SendInput when pasting text).


///


// This prevents WM_CHAR and WM_SYSCHAR messages, enabling stuff like


// handling 'dead' characters input and passing all keys to console.


if (pMsg->wParam == VK_PACKET) return FALSE;


//::DispatchMessage(pMsg);   // 原代码中的内容


//添加输入中文功能: begin (参考自http://download.csdn.net/detail/zhangj7851/2513105)


::TranslateMessage(pMsg);


if(!::PeekMessage(pMsg, NULL, 0, 0, PM_NOREMOVE))


::DispatchMessage(pMsg);


//添加输入中文功能: end


return TRUE;


}


 


return FALSE;


}


 


3,窗口最大化(需要修改源代码)


修改MainFrame.cpp文件


void MainFrame::SetWindowStyles()


{


    ......


    //dwStyle &= ~WS_MAXIMIZEBOX;   // 这一行注释或删除掉


    ......


}

浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报