绘图窗体和控制窗体为子控件
子控件的创建如下:
//控件
#define ID_DRAWAREA "drawarea" //绘画区
#define ID_CONTROLBAR "controlbar" //控制面板
static BOOL RegisterMyControl (char *CONTROLID)
{
WNDCLASS MyClass;
MyClass.spClassName = CONTROLID;
MyClass.dwStyle = WS_NONE;
MyClass.dwExStyle = WS_EX_NONE;
MyClass.hCursor = GetSystemCursor (IDC_ARROW);
MyClass.iBkColor = COLOR_lightwhite;
if(strcmp(CONTROLID,ID_DRAWAREA)==0)
MyClass.WinProc = InitDrawAreaProc;
else if(strcmp(CONTROLID,ID_CONTROLBAR)==0)
MyClass.WinProc = InitControlBarProc;
return RegisterWindowClass (&MyClass);
}
在主窗体的MSG_CREATE创建
RegisterMyControl(ID_DRAWAREA);
hwndDrawarea=CreateWindow(ID_DRAWAREA,"",WS_VISIBLE|WS_CHILD,IDD_DRAWAREA,0,0,xFrameWidth-controlbarwidth,yFrameHeight,hWnd,0);
RegisterMyControl(ID_CONTROLBAR);
hwndControlbar=CreateWindow(ID_CONTROLBAR,"",WS_VISIBLE|WS_CHILD,IDD_CONTROLBAR,xFrameWidth-controlbarwidth,0,controlbarwidth,yFrameHeight,hWnd,0);
俄罗斯方块算法
1 建一个二维数组,每一格都用x,y定位,然后用0、1填充,0 表示没方块,1表示有方块。
2 组建不同方块的实体,也就是使二维数组所对应的方格为1
3 移动时只要将对应的方格1移动就行,对于移过的格用0填充