如果才能隐藏控制台程序的右键菜单?

ImAmelie 2014-08-01 12:34:18




这是我用控制台写的贪食蛇程序
有个问题一直困惑着我?
怎样取消控制台右键菜单
如果点击控制台右键菜单的标记的话。虽然程序还在运行,但是控制台显示就会暂停。
我想解决这个问题,就要取消这个程序的控制台右键菜单的显示。
请问:如果才能隐藏控制台程序的右键菜单?


PS:我见过这种程序,cmd里能显示右键菜单,但是这种程序就显示不出来!(同一台电脑运行)
...全文
451 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-08-04
  • 打赏
  • 举报
回复
引用 5 楼 u013491662 的回复:
我写的代码目前有1087行 想改的话太麻烦! 有没有什么方法可以禁用控制台程序的鼠标右键?
2楼代码不行吗?
Cnwanglin 2014-08-04
  • 打赏
  • 举报
回复
引用 5 楼 u013491662 的回复:
我写的代码目前有1087行 想改的话太麻烦! 有没有什么方法可以禁用控制台程序的鼠标右键?
写到这个份上还不行,你短我吧,我帮你改!
ImAmelie 2014-08-02
  • 打赏
  • 举报
回复
我写的代码目前有1087行 想改的话太麻烦! 有没有什么方法可以禁用控制台程序的鼠标右键?
ImAmelie 2014-08-01
  • 打赏
  • 举报
回复
感谢2楼和3楼的回复 可是我的程序是纯C语言的 如果才能隐藏纯C语言写的控制台程序的右键菜单? 主函数是main 我用的编译器:VS2013
赵4老师 2014-08-01
  • 打赏
  • 举报
