对子窗口理解出现一些误区,导致实现跟随其它窗体的透明窗体时走了很多弯路。
1、有父窗口不一定具有WS_CHILD属性,父子窗口可以保证Z轴顺序,也就是保证子窗口在父窗口上面。
2、Layered Window不能有WS_CHILD属性,但是可以有父窗口,所以也能实现透明和异形效果。
3、Z轴顺序用父子窗口关系实现,透明窗体用Layered Window实现,就能很容易实现透明子窗体。
4、CWnd::Create函数里的类名用AfxRegisterWndClass注册,不能用RegisterClass.
关键代码:
BOOL MyWnd::Create(HWND hParent)
{
HINSTANCE hInst = GetModuleHandle(NULL);
LPCSTAR clsName = AfxRegisterWndClass(CS_HREDRAW|CS_WRE