windows 编程 之 问题解决笔记
问题目录:
- 1、如何隐藏和显示窗口
- 2、InvalidateRect在连续使用鼠标或光标时暂时不起作用
- 3、在VC项目里自己添加头文件和cpp文件在编译阶段报错
- 4、在static 控件里添加子控件或为SS_WHITETECT的话,如何重画背景区域
- 5、子窗口类别化时,新的消息处理函数的 消息WM_CREATE 不会被执行
1、如何隐藏和显示窗口
(首先程序框架参考 另一篇博文)
BOOL WINAPI SetWindowPos(
_In_ HWND hWnd,
_In_opt_ HWND hWndInsertAfter, //z轴的位置 如 HWND_TOPMOST
_In_ int X,
_In_ int Y,
_In_ int cx, // nwidth
_In_ int cy, // nHeight
_In_ UINT uFlags // 可以设置隐藏 和 显示窗口
);
BOOL WINAPI GetWindowRect(
_In_ HWND hWnd,
_Out_ LPRECT lpRect
);
若要使用SetWindowPos 来隐藏和显示 窗口于同一位置,可以结合使用 GetWindowRect 函数来实现:
GetWindowRect(hwnd3,&rect3);
SetWindowPos(hwnd3,HWND_TOPMOST,rect3.left,rect3.top,rect3.right-rect3.left,rect3.bottom-rect3.top,SWP_HIDEWINDOW);
SetWindowPos(hwnd3,HWND_TOPMOST,rect3.left,rect3.top,rect3.right-rect3.left,rect3.bottom-rect3.top,SWP_SHOWWINDOW);
显示和隐藏窗口 一个跟简单的函数是 ShowWindow
BOOL WINAPI ShowWindow(
_In_ HWND hWnd,
_In_ int nCmdShow
);
可通过如下代码简单实现:
ShowWindow(hwnd2,SW_HIDE);
ShowWindow(hwnd2,SW_SHOW);
2、InvalidateRect在连续使用鼠标或光标时暂时不起作用
由于WM_PAINT消息的优先等级比较低,所以,如果您还在使用鼠标或者光标键移动滚动条的话,这个消息将不会立即被处理。
指导书说可以:
可以在InvalidateRect之后增加下面的叙述:
UpdateWindow (hwnd) ;
但这会使得键盘和鼠标处理变慢。
另外一个解决办法是,在别的消息里来处理事务。
3、在VC项目里自己添加头文件和cppw文件在编译阶段报错
VC的编译器有时不是很灵活,比如 自己的头文件里有使用windows.h头文件声明到的类型,如果不在include "customize.h"前 include<windows.h>则会报错。
4、在static 控件里添加子控件或为SS_WHITETECT的话,如何重画背景区域
这两种情况,以下消息 :case WM_CTLCOLORSTATIC : 里的设置 如:
SetTextColor ((HDC) wParam, crPrim[i % 3]) ;
SetBkColor ((HDC) wParam, GetSysColor (COLOR_BTNHIGHLIGHT));
return (LRESULT) hBrushStatic ;
将不起作用,只能在窗口子类别化(Window Subclassing)后在WM_PAINT 中自行手动绘制来重画。
5、子窗口类别化时,新的消息处理函数的 消息WM_CREATE 不会被执行
因为是先createWindow()产生窗口句柄hwnd,再在SetWindowLong中通过指定新的处理函数的,所以在指定之后,如果需要执行新的消息处理函数的 WM_CREATE 里的内容,可以在子窗口类别化后,自己发送消息SendMessage(hwnd,WM_CREATE,0,0);即可执行。
windows 编程 之 问题解决笔记的更多相关文章
- windows 编程—— 使用函数笔记
目录: 创建滚动条 滚动条函数(新老版本) 取得设备内容句柄hdc 设置 hdc 中的属性 画点画线 画填充图形 使用自定义的 画笔 和 画刷 矩形.区域和剪裁 关于GDI映像模式 其他常用的方便计算 ...
- 《Windows核心编程》读书笔记 上
[C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对 ...
- Direct3D 10学习笔记(四)——Windows编程
本篇将简单整理基本的Windows应用程序的实现,并作为创建Direct3D 10应用程序的铺垫.具体内容参照< Introduction to 3D Game Programming with ...
- Python爬虫编程常见问题解决方法
Python爬虫编程常见问题解决方法: 1.通用的解决方案: [按住Ctrl键不送松],同时用鼠标点击[方法名],查看文档 2.TypeError: POST data should be bytes ...
- windows 编程—— 宽字符集 与 Unicode
目录: 从ASCII码 到 Unicode Windows 编程中的 "字符” 定义 (如何在windows下进行通用编码) 常用的通用函数,定义 (本文为学习<Programming ...
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- Windows phone 8 学习笔记(8) 定位地图导航
原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...
- Windows phone 8 学习笔记(9) 集成
原文:Windows phone 8 学习笔记(9) 集成 本节整理了之前并没有提到的Windows phone 8 系统相关集成支持,包括选择器.锁定屏幕的.联系人的访问等.选择器列举了若干内置应用 ...
- Windows phone 8 学习笔记(1) 触控输入
原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...
随机推荐
- ZOJ1463
题意:给一个括号字符串,求解最少添加的字符能使整个字符串匹配. 输入: s(未匹配的字符串) 输出: S(匹配后的字符串) 思路:绝壁超级坑的一道题,格式我不想说什么了,特坑,然后就是对给定的字符串, ...
- 关于开发C#中的asp.net中gridview控件的使用
原文网址:http://blog.sina.com.cn/s/blog_67f1b4b201017663.html 1.GridView无代码分页排序: 效果图: 1.AllowSorting设为Tr ...
- xmlns:android="http://schemas.android.com/apk/res/android" 是什么意思?
声明xml命名空间.xmlns意思为“xml namespace”.冒号后面是给这个引用起的别名.schemas是xml文档的两种约束文件其中的一种,规定了xml中有哪些元素(标签).元素有哪些属性及 ...
- jquery 的缺点
接口不统一 其中.each();.map();$.each();这些方法的参数函数的参数顺序是index, value这种顺序.但是$.map();方法的参数函数的参数顺序则是value,index这 ...
- 安装php时,make test报错
Build complete. Don't forget to run 'make test'. [root@localhost php-5.4.5]# make test ERROR: Cannot ...
- 05_Smart-image通过SoftReference提高性能
文章导读: 文件介绍了常见的图片下载开源插件smart-image, 由于移动设备硬件受限,因此Android的相关app都要考虑到性能的关系, 所以很多的第三方插件都使用到了缓存cache技术,本人 ...
- 2.常用快捷键.md
[toc] 1.mian函数补全 在IntelJ中和Eclipse中稍有不同,在Eclipse中,输入main再按Alt+/即可自动补全main函数,但是在IntellJ中则是输入psvm,选中即可 ...
- 重拾C++ 基础知识总结(二)
1.标准库string类型: 用户程序要使用string类型对象,必须包含相关头文件 #include <string> 字符串字面值与标准库string类型不是同一种类型,字符串字面值是 ...
- 『重构--改善既有代码的设计』读书笔记----Introduce Explaning Variable
有时候你会遇到一系列复杂的表达式连续运算的时候,这个时候你可能根本招架不住如此长或者是如此复杂的长函数.这个时候你可以通过引用临时变量来储存他们的结果,将这些长函数的结果分成一个个临时变量来让函数清晰 ...
- Linux(Debian)上安装Redis教程
-- 第一步下载文件到该目录 cd /usr/local/src wget http:.tar.gz 解压 tar xzf redis.tar.gz -- 第二步编译安装 make make all ...