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) |

