查看标签

所有标签>MFC/VC (RSS)

assert使用的一个注意点

在C++程序中使用断言是一个良好编程习惯, 但是使用assert的时候有一点需要注意, assert或者ASSERT在VC++中是以宏的方式实现的 注意到它的定义,它只有在DEBUG模式下才起作用, 我们使用断言的时候, 断言中应该只包含判断, 而不应该有其他行为. 这一次我们程序开发中就出现了这样一个问题: 程序在DEBUG下执行没有任何问题, 可是在Release下执行的时候却总是出错, 后来发现原来我们有一个初始化函数放在断言里面执行了, 既有一个函数Init, 返回的是布尔值, 结果我们直接这样使用断言了assert...
Posted 作者 zhaoyang0618 | with no comments

PostMessage的一个特殊用途

在使用MFC编程的时候遇上了这样一个怪异的问题: 我的对话框里面有一个WebBrowser控件, 我希望对话框打开的时候能够显示我需要的数据, 这是一个动态改变WebBrowser里面的数据的操作, 我响应了DocumentComplete消息,可是很快就发现有这样一个问题: 每次更改都不能成功, 可是在我进行调试, 假如一个MessageBox的时候,这个修改就是成功的, 同样的, 在对话框打开之后, 使用其它操作, 例如点击按钮来修改WebBrowser的数据也是成功的, 这下问题变得怪异了...
Posted 作者 zhaoyang0618

关于CCheckListBox的一点用法

在MFC程序中使用CCheckListBox的时候, 如果使用对话框模版, 需要把列表框设置成Owner Draw, Fixed的, 最好带上has string, 这里主要是说明如何获得点击选择的消息, 选中,或者取消选中, 在察看源代码之后可以发现, 这个时候CCheckListBox会向父窗口发送一个WM_COMMAND的消息, 消息的WPARAM中低位表示的CCheckListBox的ID, 高位是CLBN_CHKCHANGE(40), 所以对于MFC程序, 重载OnCommand即可....
Posted 作者 zhaoyang0618 | with no comments

关于GetDIBits函数的使用问题

最近在编程的时候需要获取位图的二进制数据, 在使用GetDIBits函数的时候发现一个古怪的问题, 虽然解决了其中的问题, 但是没有找到其中的原因.这里描述一些遇到的问题. 第一次:为了从位图句柄得到数据, 创建了内存设备描述句柄, 而后根据MSDN描述, 两次调用GetDIBits函数, 第一次得到位图的参数, 第二次获得二进制数据, 最后发现我在Debug模式下执行没有任何问题(实际上是有问题, 只是程序不会报错), 可是在Release下就会出现严重的错误: 操作的内存是只读的. 后来仍旧在Debug下跟踪发现...
Posted 作者 zhaoyang0618 | with no comments
更多内容