2012-08-07 23:18
⁄ 工业·编程
⁄ 共 1675字
WM_COMMAND产生的条件:点击菜单,点击加速键,点击子窗口按钮,点击工具栏按钮。这些时候都有command消息产生。
WM_COMMAND消息中有两个参数,wparam、lparam,定义如下:
wParam 高两个字节 通知码
wParam 低两字节 命令ID
lParam 发送命令消息的子窗体句柄。
对于菜单和加速键来说,lParam为0,只有控件此...
VC阅读全文
2012-08-07 23:15
⁄ 工业·编程
⁄ 共 1334字
Windows给窗口发送消息,这意味著Windows调用窗口消息处理程序。但是,Windows程序也有一个消息循环,它调用GetMessage从消息队列中取出消息,并且调用DispatchMessage将消息发送给窗口消息处理程序。 那么,Windows程序是依次等待消息(类似于普通程序中相同的键盘输入),然后将消息送到某地方去的吗?或者,它是直接从程序外面接收消息的吗?实际上,两种情况都存在。 消息能够被分为「队列化的」和「非...
VC阅读全文
2012-08-07 23:10
⁄ 工业·编程
⁄ 共 834字
在窗口大小发生改变时,系统往窗口发送WM_SIZE消息,WPARAM指出窗口新的状态,LPARAM给出窗口新的大小。窗口的状态有三种:SIZE_MINIMIZE,SIZE_MAXIMIZE,SIZE_RESTORED。系统根据当前窗口的状态,在产生WM_SIZE消息时指定不同的WPARAM。然而,系统如何知道窗口当前的状态。很显然,系统必须用一些内存保存窗口当前的状态。保存在哪里呢?
用spy++观察一个窗口,很快就可以发现在...
VC阅读全文
2012-08-07 22:59
⁄ 工业·编程
⁄ 共 2368字
1.首先在初始化函数中,FormView在OnInitialUpdate(),Dialog在OnInitDialog()中初始化控件的大小。
//开始初始化控件大小 m_IsInitialed = false; CRect m_ClientRect; this->GetClientRect(&m_ClientRect); CSize m_Forsize; m_Forsize = GetTotalSize();//在资源编辑器中定好大小后,程序运行时大小(不管最大化和最小化,该大小均为同一个值),客户区大于或等于显示的大小 double m_x = (dou...
VC阅读全文
2012-08-07 06:32
⁄ 工业·编程
⁄ 共 5974字
在用VC开发应用程序时,经常会要做一些可以改变大小的对话框,而这个时候就要求对话框上的控件会随着对话框大小的改变而改变自己的位置和大小。如果控件比较少,那可以在对话框的OnSize()事件里面添加代码,通过计算来调整各个控件的位置和大小;但是,如果对话框上的控件比较多的话,那这将是一件非常痛苦的事情!要是程序中又有很多可以改变大小的对话框,那一个一个的OnSize()写下来,那会使程序员崩溃的...
VC阅读全文
2012-08-07 06:27
⁄ 工业·编程
⁄ 共 4067字
一
一个基于对话框的MFC界面,怎么样才能让对话框里的控件能和对话框同比例变小变大?今天我一直想解决这个问题,这是师姐留给我的任务。经过在网上的大量搜素,终于找到了解决方法,其实比较简单。
一般情况下,我们新建的对话框,里面的“确定”和:取消”按钮,在对话框最大化得时候,不会一起变大的,而是保持原来的大小。
最简单的情况:
当我们点击最大化按钮的时候,对话框会最大化,但是控件“确定”和“取消”不会跟着变大。...
VC阅读全文
2012-08-06 20:56
⁄ 工业·编程
⁄ 共 2053字
如果函数正常执行,则返回 S_OK,同时真正的函数运行结果则通过参数指针返回。如果遇到了异常情况,则COM系统经过判断,会返回相应的错误值。
HRESULT 值 含义 S_OK 0x00000000 成功 S_FALSE ...
VC阅读全文
2012-08-06 06:50
⁄ 工业·编程
⁄ 共 598字
在VC Debug版本里,栈中分配的值都会先用0xCCCCCCCC来处理一下,所以大家在Debug模式下调试程序发现在引用0xCCCCCCCC这样的值, 就说明在试图使用一个没有初始化的值。这就是在Debug模式下调试的好处之一,如果在Release模式下,系统就不会用0xCCCCCCCC来处理一 下了。至于为什么选择0xCCCCCCCC大概是因为 端点中断int 3 对应的机器码就是0xCC吧,我也不是很有把握。
用固 定的地址是可...
VC阅读全文
2012-08-06 06:46
⁄ 工业·编程
⁄ 共 4074字
UNICODE:它是用两个字节表示一个字符的方法。比如字符'A'在ASCII下面是一个字符,可'A'在UNICODE下面是两个字符,高字符用0填充,而且汉字'程'在ASCII下面是两个字节,而在UNICODE下仍旧是两个字节。UNICODE的用处就是定长表示世界文字,据统计,用两个字节可以编码现存的所有文字而没有二义。
MBCS,它是多字节字符集,它是不定长表示世界文字的编码。MBCS表示英文字母时就和ASCII一样(这也是我们容易把MBCS和ASCII搞混的原因...
VC阅读全文
2012-08-06 06:44
⁄ 工业·编程
⁄ 共 2336字
DWORD
32-bit unsigned integer.
This type is declared in WinDef.h as follows: typedef unsigned long DWORD; 1个二进制位称为1个bit,8个二进制位称为1个Byte,也就是1个字节(8位),2个字节就是1个Word(1个字,16位),则DWORD(DOUBLEWORD)就是双字的意思,两个字(32位)</CA>
windef.h中
typedef unsigned long DWORD;
关于DWORD使用中重要的一点。DWORD 现在表示32bit 无符号整数,即使以后Windows ...
VC阅读全文