热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言客户区坐标,C语言,Win32SDK下捕捉光标进出客户区(WM_MOUSELEAVE和WM_MOUSEHOVER用法)...

#include#include必须导入此头文件#pragmacomment(lib,comctl32.lib)LRESULTCALLBACKWndProc(HWNDhwnd,

#include

#include          //必须导入此头文件

#pragma comment(lib, "comctl32.lib")

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)

{

static TCHAR szAppName[] = TEXT ("UIDesign");

HWND         hwnd;

MSG          msg;

WNDCLASSEX   wndclassex = {0};

wndclassex.cbSize        = sizeof(WNDCLASSEX);

wndclassex.style         = CS_HREDRAW | CS_VREDRAW;

wndclassex.lpfnWndProc   = WndProc;

wndclassex.cbClsExtra    = 0;

wndclassex.cbWndExtra    = 0;

wndclassex.hInstance     = hInstance;

wndclassex.hIcon         = LoadIcon (NULL, IDI_APPLICATION);

wndclassex.hCursor       = LoadCursor (NULL, IDC_ARROW);

wndclassex.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH);

wndclassex.lpszMenuName  = NULL;

wndclassex.lpszClassName = szAppName;

wndclassex.hIconSm       = wndclassex.hIcon;

if (!RegisterClassEx (&wndclassex))

{

MessageBox (NULL, TEXT ("RegisterClassEx failed!"), szAppName, MB_ICONERROR);

return 0;

}

hwnd = CreateWindowEx (WS_EX_OVERLAPPEDWINDOW,

szAppName,

TEXT ("UIDesign_test"),

WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT,

CW_USEDEFAULT,

500,

500,

NULL,

NULL,

hInstance,

NULL);

ShowWindow (hwnd, iCmdShow);

UpdateWindow (hwnd);

while (GetMessage (&msg, NULL, 0, 0))

{

TranslateMessage (&msg);

DispatchMessage (&msg);

}

return msg.wParam;

}

LRESULT CALLBACK WndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam)

{

HDC hdc;

static TRACKMOUSEEVENT trmouse;

static int isIn = 0, isOut = 1;

switch(uMsg)

{

case WM_MOUSELEAVE:

hdc = GetDC (hWnd) ;

TextOut(hdc, 10, 10, "run_out", strlen("run_out"));

ReleaseDC (hWnd, hdc) ;

isIn=0;

isOut = 1;

break;

case WM_MOUSEHOVER:

if (isOut != 0)

{

hdc = GetDC (hWnd) ;

TextOut(hdc, 10, 10, "run__in", strlen("run__in"));

ReleaseDC (hWnd, hdc) ;

isIn = 0;

isOut = 0;

}

break;

case WM_MOUSEMOVE:          //因为 TRACKMOUSEEVENT 只发送一次消息,且随着其它消息产生而失效,所以在此消息中调用函数。

if (isIn == 0)

{

trmouse.cbSize = sizeof(TRACKMOUSEEVENT);

trmouse.dwFlags = TME_LEAVE | TME_HOVER;

trmouse.dwHoverTime = 10;

trmouse.hwndTrack = hWnd;

if(!_TrackMouseEvent(&trmouse))

return FALSE;

isIn++;

}

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd,uMsg,wParam,lParam);

break;

}

return 0;

}

我就只是发代码了,我说一下自己的个人想法,在研究这两个消息的时候,最好不要用MessageBox来检验是否成功,而去用TextOut()这个函数为好...至于原因,在这里不详说了,有问题留言.

这里的,可不是MFC的哈!!

如果是MFC中的问题,暂时我没办法回答!!谢谢



推荐阅读
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • 我有一个从C项目编译的.o文件,该文件引用了名为init_static_pool ... [详细]
  • 数据结构第三章,栈、队列、数组,期末不挂科指南,第3篇
    数据结构第三章,栈、队列、数组,期末不挂科指南,第3篇,Go语言社区,Golang程序员人脉社 ... [详细]
  • 【妙】bug称它为数组越界的妙用
    1、聊一聊首先跟大家推荐一首非常温柔的歌曲,跑步的常听。本文主要把自己对C语言中柔性数组、零数组等等的理解分享给大家,并聊聊如何构建一种统一化的学习思想 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 你的问题在于:1. 代码格式混乱,缺乏必要的缩进,导致可读性极低;2. 使用 `strlen()` 和 `malloc()` 函数时,必须包含相应的头文件;3. `write()` 函数的返回值处理不当,建议检查并处理其返回值以确保程序的健壮性。此外,建议在编写代码时遵循良好的编程规范,增加代码的可维护性和可读性。 ... [详细]
  • 在C语言中,定义在所有函数外部的变量称为全局变量,而定义在函数内部或大括号内的变量称为局部变量。全局变量在整个程序中都可访问,而局部变量仅在其所在的作用域内有效。如果全局变量和局部变量名称相同,在局部作用域内会优先使用局部变量。 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • T15483.【清华集训2017模拟11.26】简单路径T25484.【清华集训2017模拟11.26】快乐树T35485.【清华集训2017模拟11.26】字符串T1结论题,结论很 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
author-avatar
看电影天堂4
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有