当前位置:  编程技术>其它
本页文章导读:
    ▪dynamic_cast 不破坏 const 函数      在const 函数中对数据成员使用dynamic_cast 可行。原因:    dynamic_cast 是运行时, const 检查 是编译时不同阶段互不影响星哥 2013-01-08 20:37 发表评论......
    ▪linux下的汇编:ATT和Intel格式           摘要: Intel格式和ATT格式不同之处,gcc常用的有关汇编的基本操作  阅读全文Benjamin 2013-01-08 22:22 发表评论......
    ▪MFC实现窗口可拖动      有两种应用场景:   1、在除了标题栏以外,点击窗口的其它部分可以拖动窗口。   2、没有标题栏的弹出窗口,点击部分区域或者全部区域,拖动窗口。实现方法: &.........

[1]dynamic_cast 不破坏 const 函数
    来源:    发布时间: 2013-11-15
在const 函数中对数据成员使用dynamic_cast 可行。原因:
    dynamic_cast 是运行时, const 检查 是编译时
不同阶段互不影响

星哥 2013-01-08 20:37 发表评论

    
[2]linux下的汇编:ATT和Intel格式
    来源:    发布时间: 2013-11-15
     摘要: Intel格式和ATT格式不同之处,gcc常用的有关汇编的基本操作  阅读全文

Benjamin 2013-01-08 22:22 发表评论

    
[3]MFC实现窗口可拖动
    来源:    发布时间: 2013-11-15
有两种应用场景:
   1、在除了标题栏以外,点击窗口的其它部分可以拖动窗口。
   2、没有标题栏的弹出窗口,点击部分区域或者全部区域,拖动窗口。

实现方法:
   1、响应鼠标按下消息,然后在鼠标移动时移动窗口。对于程序基础好的程序员,可以按这个思维很快实现,对于初学者,可能就要多调试一会儿了。这种方法实现要用到setcapture相关函数。而且窗口拖过以后会有残影,效果不是很理想.(有可能有改进方法,我没找到...)
   2、给MFC发送非客户区点击消息:WM_NCLBUTTONDOWN

   仔细了解一下MFC的实现,就能找到更简单的方法。
MFC把窗口分成两个部分,一部分是Client区,也叫客户区,就是我们可以在上面画画、放置子窗口等地方的区域,程序员负责这个区域的操作;另一部分叫NC区,也就是Not Client区,称为非客户区,标题栏、边框、窗口菜单等都属于非客户区。在非客户区的操作都由MFC负责。而MFC并没有独揽窗口非客户区的操作大权,程序员可以使用虚函数、窗口消息等方式影响非客户区的操作。
当鼠标在非客户区按下的时候,MFC通过发送WM_NCHITTEST消息来确定位置,并依据WM_NCHITTEST消息的响应函数返回的位置信息确定应该执行的操作。在标题栏上按下鼠标将执行拖动窗口操作。
现在我们有了另一个实现拖动窗口的方法了:响应WM_NCHITTEST消息,无论鼠标在什么位置,都返回HTCAPTION(标题栏),骗过MFC,让它来实现窗口拖动。
如果IDE好使的话,可以使用增加消息响应向导简化编程。也可以按以下方法手动添加WM_NCHITTEST的响应函数。
1)在窗口类定义中添加响应函数的声明:
afx_msg UINT OnNcHitTest(CPoint point);
2)在消息响应入口表中登记响应入口,也就是在EGIN_MESSAGE_MAP和END_MESSAGE_MAP之间增加以下内容:
ON_WM_NCHITTEST()
3)实现OnNcHitTest的函数体,假设类名为CXxx:
UINT CXxx::OnNcHitTest(CPoint point)
{
           return HTCAPTION;
}
经过这三步,窗口应该可以拖动了,实在是有点太容易。
喜欢研究问题的朋友一定会在HTCAPTION上按一下F12,也就是去看一下HTCAPTION的定义。如果您这样做了,您一定会看到在HTCAPTION旁边还定义着很多其它的东西,向下面这样:
/*
* WM_NCHITTEST and MOUSEHOOKSTRUCT Mouse Position Codes
*/
#define HTERROR             (-2)
#define HTTRANSPARENT       (-1)
#define HTNOWHERE           0
#define HTCLIENT            1
#define HTCAPTION           2 // 我们返回的那个(苏林注)
#define HTSYSMENU           3
#define HTGROWBOX           4
#define HTSIZE              HTGROWBOX
。。。

如果您的响应函数中,在适当地方返回这些值,可以得到很多其它效果,如最大化、改变大小、启动帮助、关闭窗口等。

也可以直接发消息:
void   CTestDlg::OnLButtonDown(UINT   nFlags,   CPoint   point)  
{
        CDialog::OnLButtonDown(nFlags,   point);
        PostMessage   (WM_NCLBUTTONDOWN   ,   HTCAPTION   ,   MAKELPARAM(point.x,   point.   y));
}

 




张三.o0 2013-01-09 09:55 发表评论

    
最新技术文章:
▪修改月光博客网站中PHP常用正则表达式中出现...
▪js正则判断非法字符限制输入
▪通过正则表达式删除空行的方法
▪一个好用的正则匹配电话号手机号邮箱网址的...
▪JS 正则表达式用法介绍
▪几个小例子教你如何实现正则表达式highlight高...
▪如何实现正则表达式的JavaScript的代码高亮
▪js 玩转正则表达式之语法高亮
▪PHP中过滤常用标签的正则表达式
▪js 正则表达式学习笔记之匹配字符串
▪使用正则表达式匹配[***]样式的字符串
▪史上最详细的js日期正则表达式分享
▪php+正则将字符串中的字母数字和中文分割
▪正则表达式不区分大小写以及解决思路的探索...
▪正则替换换行符和把 br 替换成换行符
▪正则表达式匹配不包含某些字符串的技巧
▪匹配form表单中所有内容的正则表达式
▪正则表达式(括号)、[中括号]、{大括号}的区别...
▪正则表达式中的"g"是什么意思附件参数g的用...
▪浅谈正则表达式(Regular Expression)
▪Python正则表达式的七个使用范例详解
▪正则表达式提取img的src
▪常用的正则表达式集锦
▪使用正则表达式找出不包含特定字符串的条目...
▪js正则表达式中的问号几种用法小结
▪正则表达式概述 什么是正则表达式 .
▪ajax对注册名进行验证检测是否存在于数据库...
▪js正则解析URL参数示例代码
▪JS使用正则去除字符串最后的逗号
▪几种常见攻击的正则表达式
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3