aff ich hasse Winapi ;_;

Code:
/*  Programm: First Window
    Author:   Stefan Hof
    Date:     5. January 2004
*/

#include <windows.h>
#include <iostream>
#include <fstream>
#include <string.h>

using namespace std;

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
LRESULT CALLBACK ChildProc(HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam);
HINSTANCE h_areainstance;
HWND hwnd, hwnd_maparea;

const char szChildName[]="STATIC";

char cords[20][20];

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int showpref)
{
    static char AppName[] = "WinTextedit 1.0";
    MSG msg;
    WNDCLASS wndclass;

    wndclass.style = 0;
    wndclass.lpfnWndProc = WndProc;
    wndclass.cbClsExtra = 0;
    wndclass.cbWndExtra = 0;
    wndclass.hInstance = hInstance;
    wndclass.hIcon = LoadIcon(NULL, IDI_WINLOGO);
    wndclass.hCursor = LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground = (HBRUSH) COLOR_MENU + 3;
    wndclass.lpszMenuName = NULL;
    wndclass.lpszClassName = AppName;
    
    if (RegisterClass(&wndclass) == false)
    {
        MessageBox(NULL, "Es ist ein Fehler aufgetreten. ", "Error! ", MB_ICONERROR);
        return 0;
    }
    wndclass.hbrBackground       = (HBRUSH) COLOR_MENU + 3;
	wndclass.hIcon               = NULL;
	wndclass.lpfnWndProc         = ChildProc;
	wndclass.lpszClassName       = szChildName;
    
    
    if (RegisterClass(&wndclass) == false)
    {
        MessageBox(NULL, "Es ist ein Fehler aufgetreten. ", "Error! ", MB_ICONERROR);
        return 0;
    }
    
	hwnd = CreateWindow (AppName,
                         TEXT("WinProgramm 1.0"),
                         WS_OVERLAPPEDWINDOW,
                         100,
                         100,
                         500,
                         500,
                         NULL,
                         NULL,
                         hInstance,
                         NULL);

    ShowWindow(hwnd, SW_SHOWNORMAL);
    UpdateWindow(hwnd);
    
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{

    switch(message)
    {
   
    case WM_CREATE:

        hwnd_maparea = CreateWindow(szChildName,
                                    "maparea",
                                    WS_CHILD | WS_VISIBLE | SS_GRAYFRAME,
                                    100, 30, 200, 200,
                                    hwnd,
                                    NULL,
                                    ((LPCREATESTRUCT)lParam)->hInstance,
                                    NULL);

        return 0;


        
     case WM_DESTROY:
        PostQuitMessage(0);    
        return 0;
    }
    return DefWindowProc(hwnd, message, wParam, lParam);
}

LRESULT CALLBACK ChildProc(HWND hWnd,UINT message, WPARAM wParam,LPARAM lParam){
    static int xOffset=100,yOffset=30;
	HDC hdc_winclient, hdc_bmp_mem;
    static HBITMAP hbitmap = LoadBitmap(NULL,(char*)OBM_CHECK);
    int mouse_x, mouse_y;
    PAINTSTRUCT ps;
    
    switch(message){

    case WM_PAINT:
        hdc_winclient = BeginPaint(hwnd, &ps);
        hdc_bmp_mem = CreateCompatibleDC(hdc_winclient);
        SelectObject(hdc_bmp_mem, hbitmap);
        for(int x = 0; x<20; x++)
        {
            for(int y = 0; y<20; y++)
            {
                if (cords[x][y] == 1)
                {
                    BitBlt(hdc_winclient, (x*10)*10+xOffset, (y*10)+yOffset, 40, 40, hdc_bmp_mem, 0, 0, SRCCOPY);                    
                }
            }
        }
    
        EndPaint(hwnd, &ps);
        DeleteDC(hdc_bmp_mem);
        return 0;


    case WM_LBUTTONDOWN:
        mouse_x = LOWORD(lParam);
        mouse_y = HIWORD(lParam);      
        cords[mouse_x/10][mouse_y/10] = 1;
        hdc_winclient = GetDC(hwnd);
        hdc_bmp_mem = CreateCompatibleDC(hdc_winclient);
        SelectObject(hdc_bmp_mem, hbitmap);
        BitBlt(hdc_winclient, (mouse_x / 10)*10+xOffset, (mouse_y / 10) *10+yOffset, 40, 40, hdc_bmp_mem, 0, 0, SRCCOPY);
        ReleaseDC(hwnd, hdc_winclient);
        DeleteDC(hdc_bmp_mem);
        return 0;
        
        
    case WM_MOUSEMOVE:
        if (wParam == MK_LBUTTON)
        {
            mouse_x = LOWORD(lParam);
            mouse_y = HIWORD(lParam);     
       
            cords[mouse_x/10][mouse_y/10] = 1;
             
            hdc_winclient = GetDC(hwnd);
            hdc_bmp_mem = CreateCompatibleDC(hdc_winclient);
            SelectObject(hdc_bmp_mem, hbitmap);
            BitBlt(hdc_winclient, (mouse_x / 10)*10+xOffset, (mouse_y / 10) *10+yOffset, 40, 40, hdc_bmp_mem, 0, 0, SRCCOPY);
            ReleaseDC(hwnd, hdc_winclient);
            DeleteDC(hdc_bmp_mem);
        }
        return 0;     

    case WM_DESTROY:
        DeleteObject(hbitmap);
        PostQuitMessage(0);    
        return 0;
    }
    return DefWindowProc(hWnd, message, wParam, lParam);
}
Also das wäre der Code für das Child Window in einer eigenen Callbackfunktion. Irgendwie ist dabei der Rahmen verschwunden, ich hab leider keine Ahnung warum o_O'.
Du musst wie du gesagt hast wieder ne neue Fensterklasse registrieren, dann wie gehabt im WM_CREATE aufrufen.