拦截鼠标以及拦截的解决方案
来源:互联网 发布:mac视频剪辑工具 编辑:程序博客网 时间:2024/06/02 14:39
/*
时间:2012.07.16
功能:用鼠标画图
目的:拦截鼠标以及拦截的解决方案
*/
#define _WIN32_WINNT 0x0400 //鼠标滚轮的操作所必须的宏定义!
#include <windows.h>
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
WNDCLASS wndcls;
MSG msg;
HWND hwnd;
TCHAR szClassName[] = TEXT("Myclass");
wndcls.style = CS_VREDRAW | CS_HREDRAW | CS_DBLCLKS;
wndcls.lpfnWndProc = WindowProc;
wndcls.cbClsExtra = 0;
wndcls. cbWndExtra = 0;
wndcls. hInstance = hInstance;
wndcls. hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndcls.hCursor = LoadCursor(NULL,IDC_ARROW);
wndcls. hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
wndcls.lpszMenuName =NULL;
wndcls.lpszClassName = szClassName;
RegisterClass(&wndcls);
hwnd = CreateWindow(szClassName,"window",WS_OVERLAPPEDWINDOW ,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
HDC hdc;
PAINTSTRUCT pt;
static POINT ptend,ptBeg;
static BOOL IsPaint = FALSE;
switch(uMsg)
{
case WM_LBUTTONDOWN:
{
IsPaint = TRUE;
if(IsPaint)
{
SetCursor(LoadCursor(NULL,IDC_CROSS));
ptend.x = ptBeg.x = LOWORD(lParam);
ptend.y = ptBeg.y = HIWORD(lParam);
SetCapture(hwnd);
InvalidateRect(hwnd,NULL,TRUE);
}
return 0;
}
case WM_MOUSEMOVE:
{
SetCursor(LoadCursor(NULL,IDC_CROSS));
if(IsPaint)
{
ptend.x = LOWORD(lParam);
ptend.y = HIWORD(lParam);
InvalidateRect(hwnd,NULL,TRUE);
}
return 0;
}
case WM_LBUTTONUP:
{
SetCursor(LoadCursor(NULL,IDC_ARROW));
if(IsPaint)
{
ptend.x = LOWORD(lParam);
ptend.y = HIWORD(lParam);
InvalidateRect(hwnd,NULL,TRUE);
IsPaint = FALSE;
}
ReleaseCapture();
return 0;
}
case WM_PAINT:
{
hdc = BeginPaint(hwnd,&pt);
SelectObject(hdc,GetStockObject(BLACK_BRUSH));
Rectangle(hdc,ptBeg.x,ptBeg.y,ptend.x,ptend.y);
EndPaint(hwnd,&pt);
return 0;
}
case WM_CLOSE:
{
PostQuitMessage(0);
return 0;
}
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
/*
处理WM_LBUTTONUP消息时 窗口上的IDC_CORSS 无法恢复原状。
在程序中加入了 SetCapture 和 ReleaseCapture 两个函数进行鼠标拦截
*/
- 拦截鼠标以及拦截的解决方案
- 短信拦截的解决方案 经典
- android 短信拦截的解决方案
- 短信拦截的解决方案 经典
- Shiro拦截AJAX的解决方案
- android 拦截鼠标按键
- struts拦截器配置,以及全局的拦截器配置
- spring boot 拦截器的实现以及遇到的问题的解决方案
- Objective-C中扩展方法、属性和数据成员的解决方案以及方法拦截
- SpringMVC 无法使用aop拦截的解决方案
- window.open被浏览器拦截的解决方案
- Servlet拦截静态图片的解决方案
- Spring MVC 拦截静态资源的解决方案
- SpringMVC拦截静态资源的解决方案
- 腾讯拦截网站解决方案
- 拦截
- 拦截
- OKHTTP的拦截器以及https访问
- ubuntu11.10安装matlib
- 28款jQuery Tree 树形结构插件
- C R E AT E S U S P E N D E D标志使得应用程序能够在它有机会执行任何代码之前修改线程的某 些属性
- HDOJ 1864 最大报销额
- 对Remoting进行封装,方便使用
- 拦截鼠标以及拦截的解决方案
- 低落
- hdu 4301 Divide Chocolate 动态规划 递推 多校联合赛第二题
- C r e a t e T h r e a d的最后一个参数是p d w T h r e a d I D,可以(并且通常是这样做的)为该参 数传递N U L L。它告诉函数,你对线程的I D不感兴趣
- Ubuntu 12.04 LTS 下 OpenGL环境的搭建
- 使用Pix For Windows调试Shader傻瓜教程
- 决不应该调用E x i t T h r e a d。应该使用Visual C++运行期库函数_ e n d t h r e a d e x
- Te r m i n a t e T h r e a d函数是异步运行的函数,必须调用Wa i t F o r S i n g l e O b j e c t
- 使用返回或调用E x i t T h r e a d的方法撤消线程时,该线程的内存堆栈也被撤消