更改后如何将默认名称设置为窗口
How to set default name to window after changing?
>我有一个名为"Skylines"的窗口,我想在这个窗口中获取鼠标点击的坐标。我想将它们写在窗口的标题上,但我不明白释放鼠标按钮后如何更改窗口的名称。
现在我已经做到了:
void mouseOnSkylines(int evt, int x, int y, int flags, void* param)
{
char sWindowName[100];
HWND hWnd, hPar;
switch(evt)
{
case CV_EVENT_LBUTTONDOWN:
hWnd = (HWND)cvGetWindowHandle("Skylines");
hPar = GetParent(hWnd);
sprintf(sWindowName, "(%d, %d)", x, y);
SetWindowText(hPar, sWindowName);
break;
case CV_EVENT_LBUTTONUP:
hWnd = (HWND)cvGetWindowHandle("Skylines");
hPar = GetParent(hWnd);
sprintf(sWindowName, "Skylines");
SetWindowText(hPar, sWindowName);
}
}
如何才能做得更好?
在窗口中,您可以设置和重置OpenCV窗口的标题,如下所示:
#include<afxwin.h>
void mouse(int _event, int x, int y,int flags, void* param)
{
static char old_name[256];
if(_event==CV_EVENT_LBUTTONDOWN)
{
char* old_name_ptr = (char*)param;
memcpy(old_name,old_name_ptr,256);
char new_name[256];
sprintf(new_name,"%d, %d ",x,y);
HWND hWnd = (HWND)cvGetWindowHandle(old_name);
CWnd *wnd = CWnd::FromHandle(hWnd);
CWnd *wndP = wnd->GetParent();
wndP->SetWindowText(new_name);
}
if(_event==CV_EVENT_LBUTTONUP)
{
char* old_name_ptr = (char*)param;
HWND hWnd = (HWND)cvGetWindowHandle(old_name_ptr);
CWnd *wnd = CWnd::FromHandle(hWnd);
CWnd *wndP = wnd->GetParent();
wndP->SetWindowText(old_name);
}
}
在主函数中:
IplImage* img = cvLoadImage(path);
char winTitle[256] = "Skylines";
cvNamedWindow(winTitle);
cvSetMouseCallback(winTitle,mouse,winTitle);
cvShowImage(winTitle,img);
cvWaitKey();
相关文章:
- 将 SDL2 窗口设置为特定显示
- 如何在win32的窗口类中设置动态菜单?
- 如何设置与其背景图像大小相对应的窗口大小?
- 设置窗口几何图形特性的正确方法
- Win32 C++ 将窗口位置设置为右下角
- QT:即使在static_cast后也无法在主窗口中设置对象的位置
- C# - 显示对话框将所有者设置为非托管窗口
- 如何在窗口上设置使用 CreateProcess 创建的新进程的主线程的堆栈大小?
- 如何设置终端窗口的固定尺寸
- 无法使用 Unicode 特殊字符设置窗口文本
- 设置子窗口的文本颜色
- 构造函数字符串参数未设置窗口标题
- 设置窗口大小后,SDL不会渲染到整个窗口
- 如何通过在运行时编辑文件来设置窗口属性
- 使用 winAPI 设置窗口的高性能电源计划C++
- 设置窗口放置不适用于最大化窗口
- 如何在MFC上设置窗口位置以将其定位到屏幕顶部
- JavaFX设置窗口总是在顶部与JNA库,windows操作系统
- 带有sdl设置窗口的proplem
- 创建后如何使用Windows API(C++)设置窗口像素的颜色?