1、 VC限制窗口大小又一法
一般说见到的方法,,都是截获WM_GETMAXMININFO消息。
俺有另一经验可实现之。
由于一般窗口大小的改变,都是用户拖动窗口边框而造成的。所以,我们可以截获主窗口消息WM_NCHITTEST在其响应函数中判断CWnd::OnNcHitTest()的返回值是否为HTRIGHT,HTLEFT,HTTOP,HTBOTTOM四个值之一,如果是,说明用户此时已点击了四个边框之一,此时我们应该返回HTCLIENT.那么,鼠标的形状就不会变成水平或垂直的双向箭头,用户就不可能依靠拖动边框来改变窗口大小了。
另外,还应补上一个小漏洞,就是还要把系统菜单中的SC_SIZE去掉。
2
当菜单项有了自画风格时,windows(菜单的窗口函数)会发送wm_measureitem给该菜单所属窗口,以便得到该菜单项的长度和高度,然后会发送wm_drawitem给该菜单所属窗口,其中包括了DC,菜单的各种状态,你这时就可以为这个菜单项画上你想要的画面了...
OnMeasureItem是响应子控件的WM_MEASUREITEM消息的,MeasureItem是响应反射的自己发送的WM_MEASUREITEM消息的。
3、 FAR,NEAR或far,near是DOS,16位Win时代的修饰符。
那时内存地址是以实模式方式分段组织的。
可寻址的范围是2^20=1024K=1M
又因为是16位的寄存器所以一个段为2^16=64K
当程序要访问段内地址时默认就是NEAR/near方式。
寻址时仅仅包含段偏移就可以了。
而要访问其他段的地址时,就需要加FAR/far修饰符。
这时,寻址时不但要求段偏移还要有段基址信息。
而32位Windows与16位Windows的重要区别就是指针宽度均为32位,
不再有near和far区别,内存模式也不是基于分段模式。
所以在32位Windows程序中,对FAR,NEAR或far,near已经不区别了。
所以可以忽略它。
WINDEF.H头文件中已经将FAR,NEAR或far,near定义为空字符。
//
...
#undef far
#undef near
#define far
#define near
//
...
#undef FAR
#undef NEAR
#define FAR far
#define NEAR near
如果没有包含WINDEF.H头文件也可以设置编译选项。
/D_near= /D_far= /D__near= /D__far=
以上