文档章节

显示鼠标单击控件次数

努力喵
 努力喵
发布于 2015/11/08 02:33
字数 545
阅读 129
收藏 3
#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;
}


© 著作权归作者所有

努力喵
粉丝 5
博文 105
码字总数 34117
作品 0
广州
私信 提问
谷歌发布Chrome OS 76版 重新设计相机应用程序

谷歌目前正在为大多数运行Chrome操作系统的设备推出Chrome OS 76稳定版。此更新可通过无线方式获得,并应在未来几天内到达所有受支持的设备。 Chrome OS 76的主要新功能之一是它默认在Chrom...

稿源:
08/13
0
0
Ext Scheduler资源甘特图

Ext Scheduler Web资源甘特图控件 资源甘特图又叫负荷图,其纵轴不再列出活动,而是列出整个部门或特定的资源。 Ext Scheduler资源甘特图是基于Extjs核心库的开发的,基于WEB浏览器的甘特图解...

fanganw
2012/02/29
594
0
WinForm -- 为TextBox文本框添加鼠标右键菜单

WinForm -- 为TextBox文本框添加鼠标右键菜单 1. 新建一个WinForm项目,放置一个TextBox控件 2. 从工具箱拖进来一个ContextMenuStrip 3. 将TextBox控件的ContextMenuStrip属性设置为 --> 拖进...

在代码的世界里游走
02/26
0
0
Ext Scheduler Web资源甘特图控件

Ext Scheduler Web资源甘特图控件 资源甘特图又叫负荷图,其纵轴不再列出活动,而是列出整个部门或特定的资源。 Ext Scheduler资源甘特图是基于Extjs核心库的开发的,基于WEB浏览器的甘特图解...

zkjava
2011/09/09
1K
0
在Word2007和Word2010中插入视频文件,并自动在word中播放

Word2007和Word2010插入视频文件的步骤差不多,在这里,我们放在一起为大家介绍。 1、选择“文件”菜单下的“选项”,在弹出的窗口中选择“自定义新功能区”,单击“开发工具”,之后“确定”...

zphj1987
2012/09/11
780
0

没有更多内容

加载失败,请刷新页面

加载更多

新建作业20191011121223

2.编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound,Sally shouted,"By the Great Pumpkin,what was that!" #include<stdio.h>int main(){printf("\a");......

电子197朱妍
19分钟前
2
0
家庭作业——苗钰婷

2 编写一个程序,发出一声警报,然后打印下面的文本: Startled by the sudden sound, Sally shouted, "By the Great Pumpkin, what was that! #include<stdio.h>int main(){......

OSC_Okruuv
39分钟前
6
0
经典系统设计面试题解析:如何设计TinyURL(一)

原文链接: https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
40分钟前
5
0
2.面向对象设计原则(7条)

开闭原则 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。 实现方法 可以通过“抽象约束、封装变化”来实...

Eappo_Geng
43分钟前
8
0
8086汇编基础 debug P命令 一步完成loop循环

    IDE : Masm for Windows 集成实验环境 2015     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   ......

志成就
47分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部