c++ mfc的第二天

获取客户区窗口坐标:

LPPOINT point; //坐标,传给ClientToScreen用的
POINT ptemp;  //用它来初始化point
point = &ptemp;
ptemp.x = 0; ptemp.y = 0;

ClientToScreen(hWnd, point);//获取客户区相对于屏幕的坐标
cout <<"point->x:"<< point->x << endl;
cout <<"point->y:"<< point->y << endl;

参考:https://blog.csdn.net/weixin_37520565/article/details/102546451
https://blog.csdn.net/guolonghui/article/details/6370805

模拟鼠标点击某一坐标

SetCursorPos(620, 910); //设置鼠标坐标到某一位置
//为啥我在mouse event里设置的坐标不好使,只能setcursor???

mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //鼠标按下,坐标是相对当前位置的
Sleep(459);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0);
//如果鼠标移到对应位置,但没有点击,使用管理员权限运行就好了

mouse_event第一个参数就是按下或松开左键,第二个第三个是x,y坐标,并且是相对鼠标当前位置而言,但是我测试鼠标并没有相对当前位置移动,所以只好曲线救国,直接SetCursorPos设置鼠标在屏幕上的绝对位置,mouse event里全设为0;
因为上面已经获取客户区的绝对坐标,所以可以用SetCursorPos设置相对客户区的偏移坐标
参考:https://www.cnblogs.com/leafyoung/archive/2007/06/29/799837.html

        //************获取键盘按键*******************
        keybd_event(27, 0, 0, 0);
        keybd_event(27, 0, KEYEVENTF_KEYUP, 0);
        //第一个是虚拟键码。键码值必须在1~254之间。第二个是硬件扫描码,好像有的游戏要用到


        //************获取屏幕颜色*******************
        HDC hdc = ::GetDC(hWnd);
        COLORREF pixel = ::GetPixel(hdc, 720, 160);
        if (pixel != CLR_INVALID) {
     
            int red = GetRValue(pixel);
            int green = GetGValue(pixel);
            int blue = GetBValue(pixel);
            cout << "R=" << red << ";G=" << green << ";B=" << blue << endl;
        }

参考:https://blog.csdn.net/qq_40757240/article/details/105504524
https://blog.csdn.net/lhrsdl/article/details/52579286

你可能感兴趣的:(代码,c++,mfc)