回复
#pragma comment(lib,"user32")
#pragma comment(lib,"gdi32")
#include <windows.h>
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
    PAINTSTRUCT ps;
    HDC hdc;
    HFONT hfont,ohfont;
    RECT r;
    COLORREF oc;

    switch(message) {
    case WM_CLOSE://按Alt+F4退出
        PostQuitMessage(0);
        break;
    case WM_PAINT:
        BeginPaint(hWnd, &ps);
        hdc = ps.hdc; // the device context to draw in
        GetClientRect(hWnd, &r); // Obtain the window's client rectangle
        hfont = CreateFont(240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");
        ohfont=(HFONT)SelectObject(hdc,hfont);
        oc=SetTextColor(hdc,0x00C080FF);
        SetBkMode(hdc, TRANSPARENT);
        TextOut(hdc,r.left+r.right/2-720, r.top+r.bottom/2-120,"最短画图程序",12);
        SelectObject(hdc,ohfont);
        SetTextColor(hdc,oc);
        DeleteObject(hfont);
        EndPaint(hWnd, &ps);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
    MSG msg             = {0};
    WNDCLASS wc         = {0};
    HBRUSH hbrh;
    hbrh=CreateSolidBrush(0x00000000);
    wc.lpfnWndProc      = WndProc;
    wc.hInstance        = hInstance;
    wc.hbrBackground    = hbrh;
    wc.lpszClassName    = "minwindowsapp";
    wc.hCursor          = LoadCursor(NULL,IDC_ARROW);
    if( FAILED(RegisterClass(&wc)) ) return 1;

    if(FAILED(CreateWindow(wc.lpszClassName,
                        "Minimal Windows Application",
                        WS_POPUP|WS_VISIBLE,
                        0,
                        0,
                        GetSystemMetrics(SM_CXSCREEN),
                        GetSystemMetrics(SM_CYSCREEN),
                        0,
                        0,
                        hInstance,
                        NULL)))
        return 2;

    while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {
        DispatchMessage( &msg );
    }
    DeleteObject(hbrh);
    return 0;
}
Cnwanglin 2014-08-01
  • 打赏
  • 举报
回复
vs2010测试通过 #include <Windows.h> //BOOL ReadConsoleInput( // HANDLE hConsoleInput, //输入句柄 // PINPUT_RECORD lpBuffer, //指向INPUT_RECORD结构体(数组)的指针 // DWORD nLength, //上面那个结构体的大小 // LPDWORD lpNumberOfEventsRead //实际读入输入内容的个数 //); VOID MouseEventProc(MOUSE_EVENT_RECORD mer) { switch(mer.dwEventFlags) { case 0: if(mer.dwButtonState == FROM_LEFT_1ST_BUTTON_PRESSED) { printf("left button press \n"); } else if(mer.dwButtonState == RIGHTMOST_BUTTON_PRESSED) { printf("right button press \n"); } break; } } int _tmain(int argc, _TCHAR* argv[]) { HANDLE _hIn = GetStdHandle(STD_INPUT_HANDLE); HANDLE _hOut = GetStdHandle(STD_OUTPUT_HANDLE); INPUT_RECORD _InRec[255]; DWORD _NumRead; BOOL bRet = true; while(true) { bRet = ReadConsoleInput(_hIn,_InRec,1,&_NumRead); if(!bRet) { break; } for(unsigned int i = 0; i < _NumRead; i ++) { switch(_InRec[i].EventType) { case MOUSE_EVENT: MouseEventProc(_InRec[i].Event.MouseEvent); break; } } } return 0; }
勤奋的小游侠 2014-08-01
  • 打赏
  • 举报
回复
你这是用什么写的?纯c++和winAPI吗?
ConEmu 不是外壳程序,因此它不提供“外壳程序功能”,例如远程访问,制表符完成,命令历史记录等。ConEmu 是一个高级控制台窗口,您可以在其中运行您选择的任何 shell。但是,其中一些功能已放置在 RoadMap 中。您也可以在 cmd.exe 中尝试 Clink 进行 bash 风格的完成,而在 powershell.exe 中尝试 PSReadLine 或 PowerTab。 甚至可以从 cygwin,git-for-windows,msys2,mingw 等中选择 bash 或任何其他类似 unix 的 shell。 Windows 终端神器 ConEmu 中文版Windows 终端神器 ConEmu 中文版 ConEmu 在隐藏控制台窗口中启动控制台程序,并提供具有各种功能的备用可定制 GUI 窗口: 平滑友好的窗口大小调整; 编辑器,查看器,面板和控制台的选项卡; 在选项卡中运行简单的 GUI 应用程序(如 PuTTY); Windows 7 跳转列表和任务栏按钮上的进度; 在 Windows 7 或 64 位操作系统上轻松运行旧的 DOS 应用程序(游戏); Far Manager 中的缩略图和图块; 正常,最大化和全屏图形窗口模式; 窗口字体抗锯齿:标准,ClearType,禁用; 窗口字体:家庭字体,高度,宽度,粗体,斜体等; 支持中文版本的 Windows; 同时在控制台的不同部分使用普通/粗体/斜体字体; 在 Far Manager 3.x 中使用 24 位颜色; ANSI X3.64 和 Xterm 256 色; 光标:标准控制台(水平)或 GUI(垂直); 每个应用程序的可选设置(例如调色板); 使用键盘进行垂直控制台缓冲区滚动(BufferHeight 模式); 在 Far Manager 的编辑器/查看器中显示最后命令的完整输出(超过 1K 行); 可自定义的 Far Manager 右键单击行为(长按可打开上下文菜单); 在 Far Manager 中拖放文件和文件夹(浏览器样式); 对 BDF 字体的支持有限; 用户友好的文本和块选择; 透明和桌面模式; 可定制的开始标签; 可配置和可点击的状态栏; 更多,以及更多…查看“文档”,“设置”页面和“新增功能”。 从注册表或 ConEmu.xml 文件(支持多个命名配置)中读取所有设置,然后应用命令行参数。参数/Config 和/BufferHeight 只能在命令行上指定。大多数设置是使用“设置”对话框配置的,而不是从命令行配置的。 作为 Windows 控制台窗口的增强(本地终端仿真器),ConEmu 将多个控制台和简单的 GUI 应用程序(例如 PuTTY)呈现为一个具有各种功能的可自定义的选项卡式 GUI 窗口。 而且,由于深度集成,ConEmu 是 Far Manager(Wikipedia 中的 FAR)(我最喜欢的 Shell 替换)的最佳伴侣。ConEmu 是一个活跃的项目,欢迎提出建议。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