Windows编程的方方面面

(一)控件

  • 滚动条

 

SCROLLINFO结构中的nPage和nPos是有范围限制的,超出范围设置时,Windows会自动纠正。

0<=nPage<=nMax-nMin+1

0<=nPos<=nMax-(nPage-1)

 

所以不要总以为自己设置了页面大小,设置了滚动条位置,滚动条的页面和位置就一定会如你所设置。

 

  • 编辑框

在使用Edit_SetSel的时候,一定要将焦点定格在Edit上,否则选择效果不显示。

 

 

 

 (二)编程技巧

  • 窗口子类

对于改变控件一些常规行为用窗口的子类的方式是非常好的。例如用鼠标点击某个按钮时,将某个编辑框全选,不要以为在WM_COMMAND里面对应的按钮消息里面添加就可以了。可以试一下是不行的?关键在于鼠标点击,在鼠标左键松开的时刻,先发送WM_COMMAND消息,后发送WM_SETFOCUS给按钮,因为要让编辑框全选必须让编辑框得到焦点,但是在WM_COMMAND把焦点给编辑框只是暂时的,紧接着按钮本身的WM_LBUTTONUP会把焦点设置到自己身上,所以编辑框的获得焦点只是一瞬间。为了解决这个问题,就是给按钮使用窗口子类的方法。在WM_LBUTTONUP中先调用CallWindowProc,然后在把焦点转给编辑框。

时间: 2024-08-23 15:49:13

Windows编程的方方面面的相关文章

基于.NET平台的Windows编程实战(二) 需求分析与数据库设计

大家都知道一个系统的成败与否关键在于其所做的需求分析是否到位,数据库的设计是否合理.因为本系列文章的目的是在于提高大家对.NET Windows编程的实战能力,故不对需求分析与数据库设计作太多的理论说明,有关这方面的知识请大家自行查阅相关资料,在这里这是简单的罗列一下整个案例系统的功能需求及数据库的设计. 一.需求分析 看过本系列课程前言中案例背景的,应该能大致知道本案例的需求了,我在这里简单的罗列一下吧: 1.系统应该为单机版可安装的软件: 2.系统统计出的数据可随时进行合并,导出-- 3.系

windows编程 在一个窗口上加载一个位图图片

问题描述 windows编程 在一个窗口上加载一个位图图片 希望前辈们能给个demo程序.或者最基本的窗口上加载一个位图图片就好,加载位图时用的LoadImage 初学windows编程,不太懂上下文设备,希望大神能给个例程,让我学习. 解决方案 c++windows编程加载图片 解决方案二: #include #include "resource.h" LRESULT CALLBACK WndProc1(HWND hwnd,UINT message,WPARAM wParam,LPA

windows编程怎样屏蔽任务管理器

问题描述 windows编程怎样屏蔽任务管理器 windows编程怎样屏蔽Ctrl+alt+delete?有个函数只对XP有效,有没有对win7有效的? 解决方案 底层键盘钩子hook 解决方案二: 参考How to Disable/Enable Task Manager 虽然是英文的,但是都是截图,按照操作,应该没有问题. 除了Ctrl+Alt+Delete外,Ctrl+Shift+Esc也可以打开任务管理器的,不知道上面的方法是否也会屏蔽这样的操作,你设好之后可以测试一下. 解决方案三: 用

windows编程中为滚动条写了按键的代码,但是按了相应的键不起作用。

问题描述 windows编程中为滚动条写了按键的代码,但是按了相应的键不起作用. 代码如下: case WM_KEYDOWN: switch (message) { case VK_HOME: SendMessage(hwnd, SB_VERT, SB_TOP, 0L); case VK_END: SendMessage(hwnd, SB_VERT, SB_BOTTOM, 0L); break; case VK_PRIOR: SendMessage(hwnd, SB_VERT, SB_PAGEU

windows编程-windows的API中有没有能够更改文件名字的函数?菜鸟求助!!!

问题描述 windows的API中有没有能够更改文件名字的函数?菜鸟求助!!! 有的话请高手说明一下用法.没有的话请高手介绍一下在windows编程中(我用的是c++)怎样实现更改一个文件的名字?谢谢了 解决方案 int rename ( const char * oldname, const char * newname ); 解决方案二: 使用脚本类东西很方便的, 解决方案三: 你可以在windowsAPI函数的外面套一层函数,比如 int 信息框( HWND hWnd,LPCTSTR lp

c++-VC++与VC#的windows编程有区别吗??使用的类库一样吗??

问题描述 VC++与VC#的windows编程有区别吗??使用的类库一样吗?? VC++与VC#的windows编程有区别吗??使用的类库一样吗?? 比如这个里面的一些框架函数如Button等的使用相同吗? 解决方案 微软为C++做了一些扩展,搞出一种向下兼容C++,但是又有自己的语法以兼容.net的语言,叫C++/CLI(以前叫C++ ME,托管扩展) VC++/CLI可以同时支持MFC和.NET.但是事实上几乎没有人用,是很冷僻的技术. 相比较MFC,WinForms和WPF要好太多,C#也

设备上下文-请问各位大神,Windows编程里边的DC(device context)到底是什么啊?

问题描述 请问各位大神,Windows编程里边的DC(device context)到底是什么啊? 请教各位大神,设备上下文(device context)到底是个什么东西?它仅仅是一个抽象概念还是一个实体概念(即有对应的代码)?它是一个结构体吗?如果它有对应的源码的话,怎么能找到?在下在网上找了很多资料,包括MSDN上的,但越看越糊涂.在下想了解关于它最本质的东西,在下怎么才能"看到它"?这个问题给在下带来很大困惑,希望大家为在下指点迷津,拜托大家了!在下先行谢过! 解决方案 DC实

windows编程怎样让消息盒子撤销后屏幕继续出现动画?

问题描述 windows编程怎样让消息盒子撤销后屏幕继续出现动画? 1.我想让消息盒子撤消后出现画线那个动画,就是for循环那个,结果消息盒子撤销不了... 2.后来我用了一个随机数,一半的概率是我屏幕的动画,一半的概率是出现消息盒子,但是事实情况是是出现动画的时候消息盒子也出现了,然后还撤销不了,这怎么破 else{ //如果此应用程序没有接受到消息,不断循环,全速画线 //调用TLines(TLines.cpp)对象的Draw(),做最主要的事情 int r = rand() % 100;

windows画图问题-WINDOWS编程中如何擦除客户区内容?

问题描述 WINDOWS编程中如何擦除客户区内容? 各位前辈你好 最近在学WINDOWS编程,刚学了怎么处理键盘消息和资源这一部分,我导入了一个图标 希望通过按动"->"键来移动图标,我用DrawIcon函数来画这个图标,然后再按动"->" 键,相应的位置又会出现一个相同的图标,但是我之前的图标还在客户区内,我就想每次画图标之前把客户区清空,最好是置为背景颜色,请问用什么函数? 谢谢了 解决方案 你画图放到OnPaint中,同时Invalidate()来