API - Create window help
Archives Forums/Win32 Discussion/API - Create window help| 
 | ||
| I'm playing around with WinAPI but getting bogged down with the ins and outs of windows controls. I have a bit of code which displays a window and reports all WM messages to the WINPROCHANDLER() function. Example Code - API Window (BlitzMax) The main problems I have is, 1) How should I fill in the client area of the window? This area is initially WHITE and shows the window title in the upper/left part:  However, moving the window around or moving other windows in front shows the inner area is not being drawn. This image shows the area I wish to be permanently solid. (The BLUE is the desktop background):  I'm not sure what to do here. So ... 1) Should I fill in the client area with a DC of the same size? 2) Is there a flag which does this for me? 3) How do I accurately get the correct client area/coordinates. Afterall, there are all sorts of parameters which affect the windows inner area (titlebar/statusbar, borders, etc..) 4) What if the user resizes/moves the window? Again, how should I update the inner area? | 
| 
 | ||
| Not sure if this is much use:- Basically, you call a WinAPI (GDI) function called UpdateWindow(hWnd), this sends a WM_PAINT event to your call back function, then you can draw your updated window again! Dabz | 
| 
 | ||
| Thanks Dabz but no luck yet. I get bewildered at the number of commands available for drawing windows, buttons and the likes. I read up on InvalidateRect which seems like the right command to use but still no joy. Maybe I am supposed to fill in the area with a STATIC borderless window(??) .. don't know really. | 
| 
 | ||
| Jim, under normal usage you would call DefWindowProc() but hooking into blitzmax needs a little more work. see this post here from a couple of months ago. where full hooking of blitzmax takes place. http://www.blitzbasic.com/Community/posts.php?topic=50237 this should be of some help kev | 
| 
 | ||
| Check the hbrBackground member of your window class. | 
| 
 | ||
| Ok folks. Thanks so far. I think I've got the structure of MSG wrong though. During the running of the program I get: bad refs:obj=$e107a0 refs=$0 Here is how I have defined the structure using this C++ sample .. 
typedef struct tagPOINT { // pt  
    LONG x; 
    LONG y; 
} POINT; 
typedef struct tagMSG {     // msg  
    HWND   hwnd;	 
    UINT   message; 
    WPARAM wParam; 
    LPARAM lParam; 
    DWORD  time; 
    POINT  pt; 
} MSG; 
Blitzmax 
Type POINTAPI
	Field x%,y%
End Type
Type MESSAGE
    Field hWnd%
    Field Message%
    Field wParam:Byte Ptr
    Field lParam:Byte Ptr
    Field Time%
    Field pt:POINTAPI=New POINTAPI
End Type 
The problem seems to arise after GetMessage() I've got a feeling its something to do with Field pt:POINTAPI=New POINTAPI Maybe that should be a byte ptr? Latest version -> API Window (BlitzMax) |