草庐IT

c++ - 类似 MSPaint 的应用程序编写。如何正确使用 BitBlt?

我正在使用windows.h(GDI)在C++中编写类似mspaint的简单程序。对于我的程序,我只需要钢笔工具。因此,我需要将主窗口的图片存储在某个地方(例如在内存HDC和HBITMAP中),以便在WM_PAINT消息中绘制它。我什么时候必须首先将窗口的HDC存储到我的内存HDC和HBITMAP?我应该在什么消息中存储窗口?例如,我认为我们不能在WM_CREATE中这样做,因为我们还没有窗口。PatBlt和BitBlt有什么区别?我的应用应该使用什么?如何将窗口的HDC内容复制到我的内存HDC和位图中?我正在尝试做这样的事情:LPRECTlpRect;GetClientRect(hw

c++ - 这段代码是一个有效的临界区包装类吗

我实际上有2个问题,这是第一个。使用我在两个不同站点找到的代码,我编写了这两个关键部分包装器类。它会起作用吗?#ifndefCRITICALSECTION_H#defineCRITICALSECTION_H#include"windows.h"classCriticalSection{longm_nLockCount;longm_nThreadId;typedefCRITICAL_SECTIONcs;csm_tCS;public:CriticalSection(){::InitializeCriticalSection(&m_tCS);m_nLockCount=0;m_nThreadI

c++ - 在c++中同时从两个串口读取

我正在使用的操作系统是Windows7。我需要以一定的时间间隔从宽带卡中获取数据。这辆车将数据发送到两个独立的COM端口。COM3和COM4。每个时间间隔我都需要查询两个串行端口上的信息行并将它们写入文件。如何从两个COM端口读取数据?我必须使用线程吗?同时打开两者是好的做法吗? 最佳答案 看看这个tutorial.如果您打开com端口,然后调用WaitComEvent在重叠IO中,您将在OVERLAPPED中获得句柄可用于WaitForMultipleObjects.您应该能够在一个线程中使用下面的大纲来完成它:HANDLEhSe

c++ - 为什么 cvWaitKey(0) 不起作用?

我不确定为什么,但出于一个神秘的原因,我的C++应用程序在到达cvWaitKey(0)时不再等待,它只是通过了这一行,就像这个函数什么都不做一样!我也试过cvWaitKey(100000)它也不起作用......voidmain(){cvWaitKey(0);return;}我的项目有点复杂,我使用的是VisualStudio2010,它包括opencvffmpegpthreadwinsocks和一些其他库。你能猜出为什么会这样吗? 最佳答案 你调用过cvNamedWindow了吗?如果没有cvNamedWindow,它将无法工作。

c - Windows 服务 C

我已经用C语言编写了一个Windows服务,但是缺少关于用这种语言编写服务的文档意味着我有一些事情需要帮助。我想创建一个配置文件,服务会读取该配置文件以获取一些设置/选项。我想知道最好的方法是什么以及如何去做。服务.exe将与其他文件/程序一起安装在用户指定的位置。我的第一个问题是,我应该将此配置文件保存在与服务.exe相同的目录中,还是应该将其放在我为我的程序创建的%appdata%文件夹中?服务如何找到配置文件。我应该将配置文件的位置存储在注册表中并将注册表项硬编码到服务中吗?或者是否可以安装该服务,使其将配置文件路径作为默认命令行参数?或者我应该将我的配置文件保存在与服务.exe

c++ - 如何使用 C++ 与命令提示符 (CMD) 通信?

我有一个应用程序需要向cmd发送命令,然后取回输出(捕获输出)。如何在不使用任何MSWindows特定API的情况下使用C++完成此操作?有没有一种方法可以做到跨平台(例如,对于linux终端)?顺便说一句,我正在使用WinXPSP3。我实际上是指重定向输入/输出。例如,在cmd上运行命令“make”,然后在发生错误时捕获错误消息(重定向到我的应用程序)。 最佳答案 如前所述:如果您可以避免在您的程序中启动子进程,而是适应更广泛的“工具箱隐喻”,那通常会更好......http://en.wikipedia.org/wiki/Uni

c++ - 如何模拟文件结束

我正在从命令终端向我的C++程序(在MinGW下编译)输入输入。现在我想模拟一个文件结尾。有捷径吗?我通常知道它是CTRL+C,但这在这里不起作用。 最佳答案 在Windows上,您通常使用F6。在Linux上,Ctrl-D。在按下Enter后立即按下它往往效果最好。 关于c++-如何模拟文件结束,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8106370/

c++ - 我可以通过哪些方式从 Windows 工作站在 Linux 中开发 C++ 应用程序?

我正在为Linux开发C++应用程序,但我的工作站是Windows7。我读到VisualStudio是最强大的WindowsC++IDE,但我实际上想在Ubuntu上执行代码并能够使用比gdb在图形上更令人愉悦的调试器,尽管gdb的功能非常好。我对valgrind也很满意,但同样,我希望能够在Windows的IDE中利用它。我目前使用QtCreator作为我的C++IDE,我通过samba挂载到linuxbox来编辑文件。我使用Putty来运行Linux命令。我使用git作为源代码控制系统,使用gcc作为编译器,使用cmake作为构建系统。我喜欢QtCreator,但在配置它时,我没有

c# - Windows 应用程序和 Spy++

我不明白为什么我可以使用Spy++获取某些Windows应用程序的句柄、窗口类等。例如,iexplore.exe,它只是不适用于url文本框或任何文本,如果加载页面中有编辑框区域;还有一些Windows应用程序我只得到外层的属性,而它的内部按钮、文本框或组合框是不可访问的。在这些应用程序中,我应该怎么做才能接触到它们?谢谢:) 最佳答案 这些程序使用无窗口控件。他们不使用标准的Windows控件,而是在一个巨大的容器中自行绘制和处理所有内容。 关于c#-Windows应用程序和Spy++

c++ - 我的程序意外结束

这个最简单的程序在Release模式下编译时出错,但在Debug模式下编译正常:#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);returnapp.exec();}错误(从qt的控制台输出)*StartingC:\excercizes\QT_projects\Line_Counter-build-desktop-Qt_4_7_4_for_Desktop_-_MinGW_4_4__Qt_SDK__Release\release\Line_Counter.exe...Theprogramhasunexpecte