问题目录:

  • 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 编程 之 问题解决笔记的更多相关文章

  1. windows 编程—— 使用函数笔记

    目录: 创建滚动条 滚动条函数(新老版本) 取得设备内容句柄hdc 设置 hdc 中的属性 画点画线 画填充图形 使用自定义的 画笔 和 画刷 矩形.区域和剪裁 关于GDI映像模式 其他常用的方便计算 ...

  2. 《Windows核心编程》读书笔记 上

    [C++]<Windows核心编程>读书笔记 这篇笔记是我在读<Windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对 ...

  3. Direct3D 10学习笔记(四)——Windows编程

    本篇将简单整理基本的Windows应用程序的实现,并作为创建Direct3D 10应用程序的铺垫.具体内容参照< Introduction to 3D Game Programming with ...

  4. Python爬虫编程常见问题解决方法

    Python爬虫编程常见问题解决方法: 1.通用的解决方案: [按住Ctrl键不送松],同时用鼠标点击[方法名],查看文档 2.TypeError: POST data should be bytes ...

  5. windows 编程—— 宽字符集 与 Unicode

    目录: 从ASCII码 到 Unicode Windows 编程中的 "字符” 定义 (如何在windows下进行通用编码) 常用的通用函数,定义 (本文为学习<Programming ...

  6. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  7. Windows phone 8 学习笔记(8) 定位地图导航

    原文:Windows phone 8 学习笔记(8) 定位地图导航 Windows phone 8 已经不使用自家的bing地图,新地图控件可以指定制图模式.视图等.bing地图的定位误差比较大,在模 ...

  8. Windows phone 8 学习笔记(9) 集成

    原文:Windows phone 8 学习笔记(9) 集成 本节整理了之前并没有提到的Windows phone 8 系统相关集成支持,包括选择器.锁定屏幕的.联系人的访问等.选择器列举了若干内置应用 ...

  9. Windows phone 8 学习笔记(1) 触控输入

    原文:Windows phone 8 学习笔记(1) 触控输入 Windows phone 8 的应用 与一般的Pc应用在输入方式上最大的不同就是:Windows phone 8主要依靠触控操作.因此 ...

随机推荐

  1. js 终止页面加载

    var xmlhttp = new XMLHttpRequest(); xmlhttp.abort(); window.stop();

  2. lucene建立索引的过程

    建立索引过程 用户提交数据=>solr建立索引=>调用lucene包建立索引 官方建立索引和查询索引的例子如下: http://lucene.apache.org/core/4_10_3/ ...

  3. Linux命令--用户用户组管理

    新增用户组 : groupadd groupadd [-g GID] 组名 不加-g 则按照系统默认的gid创建组,跟用户一样,gid也是从500开始的 修改用户组信息 : groupmod grou ...

  4. 【USACO 1.5.1】数字金字塔

    [题目描述] 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下方的点. 7 3 8 8 1 0 2 7 4 4 4 ...

  5. ls命令解析

    ls 列出目录的内容.它可是我们所经常使用的命令,那么你了解它所有的功能吗?下面让我们来看看吧! 命令格式 ls [OPTION]... [FILE]... 参数说明 -a , --all 显示所有文 ...

  6. Nginx配置文件nginx.conf详细说明

    Nginx配置文件nginx.conf详细说明 #worker_processes 8; #worker_cpu_affinity 00000001 00000010 00000100 0000100 ...

  7. Django - staticfiles,STATIC_ROOT, STATIC_URL,STATICFILES_DIRS

    staticfiles:这是一个静态资源管理的app,django.contrib.staticfiles.老的版本中,静态资源管理一直是一个问题,部分app发布的时候需要带上静态资源,在部署的时候必 ...

  8. C++学习笔记2——引用

    1. int ival = 1; int &refVal = ival; //引用必须初始化,且类型严格匹配 2. int ival = 1; int &refVal = ival; ...

  9. 一起学习iOS开发专用词汇,每天记3个,助你变大牛-b

    大家做开发最大的问题是什么?英语的问题应该困扰很多的同学的地方,我们提倡科学学习开发中的常用词汇.我们不要求大家有特别好的听.说.写,只要能够记住,能够认识这些常用词汇你以后的开发也将游刃有余.我们的 ...

  10. No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.SqlClient'

    运行代码是出现了这个错误,No Entity Framework provider found for the ADO.NET provider with invariant name 'System ...