16,213
社区成员
发帖
与我相关
我的任务
分享
extern "C" LRESULT CALLBACK MouseProc(int code,WPARAM wParam,LPARAM lParam)
//钩子处理函数
{
if (code 〈 0)
//若code〈0,则直接调用CallNextHookEx返回
return CallNextHookEx(hhook, code, wParam, lParam);
if(wParam= =WM_LBUTTONDOWN)
{MouseClick++;
//记录鼠标单击次数
}
return CallNextHookEx(hhook, code, wParam,lParam);
}
MyRubberBand.h
#ifndef MYRUBBERBAND_H
#define MYRUBBERBAND_H
#include <QWidget>
#include <QImage>
class MyRubberBand : public QWidget
{
Q_OBJECT
public:
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
QImage m_image;
};
#endif // MYRUBBERBAND_H
MyRubberBand.cpp
#include "myrubberband.h"
#include <QDesktopWidget>
#include <QRect>
#include <QApplication>
#include <QDebug>
#include <QPainter>
#include <QPaintEvent>
MyRubberBand::MyRubberBand(QWidget *parent) :
QWidget(0, Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint)
{
setFocusPolicy(Qt::NoFocus);
setAttribute(Qt::WA_TranslucentBackground, true);
this->setMouseTracking(true);
QRect desktopRect = QApplication::desktop()->availableGeometry();
setFixedSize(desktopRect.width(), desktopRect.height()); // 固定窗体大小
move(desktopRect.topLeft());
}
void MyRubberBand::mousePressEvent(QMouseEvent *event)
{
qDebug()<<"mousePressEvent";
}
void MyRubberBand::mouseReleaseEvent(QMouseEvent *event)
{
qDebug()<<"mouseReleaseEvent";
}
void MyRubberBand::mouseMoveEvent(QMouseEvent *event)
{
qDebug()<<"mouseMoveEvent";
}
void MyRubberBand::paintEvent(QPaintEvent *event)
{
qDebug()<< "MyRubberBand paintEvent:"<<m_image.width()<<" "<<m_image.height();
QPainter p(this);
p.setRenderHint(QPainter::Antialiasing);
QRect dirty = event->rect();
p.drawImage(dirty, m_image, dirty);
}
void MyRubberBand::resizeEvent(QResizeEvent *event)
{
int newWidth = width(); //qMax(width(), m_image.width());
int newHeight = height(); //qMax(height(), m_image.height());
qDebug("MyRubberBand Width = %d Height = %d", newWidth, newHeight);
QSize newSize(newWidth, newHeight);
QImage newImage(newSize, QImage::Format_ARGB32);
// 填充透明色
newImage.fill(QColor(255, 255, 255, 0).rgba());
m_image = newImage;
update();
// QWidget::resizeEvent(event);
}
main.cpp
#include <QtGui/QApplication>
#include "mainwindow.h"
#include "myrubberband.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyRubberBand myband;
myband.show();
return a.exec();
}
FullScreenWidget::FullScreenWidget(QWidget *parent) :
QWidget(0, Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint)
{
setFocusPolicy(Qt::NoFocus);
setAttribute(Qt::WA_TranslucentBackground, true);
this->setMouseTracking(true);
QRect desktopRect = QApplication::desktop()->availableGeometry();
setFixedSize(desktopRect.width(), desktopRect.height()); // 固定窗体大小
move(desktopRect.topLeft());
}
void FullScreenWidget::mousePressEvent(QMouseEvent *event)
{
qDebug()<<"mousePressEvent";
}
void FullScreenWidget::mouseReleaseEvent(QMouseEvent *event)
{
qDebug()<<"mouseReleaseEvent";
}
void FullScreenWidget::mouseMoveEvent(QMouseEvent *event)
{
qDebug()<<"mouseMoveEvent";
}
#include <QMouseEvent>
setMouseTracking(true);