显示鼠标单击控件次数

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE hInst;

/* The ‘main‘ function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain(
    HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nCmdShow)
{
 
    static TCHAR szClassName[] = TEXT("HelloWin"); /*窗口类名*/
    HWND hwnd;  /*窗口句柄*/
    MSG msg;    /*消息*/
    WNDCLASS wndclass;   /*窗口类*/ 
    
    hInst = hInstance;
    
    /***********第一步:注册窗口类*************/
    /*为窗口类各个字段赋值*/
    wndclass.style = CS_HREDRAW | CS_VREDRAW;  /*窗口风格*/
    wndclass.lpfnWndProc  = WndProc; /*窗口过程*/
    wndclass.cbClsExtra   = 0;
    wndclass.cbWndExtra   = 0;
    wndclass.hInstance    = hInstance;  /*当前窗口句柄*/
    wndclass.hIcon        = LoadIcon(NULL, IDI_APPLICATION);  /*窗口图标*/
    wndclass.hCursor      = LoadCursor(NULL, IDC_ARROW);/*鼠标样式*/
    wndclass.hbrBackground= (HBRUSH)GetStockObject(WHITE_BRUSH);/*窗口背景画刷*/
    wndclass.lpszMenuName = NULL;  /*窗口菜单*/
    wndclass.lpszClassName= szClassName; /*窗口类名*/
    
    
    /*注册窗口*/
    RegisterClass(&wndclass);
    
    /*************第二步:创建窗口(并让窗口显示出来)***************/
    hwnd = CreateWindow(
        szClassName,  /*窗口名字*/
        TEXT("Welcome"), /*窗口标题*/
        WS_OVERLAPPEDWINDOW,  /*窗口风格*/
        CW_USEDEFAULT,  /*初始化x轴的位置*/
        CW_USEDEFAULT,  /*初始化y轴的位置*/
        640,  /*窗口宽度*/
        480,  /*窗口高度*/
        NULL, /*父窗口句柄*/
        NULL, /*窗口菜单句柄*/
        hInstance, /*当前窗口句柄*/
        NULL    /*不使用该值*/
        );
        
    if(hwnd == NULL)
    {
        MessageBox(NULL, "创建窗口出错!", "Error", MB_OK);
        return -1;
    }

        
    /*显示窗口*/
    ShowWindow(hwnd, nCmdShow);
    /*更新(绘制)窗口*/
    UpdateWindow(hwnd);
    
    
    /*************第三步:消息循环*************/
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);  /*翻译消息*/
        DispatchMessage(&msg);   /*分派消息*/
    }
    return msg.wParam; /*当GetMessage程序返回FALSE是程序结束*/
}

/*************第四步:窗口过程*****************/
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HDC hdc;
    PAINTSTRUCT ps;
    
    //必须设置为静态变量
    static int iClick = 0;  //鼠标单击次数
    static TCHAR szTextBuf[20]; //static 控件文本
    static HWND hStatic;  // static 控件句柄 
    
    switch(message)
    {
        case WM_CREATE:
        {
            hStatic = CreateWindow(
                "static", //静态文本框的类名
                "请用鼠标单击", //控件文本
                WS_CHILD /*子窗口*/| WS_VISIBLE /*创建时显示*/| WS_BORDER /*带边框*/| SS_CENTER /*水平居中*/| SS_CENTERIMAGE/*垂直居中*/,
                20 /*X坐标*/, 20 /*Y坐标*/, 200 /*宽度*/, 100 /*高的*/,
                hWnd, // 父窗口句柄
                (HMENU)1, //为控件指定唯一标示符
                hInst,  //当前程序实例句柄
                NULL          
            );
            break;
        }
        case WM_PAINT:
        {
            hdc = BeginPaint(hWnd, &ps);
            
            //Ellipse(hdc, 0, 100, 200, 200);
            
            EndPaint(hWnd, &ps);
            break;
        }
        
        //鼠标左键单击消息 
        case WM_LBUTTONDOWN:
        {
            iClick++;
            wsprintf(szTextBuf, TEXT("鼠标被单击%d次"), iClick);
            SetWindowText(hStatic, szTextBuf);
            break;    
        }
            
        /*窗口销毁消息*/
        case WM_DESTROY:
        {
            /*处理WM_DESTROY消息时删除之前我们创建的一切GDI对象*/
            
            PostQuitMessage(0);
            break;
        }
        default:
            {
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
    }
    return 0;
}
时间: 2024-08-24 16:12:37

