草庐IT

win-library

全部标签

c++ - 如何在 C++ Win32 中捕获鼠标在标题栏上的移动?

我有一个自定义的窗口标题栏。我还在这个栏上画了一个位图,我想知道什么时候有人用鼠标光标悬停在它上面。我已经处理了WM_NCMOUSEMOVE消息,但这似乎只在边界上触发,而不是我的标题区域本身。如何检测鼠标何时位于标题栏的特定区域?这是使用VisualC++2010。更新:我已经在一定程度上解决了这个问题。我(故意)没有在窗口上设置WS_CAPTION样式,而是处理WM_NCCALCSIZE并手动调整非客户区的大小-将其向下移动在这种情况下为20像素。这意味着我“强制”为非客户区的区域不会收到WM_NCMOUSEMOVE消息,但也不会收到WM_MOUSEMOVE消息。一种绕过它的方法是

c++ - win32 std::thread 是否泄漏内存?

我在Windows732位下使用MinGWgcc4.8.2编译了以下代码://t.cpp#include#includeclassMine{public:Mine(){std::cout使用g++t.cpp-std=c++11-static-ggdb,并使用Dr.Memory和drmemorya.exe进行调试,我得到了以下输出:Dr.Memoryversion1.6.1739build42builtonFeb23201422:29:25Dr.Memoryresultsforpid7400:"a.exe"Applicationcmdline:"a.exe"Recorded102supp

c++ - 安装摩西翻译软件。错误消息 : "ld: library not found for -lboost_thread"

我正在使用Xcode6.1的MacOSX10.9.5上安装Moses翻译软件。Theinstructionssay我需要安装g++和Boost。执行此操作后,我将gitclone,“cd”到目录中,然后键入./bjam-j8。首先,我确认我具备先决条件。首先,g++(我只是单击TAB以查看可用的内容):$g++g++g++-4.9然后boost:$brewinstallboostWarning:boost-1.56.0alreadyinstalled然后我尝试安装:$./bjam-j8Tip:installtcmallocforfasterthreading.SeeBUILD-INST

c++ - Win32 选项卡控件灰色背景

我正在努力使我在win32中的ui无处不在。问题是我的选项卡控件的背景不是白色的,所以不是选项卡本身,而是选项卡旁边的部分是灰色的。我正在为静态控件处理WM_CTLCOLORSTATIC,但它似乎不适用于选项卡控件。caseWM_CTLCOLORSTATIC:{HDChEdit=(HDC)w_param;SetBkMode(hEdit,TRANSPARENT);SetTextColor(hEdit,RGB(0,0,0));SetBkColor(hEdit,RGB(255,255,255));//DonotreturnabrushcreatedbyCreateSolidBrush(...

c++ - 从重定向的 STDOUT 读取 Unicode(C++、Win32 API、Qt)

我有一个动态加载插件DLL的C++应用程序。DLL通过std::cout和std::wcout发送文本输出。基于Qt的UI必须抓取DLL的所有文本输出并显示它。由于运行时库的差异,DLL可能具有不同的cout/wcout实例,因此使用流缓冲区替换的方法并不完全有效。因此,我应用了Windows特定的STDOUT重定向,如下所示:StreamReader::StreamReader(QObject*parent):QThread(parent){//void}voidStreamReader::cleanUp(){//restorestdoutSetStdHandle(STD_OUTPU

c++ - 异常被 Win32 消息调度程序捕获的问题

这是一个非常低级的问题,但也许这里有人有一些见解......我遇到了一个问题,未处理的SEH异常(例如访问冲突)似乎在Win32消息调度级别被捕获,而不是终止程序。我找到了以下引用博客,它解释了问题,但仅在WM_TIMER消息的上下文中:http://bugswar.blogspot.com/2010/07/why-its-not-crashing.html我在Win2008R2和“正常”消息(例如:WM_COMMAND等)上遇到了问题。我怀疑可能是Windows试图通过屏蔽异常来“帮助”,但我希望它出错;“继续并忽略”行为通常会导致应用程序出现问题。我意识到我可以尝试将每个函数包装在

c++ - 是否可以修改显示的原点? (win32)

我有许多无法修改的应用程序(无源代码),它们被硬编码为在0,0处绘制。通常这不是问题,但是出现了一个新项目(kiosk),我需要在这些应用程序的外部画一个边界。我正在寻找一种方法来更改显示范围:X:0to1200Y:0to900类似于:X:-100to1100Y:-100to800我在MSDN上看到了几个函数,如SetViewportExtEx、SetWorldTransform,它们符合需要,但是如果我正确理解它们,它们就不会在系统范围内进行更改。它们仅适用于当前进程。我正在用C++编程,但如果注册表/控制面板/等中有设置也可以。有没有人以前做过这样的事情?编辑1:窗口位置硬编码为0

c++ - Qt Release build 给出 MSVC++ Runtime Library Error

在Debug模式下构建时,我有一个完美运行的应用程序(带有大约16个DLL的exe)。然而,一旦我切换到Release,获取exe和构建的所有DLL,所有必需的DLL从QtSDKbin复制过来,我就会遇到运行时错误。我应该如何排查发生的问题?这是一个普遍的问题吗?我没有任何入口点等,甚至无法从...开始。只是一个一般的运行时错误。我发现的唯一类似问题是here,但这是来自更旧版本的Qt。4.7.4只有一个bin文件夹。编辑1-除了创建我的MainWindow对象之外,我已经注释了我的main.cpp中的所有内容,以及我的MainWindow构造函数中的所有内容,所以它应该只是打开一个空

c++ - Win32 GDI 画一个圆?

我正在尝试画一个圆,我目前正在使用Ellipse()函数。我有起始鼠标坐标-x1和y1以及结束坐标x2和y2。如您所见,我强制y2(temp_shape.bottom)=y1+(x2-x1)。这不能按预期工作。我知道计算是完全错误的,但有什么想法是正确的吗?下面的代码。caseWM_PAINT:{hdc=BeginPaint(hWnd,&ps);//TODO:Addanydrawingcodehere...RECTrect;GetClientRect(hWnd,&rect);HDCbackbuffDC=CreateCompatibleDC(hdc);HBITMAPbackbuffer=

c++ - Win32 - Midi 循环与 MCISendString

我正在制作一款游戏,我正在使用midi文件作为背景音乐。这是我目前使用的代码:voidGame::play_music(){//Startthemusic:if(map.levelnumber%2==0){mciSendString(L"openMUSIC01.MIDtypesequenceraliasMusic1",NULL,0,NULL);mciSendString(L"playMusic1",NULL,0,NULL);playing="Music1";}else{mciSendString(L"openMUSIC02.MIDtypesequenceraliasMusic2",NU