第一个问题:
console程序如果禁止用户点击右上角的X关闭?如何禁止用户使用Ctrl+C或者Ctrl+Break关闭?第二个问题:
使用printf显示到console上的字符,最多只能显示300行,如果可以增加这个数值或者是不限制?
console程序如果禁止用户点击右上角的X关闭?如何禁止用户使用Ctrl+C或者Ctrl+Break关闭?第二个问题:
使用printf显示到console上的字符,最多只能显示300行,如果可以增加这个数值或者是不限制?
解决方案 »
- 如何使CPropertySheet、CPropertyPage做的向导下一步按钮置灰?
- vc 为什么关闭程序后进程没关掉?急!!!!!
- 求《COM原理与应用》(潘爱民)一书的源代码
- 如何直接编辑CListBox和CComboBox中的内容?
- 只有调用COM组件的执行文件,没有源码,怎么调试COM组件。急~~~~在线等
- 还有问题
- 在一个工作线程中使用CSocket有什么顾忌,总是第二次就出错?
- 欢迎提供C/C++面试题目及答案,欢迎讨论
- 怎样向对话框中加载图片?
- 高分求桌面宠物之类实现桌面动画的源码
- 希望高手帮忙!!我想完成程序的日志读写.我改80分,谢谢高手帮忙!
- installscript菜鸟问题
应该是"如何"不是"如果".PS:console程序如果禁止
PS:如果可以增加这个数值
2.msdn查"Console Functions"
SetConsoleCtrlHandler来设置Ctrl+C的句柄.
第二个问题:
用SetConsoleScreenBufferSize更改缓冲区大小.
第二个问题已经用GetConsoleScreenBufferInfo和SetConsoleScreenBufferSize解决了.现在是第一个问题没解决.我在main函数中另外启了两个工作线程.然后主线程等待工作线程.
这两个工作线程中,有一个线程启动了一个线程池(目前设置为10个线程),另一个为一个死循环,等待一个event然后结束.我在主线程中调用了SetConsoleCtrlHandler,其Handler函数如下:
BOOL HandlerRoutine(DWORD dwCtrlType)
{
switch (dwCtrlType)
{
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_CLOSE_EVENT:
return TRUE;
case CTRL_LOGOFF_EVENT:
case CTRL_SHUTDOWN_EVENT:
return FALSE;
default:
return FALSE;
}
}
但是按关闭按钮程序窗口还是会被关闭.
然后我尝试在所有线程中调用SetConsoleCtrlHandler,包括两个工作线程和10个线程池中的线程,但是按关闭按钮还是会导致窗口被关闭.如何防止这种情况发生?
同时通过判断得到的消息来实现的,也就是你在捕获到消息CTRL-BREAK/CTRL-C后别让他做关闭操作就可以了至于要添加多于300行的问题,我不大知道
!