一些细碎的注意点——二

1、横竖屏切换消息

PPC:WM_SIZE

SP:WM_SETGINGCHANGE

 

2、为什么拖动滚动条时,有颜色的背景总是闪动

因为拖动滚动条时,触发界面的WM_ERASEBKGND消息,系统会默认使用白色画刷去刷一遍背景,再调用我们的WM_PAINT去画我们的背景。因此总是会看到白色与颜色背景交替的闪动。

解决:

在响应WM_ERASEBKGND时,bHandled = TRUE即可。这样就不会交给系统默认去处理了。

 

3、为什么MessageBox的参数中能直接使用CString的变量?

例如:

CString string = _T("It's just a test!");

::MessageBox(NULL, string, _T("test"), MB_OK);

我们查看MessageBox的参数定义:

int MessageBox(
  HWND hWnd, 
  LPCTSTR lpText, 
  LPCTSTR lpCaption, 
  UINT uType
); 
可以看到lpText是一个LPCTSTR的变量,那么为什么CString能直接转换成LPCTSTR呢?我们再看看Ctring
的定义。其中有一个操作符重载函数:
operator LPCTSTR() const   // as a C string
 {
  return m_pchData;
 }
没错!就是它保证了string作为参数使用时默认转成LPCTSTR类型。
4、使用LoadString从资源文件中读出字符串内容时,字符串末尾显示乱码问题
解决方法:Project->Properties->Configuration Properties->Resources->Command Line
设置为-n
这样,从rc文件中读出字符串时才会自动在末尾加上结束符。
5、何时触发WM_ACTIVATE消息?
我们在创建一个模态对话框时,会触发WM_INITDIALOG消息,在InitDialog中处理时,发现调用SetFocus之后,
立马产生了一个WM_ACTIVATE消息,当WM_ACTIVATE处理完毕时,再继续执行InitDialog中剩余操作。
所以,SetFocus能够触发WM_ACTIVATE消息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值