我很想在单击图像时打开不同的URL(不幸的是,每个图像将打开不同的URL),它一直只打开第一个URL。图像的方向和用于调用url的代码位于mouseclick的callbackfution下,如下所示。
| | |
| Image 1|Image 2 |
|________|________|
void CallBackFunc(int event, int x, int y, int flags, void * userdata)
{
if(event == EVENT_LBUTTONDOWN && image1.data)
{
//cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ")" << endl;
const char * urlA = "http://www.google.com";
wchar_t urlW[MAX_PATH];
std::copy(urlA, urlA + lstrlenA(urlA) + 1, urlW);
if((int)ShellExecuteW(NULL, L"open", urlW, NULL, NULL, SW_SHOW) < 32)
;
}
else if(event == EVENT_LBUTTONDOWN && image2.data)
{
cout << "Left button of the mouse is clicked - position (" << x << ", " << y << ")"
<< endl;
const char * urlA = "http://www.yahoo.com";
wchar_t urlW[MAX_PATH];
std::copy(urlA, urlA + lstrlenA(urlA) + 1, urlW);
if((int)ShellExecuteW(NULL, L"open", urlW, NULL, NULL, SW_SHOW) < 32)
;
}
else if(event == EVENT_RBUTTONDOWN)
{
cout << "Right button of the mouse is clicked - position (" << x << ", " << y << ")"
<< endl;
}
else if(event == EVENT_MBUTTONDOWN)
{
cout << "Middle button of the mouse is clicked - position (" << x << ", " << y
<< ")" << endl;
}
else if(event == EVENT_MOUSEMOVE)
{
cout << "Mouse move over the window - position (" << x << ", " << y << ")" << endl;
}
}
我真的不知道我哪里出了问题,因为我尝试将第二个URL声明为urlB,但仍然无法正常工作。我希望有一个人可以帮助我。谢谢!
PS(我正在使用opencv 3.0在C ++上运行程序)
最佳答案
从图像的方向来看,您可以使用点击事件的x
坐标选择URL。例如,如果图像的宽度相等,则可以使用x < window_width/2
条件。
例:
if(event == EVENT_LBUTTONDOWN && x < window_width / 2)
要获取窗口宽度,可以获取
cvGetWindowHandle
窗口本机句柄,然后获取其上特定于平台的功能,或者仅根据图像的大小计算宽度。