利用Win32 API的子窗口控件(纯写代码)完成。
HFONT hFont = CreateFont(20,7,0,0,400,FALSE, FALSE, FALSE,DEFAULT_CHARSET,OUT_CHARACTER_PRECIS,CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY,FF_DONTCARE,TEXT("微软雅黑"));
TextTime = CreateWindowEx(0,"STATIC","点击时间间隔(ms):",WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE,30,40,125,20,hwnd,(HMENU)1,0,0);
TimeEdit = CreateWindowEx(0,"EDIT","",WS_CHILD|WS_VISIBLE|WS_BORDER|ES_NUMBER|ES_AUTOHSCROLL,165,40,70,25,hwnd,(HMENU)2,0,0);
ChoiceGroupBox = CreateWindowEx(0,"BUTTON","按键选择",WS_CHILD|WS_VISIBLE|BS_GROUPBOX,25,120,350,100,hwnd,(HMENU)3,0,0);
RadioButtonLeft = CreateWindowEx(0,"BUTTON","左键",WS_GROUP|WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,5,30,80,40,ChoiceGroupBox,(HMENU)4,0,0);
RadioButtonMid = CreateWindowEx(0,"BUTTON","中键",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,120,30,80,40,ChoiceGroupBox,(HMENU)5,0,0);
RadioButtonRight = CreateWindowEx(0,"BUTTON","右键",WS_CHILD|WS_VISIBLE|BS_AUTORADIOBUTTON,225,30,80,40,ChoiceGroupBox,(HMENU)6,0,0);
PositionList = CreateWindowEx(0,"LISTBOX","坐标",WS_CHILD|WS_BORDER|WS_VISIBLE|(LBS_STANDARD^LBS_SORT),25,255,180,210,hwnd,(HMENU)7,0,0);
AddButton = CreateWindowEx(0,"BUTTON","添加",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT,25,480,40,25,hwnd,(HMENU)71,0,0);
DeleteButton = CreateWindowEx(0,"BUTTON","删除",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT,75,480,40,25,hwnd,(HMENU)72,0,0);
ClearButton = CreateWindowEx(0,"BUTTON","清空",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT,125,480,40*2,25,hwnd,(HMENU)73,0,0);
TextPosition = CreateWindowEx(0,"STATIC","坐标(Ctrl+O锁定)",WS_BORDER|WS_CHILD|WS_VISIBLE|SS_CENTER|SS_CENTERIMAGE,250,255,130,20,hwnd,(HMENU)8,0,0);
PositionXEdit = CreateWindowEx(0,"EDIT","",WS_CHILD|WS_VISIBLE|ES_NUMBER|ES_AUTOHSCROLL|ES_READONLY|WS_BORDER,240,300,70,25,hwnd,(HMENU)9,0,0);
PositionYEdit = CreateWindowEx(0,"EDIT","",WS_CHILD|WS_VISIBLE|ES_NUMBER|ES_AUTOHSCROLL|ES_READONLY|WS_BORDER,315,300,70,25,hwnd,(HMENU)10,0,0);
StartButton = CreateWindowEx(0,"BUTTON","开始(Ctrl+S)",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT,230,400,95,35,hwnd,(HMENU)11,0,0);
EndButton = CreateWindowEx(0,"BUTTON","停止(Ctrl+E)",WS_CHILD|WS_BORDER|WS_VISIBLE|BS_PUSHBUTTON|BS_FLAT,230,435,95,35,hwnd,(HMENU)12,0,0);
SendMessage(ChoiceGroupBox,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(RadioButtonLeft,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(RadioButtonMid,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(RadioButtonRight,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(TextTime,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(TimeEdit,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(StartButton,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(EndButton,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(PositionList,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(AddButton,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(DeleteButton,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(ClearButton,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(TextPosition,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(PositionXEdit,WM_SETFONT,(WPARAM)hFont,0);
SendMessage(PositionYEdit,WM_SETFONT,(WPARAM)hFont,0);
break;
VOID WINAPI mouse_event( _In_ DWORD dwFlags, _In_ DWORD dx, _In_ DWORD dy, _In_ DWORD dwData, _In_ ULONG_PTR dwExtraInfo );
2.官方文档参考:mouse_event
1.写出窗口整体框架,用CreateWindowEx创建窗口并将窗口拓展风格设置为WS_EX_TOPMOST,始终将窗口放置于最上层。
2.窗口创建完毕后用RegisterHotkey注册热键,Ctrl+O表示锁定鼠标坐标,Ctrl+S表示连续点击开始,Ctrl+E表示点击结束.用消息WM_HOTKEY处理消息。
3.WM_CREATE创建所有要用到的子窗口控件。
4.设置WM_TIMER消息,用于监控鼠标坐标,使用GetCursorPos获取.
5.各项信息填写完毕后,设置WM_TIMER消息中使用mouse_event实现鼠标点击。
6.按下Ctrl+E后,用KillTimer结束计时器。