Dragging Window = Halted Execution

BlitzMax Forums/BlitzMax Programming/Dragging Window = Halted Execution

I am using a standard graphics window, non GUI. Normally this wouldn't be much of an issue, but I am writing a networked game. This means the user can invoke the auto disconnect routine just by dragging the window for a few seconds. It really isn't the best way to keep packets in sync when the user can halt program execution either. How can I get around this?

It appears the way to do this is within the System Mod, for which we have no source!

BUT we have a hack :D It's not ideal but it disables any clicking in the Titlebar area. It does need you to modify the d3d7graphics.bmx

Look for this function :
Function WndProc( hwnd,message,wp,lp ) "win32"

Put this code immediately beneath the function heading :-
If message = WM_NCHITTEST
		If DefWindowProcA(hwnd, WM_NCHITTEST, wp, lp) = 2 Return
	EndIf

And rebuilt modules.

Thanks, Indie. It's working good for DX, any fix for OGL?

If anyone knows any other methods, please let me know.

Oh yeah. Lol

glgraphics.win32.c
make it so:-
static _stdcall long _wndProc( HWND hwnd,UINT msg,WPARAM wp,LPARAM lp ){

	if (msg == WM_NCHITTEST)
	{
		if (DefWindowProc(hwnd, WM_NCHITTEST, wp, lp) == 2) return 0; 
	}

And I don't know the MacOS API so I can't do that one.

Works great. Thanks again :)

thread it

Can you elaborate, ol' engaged one?

well, if you stick your rendering/logic etc in a seperate thread etc, you can have it so that if someone drags the window around for like an hour (or less:P) it will still all update and you wont timeout (there was an example of this on one of the purebasic forums, opengl cube with threading i think it was)

(however if you want it crossplatform you will have to work out how todo it on all of course but i think its a better solution)

It would be easier to write your own functions to move the screen.