显示鼠标单击控件次数的相关文章

c# asp.net 鼠标改变控件坐标位置,更改控件坐标,注册表保存读取,打印,查找局域网内打印机等等收集

界面虽然被我弄的很难看,但功能还可以 里边注册表的路径自己设置一下,或者加一个创建注册表的语句,不然会报错 前台: Html代码   <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="FPSZ.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

C#鼠标控制控件移动的示例

//鼠标点击控件按住不放,控件跟随移动.施放则不移动 //这里的控件可以更换为其他控件. using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Test { publ

[Android] 拍照、截图、保存并显示在ImageView控件中

最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买了本<Android第一行代码 著:郭霖>,参照里面的内容完成(推荐该书,前面的布局及应用非常不错).网上这类资料非常多,作者仅仅分享给初学者同时在线记录些内容,希望对大家有所帮助. 首先,设置activity_main.xml为LinearLayout布局且 android:orientation=&q

我写的一个 Qt 显示图片的控件

Qt 中没有专门显示图片的控件,通常我们会使用QLabel来显示图片.但是QLabel 显示图片的能力还是有点弱.比如不支持图像的缩放一类的功能,使用起来不是很方便.因此我就自己写了个简单的类. 我这个类支持三种图像显示模式,我分别称之为:FIXED_SIZE, CENTRED,AUTO_ZOOM, AUTO_SIZE. FIXED_SIZE 模式下,显示的图像大小等于图像尺寸乘以缩放因子,如果控件的尺寸小于这个大小则多出的部分被裁切掉. FIX_SIZE_CENTRED模式与FIXED_SIZ

Android中显示进度的控件

显示进度的控件-------------------------ProgressBar:进度条核心属性包括:1) style:表示进度条的显示样式2) android:max:表示进度条的最大刻度3) android:progress:表示进度条当前的进度控制显示进度的方法:void setProgress(int progress)如果进度条没有配置为水平的进度条,则会显示为圆形进度条,这种圆形进度条没有进度的概念,通常用于例如关机.更新系统等时间完全不确定的.亦可以不需要告之用户进度的应用场

C#设置鼠标在控件上面时,改变光标形状

//设置鼠标在控件上面时,改变光标形状 private void pictureBox_macroLogo_MouseHover(object sender, System.EventArgs e) { this.Cursor = Cursors.Hand; } private void pictureBox_macroLogo_MouseLeave(object sender, System.EventArgs e) { this.Cursor = Cursors.Default; }

android控件之TextView(显示文本框控件)和EditText(输入文本框控件)

一.TextView(显示文本框控件) 1.TextView控件的常用属性 android:id——控件的id   android:layout_width——控件的宽度  android:layout_height——控件的高度 android:text——文本内容 android:textSize——文本大小 android:textColor——文本颜色 android:background——控件背景 <TextView android:id="@+id/name" an

Android 自定义圆圈进度并显示百分比例控件(纯代码实现)

首先,感谢公司能给我闲暇的时间,来稳固我的技术,让我不断的去探索研究,在此不胜感激. 先不说实现功能,上图看看效果 这个是续上一次水平变色进度条的有一个全新的控件,理论实现原理 1.分析控件:该控件基本上是圆圈内嵌圆圈: 2.进度计算:其实是小学二年级数学题:当前进度/总数=百分比: 3.中间时间:呵呵,纯粹忽悠,不解释(当前时间). 理论总是和实践差距的太远,不扯淡,不吹嘘,贴代码: package com.spring.progressview; import java.text.Simpl

WPF,强制捕获鼠标事件,鼠标移出控件外依然可以执行强制捕获的鼠标事件

在WPF中,只有鼠标位置在某个控件上的时候才会触发该控件的鼠标事件.例如,有两个控件都注册了MouseDown和MouseUp事件,在控件1上按下鼠标,不要放开,移动到控件2上再放开.在这个过程中,控件1只会触发MouseDown事件,而控件2则只会触发MouseUp事件,鼠标不在控件上他们就收不到对应的鼠标事件.同样的如果某个控件注册了MouseMove事件,当鼠标移动到控件外之后,控件将不会接收到MouseMove事件.但是在很多情况下我们需要在鼠标移动到控件外之后还能接收鼠标事件.例如按住