bool initializeKeyhook() {
	std::thread([=](){
		if (g_hook != nullptr) {
			if (g_keyboardHookedCallback)
				g_keyboardHookedCallback(false);
			return;
		}

		g_hook = SetWindowsHookExA(WH_KEYBOARD_LL, lowLevelKeyboardProc, GetModuleHandle(0), 0);

		if (g_keyboardHookedCallback)
			g_keyboardHookedCallback(g_hook != nullptr);

		MSG msg;
		while (GetMessageA(&msg, NULL, 0, 0)) {
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}

	}).detach();

	return true;
}
Beispiel #2
0
void Visor(void *data)
{
	MSG msg;
	unsigned long idThrd;

	while (PeekMessage(&msg, 0, WM_USER, WM_USER + 5, PM_REMOVE));

	while(1)	{
		GetMessageA(&msg, 0, MAIN_READY, MAIN_READY);
		GetMessageA(&msg, 0, THRD_READY, THRD_READY);
		idThrd = msg.lParam;
		PostThreadMessageA(MainThreadID, MAIN_START, 0, 0);
		PostThreadMessageA(idThrd, THRD_START, 0, 0);
	}
}
Beispiel #3
0
static void test_messages(void)
{
    WNDCLASSA cls;
    HWND win;
    MSG msg;
    HANDLE thread;
    DWORD tid;

    InitializeCriticalSection(&clipboard_cs);

    memset(&cls, 0, sizeof(cls));
    cls.lpfnWndProc = clipboard_wnd_proc;
    cls.hInstance = GetModuleHandleA(NULL);
    cls.lpszClassName = "clipboard_test";
    RegisterClassA(&cls);

    win = CreateWindowA("clipboard_test", NULL, 0, 0, 0, 0, 0, NULL, 0, NULL, 0);
    ok(win != NULL, "CreateWindow failed: %d\n", GetLastError());

    thread = CreateThread(NULL, 0, clipboard_thread, (void*)win, 0, &tid);
    ok(thread != NULL, "CreateThread failed: %d\n", GetLastError());

    while(GetMessageA(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }

    ok(WaitForSingleObject(thread, INFINITE) == WAIT_OBJECT_0, "WaitForSingleObject failed\n");
    CloseHandle(thread);

    UnregisterClassA("clipboard_test", GetModuleHandleA(NULL));
    DeleteCriticalSection(&clipboard_cs);
}
Beispiel #4
0
unsigned WINAPI 
CreateWndThreadA(
	LPVOID pThreadParam) 
{
	HWND hWnd = CreateWindowA( "Azureus Window Hook", NULL, WS_OVERLAPPEDWINDOW,
									CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
									NULL, NULL, hInstance, NULL);
	if( hWnd == NULL){

		printf( "Failed to create window\n" );

		return( 0 );

	}else{

		MSG Msg;

		while(GetMessageA(&Msg, hWnd, 0, 0)) {

			TranslateMessage(&Msg);

			DispatchMessageA(&Msg);
		}

		return Msg.wParam;
	}
} 
int OGLTest::Run()
{
    bool fFirst = true;
    MSG msg;
    do
    {
        BOOL fGotMessage;
        if (miRenderStep)
        {
            fGotMessage = GetMessageA(&msg, 0, 0, 0);
        }
        else
        {
            fGotMessage = PeekMessageA(&msg, 0, 0, 0, PM_REMOVE);
        }

        if (fGotMessage)
        {
            TranslateMessage(&msg);
            DispatchMessageA(&msg);
        }

        float dt = 0.0f; /* Time in seconds since last render step. @todo Measure. */

        BOOL fDoRender = FALSE;
        if (miRenderStep)
        {
            if (msg.message == WM_CHAR)
            {
                if (msg.wParam == ' ')
                {
                    fDoRender = TRUE;
                    dt = fFirst ? 0.0f : 0.1f; /* 0.1 second increment per step. */
                }
            }
        }
        else
        {
             fDoRender = TRUE;
        }

        if (fDoRender)
        {
            if (mpRender)
            {
                setCurrentGLCtx(mhGLRC);

                mpRender->TimeAdvance(dt);
                mpRender->DoRender();

                setCurrentGLCtx(NULL);

                fFirst = false;
            }
        }
    } while (msg.message != WM_QUIT);

    return msg.wParam;
}
Beispiel #6
0
/******************************************************************
 *		mmTaskBlock (WINMM.@)
 */
VOID     WINAPI mmTaskBlock(DWORD tid)
{
    MSG		msg;

    do
    {
	GetMessageA(&msg, 0, 0, 0);
	if (msg.hwnd) DispatchMessageA(&msg);
    } while (msg.message != WM_USER);
}
Beispiel #7
0
static void cleanup(void)
{
    MSG msg;
    
    PostMessageA(hProgressParentWnd, WM_CLOSE, 0, 0);
    while (GetMessageA(&msg,0,0,0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }
    
    UnregisterClassA(progressTestClass, GetModuleHandleA(NULL));
}
Beispiel #8
0
static void cleanup(void)
{
    MSG msg;
    
    PostMessageA(hComboExParentWnd, WM_CLOSE, 0, 0);
    while (GetMessageA(&msg,0,0,0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }
    
    DestroyWindow(hComboExParentWnd);
    UnregisterClassA(ComboExTestClass, GetModuleHandleA(NULL));
}
Beispiel #9
0
static DWORD WINAPI drop_window_therad(void *arg)
{
    struct DragParam *param = arg;
    WNDCLASSA cls;
    WINDOWINFO info;
    BOOL r;
    MSG msg;

    memset(&cls, 0, sizeof(cls));
    cls.lpfnWndProc = drop_window_proc;
    cls.hInstance = GetModuleHandleA(NULL);
    cls.lpszClassName = "drop test";
    RegisterClassA(&cls);

    param->hwnd = CreateWindowA("drop test", NULL, 0, 0, 0, 0, 0,
                                NULL, 0, NULL, 0);
    ok(param->hwnd != NULL, "CreateWindow failed: %d\n", GetLastError());

    memset(&info, 0, sizeof(info));
    info.cbSize = sizeof(info);
    r = GetWindowInfo(param->hwnd, &info);
    ok(r, "got %d\n", r);
    ok(!(info.dwExStyle & WS_EX_ACCEPTFILES), "got %08x\n", info.dwExStyle);

    DragAcceptFiles(param->hwnd, TRUE);

    memset(&info, 0, sizeof(info));
    info.cbSize = sizeof(info);
    r = GetWindowInfo(param->hwnd, &info);
    ok(r, "got %d\n", r);
    ok((info.dwExStyle & WS_EX_ACCEPTFILES), "got %08x\n", info.dwExStyle);

    SetEvent(param->ready);

    while ((r = GetMessageA(&msg, NULL, 0, 0)) != 0) {
        if (r == (BOOL)-1) {
            ok(0, "unexpected return value, got %d\n", r);
            break;
        }
        DispatchMessageA(&msg);
    }

    DestroyWindow(param->hwnd);
    UnregisterClassA("drop test", GetModuleHandleA(NULL));
    return 0;
}
Beispiel #10
0
void __fastcall TMainForm::ToolButton3Click(TObject *Sender)
{
	String FileName = "ExpMtr\\mtr.xml";
	TSendThread *Client;
	int mr, r, cnt;
	String err;
	MSG msg;

	if ((err = cVerifData()) != "")	{
		ShowMessage(err);
		return;
	}

	LoginForm->UserEdit->Text = /*"sc910001" + */"sc" + IntToStr(School.SchoolCode);
	LoginForm->PasswordEdit->Text = "jXCHJQQo";

	Client = new TSendThread(true);
	if (LoginForm->ShowModal() != mrOk)
		return;

	Client->idVisor = idVisor;
	Client->User = LoginForm->UserEdit->Text;
	Client->Password = LoginForm->PasswordEdit->Text;
	Client->ms = new TMemoryStream;
	SaveXMLToStream(Client->ms);
	Client->CommandID = "3";
	Client->srv = GetServerIP();
	Client->FreeOnTerminate = true;

	SendForm->Show();
	SendForm->Memo1->Lines->Append("Соединение с сервером.");

	while (PeekMessage(&msg, this->Handle, WM_USER, THRD_END, PM_REMOVE)); //инициализация и отчистка очереди
	Client->Resume();
	GetMessageA(&msg, 0, THRD_READY, THRD_READY);
	while (!PeekMessageA(&msg, 0, THRD_END, THRD_END, PM_NOREMOVE))	{
		Application->ProcessMessages();
		WaitMessage();
	}
	PostThreadMessageA(0, MAIN_READY, 0, 0);
	ShowMessage(ThreadMsg);
}
Beispiel #11
0
static DWORD WINAPI create_window(LPVOID param)
{
    wnd_param *param1 = param;
    DWORD ret;
    MSG msg;

    ret = SetThreadDesktop(param1->hdesk);
    ok(ret, "SetThreadDesktop failed!\n");
    param1->hwnd = CreateWindowA("test_class", param1->wnd_name, WS_POPUP, 0, 0, 100, 100, NULL, NULL, NULL, NULL);
    ok(param1->hwnd != 0, "CreateWindowA failed!\n");
    ret = SetEvent(param1->hevent);
    ok(ret, "SetEvent failed!\n");

    while (GetMessageA(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }

    return 0;
}
Beispiel #12
0
FORCEINLINE int WINAPI WinMain2(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;

    if (MyRegisterClass(hInstance) == 0)
    {
        MessageBoxA(NULL, "RegisterClassEx() failed", NULL, 64);
        return -1;
    }

    if (InitInstance(hInstance, nCmdShow) == FALSE)
    {
        MessageBoxA(NULL, "CreateWindowEx() failed", NULL, 64);
        return -2;
    }

    while (GetMessageA(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return msg.wParam;
}
Beispiel #13
0
/**************************************************************************
 * 			MMSYSTEM_MidiStream_MessageHandler	[internal]
 */
static	BOOL	MMSYSTEM_MidiStream_MessageHandler(WINE_MIDIStream* lpMidiStrm, LPWINE_MIDI lpwm, LPMSG msg)
{
    LPMIDIHDR	lpMidiHdr;
    LPMIDIHDR*	lpmh;
    LPBYTE	lpData;
    BOOL	paused = FALSE;

    for (;;) {
        switch (msg->message) {
        case WM_QUIT:
            return FALSE;
        case WINE_MSM_STOP:
            TRACE("STOP\n");
            /* this is not quite what MS doc says... */
            midiOutReset(lpMidiStrm->hDevice);
            /* empty list of already submitted buffers */
            lpMidiHdr = lpMidiStrm->lpMidiHdr;
            lpMidiStrm->lpMidiHdr = NULL;
            while (lpMidiHdr) {
                LPMIDIHDR lphdr = lpMidiHdr;
                lpMidiHdr = lpMidiHdr->lpNext;
                lphdr->dwFlags |= MHDR_DONE;
                lphdr->dwFlags &= ~MHDR_INQUEUE;

                DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags,
                               (HDRVR)lpMidiStrm->hDevice, MM_MOM_DONE,
                               lpwm->mod.dwInstance, (DWORD_PTR)lphdr, 0);
            }
            return TRUE;
        case WINE_MSM_RESUME:
            /* FIXME: send out cc64 0 (turn off sustain pedal) on every channel */
            lpMidiStrm->dwStartTicks = GetTickCount() - lpMidiStrm->dwPositionMS;
            return TRUE;
        case WINE_MSM_PAUSE:
            /* FIXME: send out cc64 0 (turn off sustain pedal) on every channel */
            paused = TRUE;
            break;
	/* FIXME(EPP): "I don't understand the content of the first MIDIHDR sent
	 * by native mcimidi, it doesn't look like a correct one".
	 * this trick allows us to throw it away... but I don't like it.
	 * It looks like part of the file I'm trying to play and definitively looks
	 * like raw midi content.
	 * I'd really like to understand why native mcimidi sends it. Perhaps a bad
	 * synchronization issue where native mcimidi is still processing raw MIDI
	 * content before generating MIDIEVENTs ?
	 *
	 * 4c 04 89 3b 00 81 7c 99 3b 43 00 99 23 5e 04 89 L..;..|.;C..#^..
	 * 3b 00 00 89 23 00 7c 99 3b 45 00 99 28 62 04 89 ;...#.|.;E..(b..
	 * 3b 00 00 89 28 00 81 7c 99 3b 4e 00 99 23 5e 04 ;...(..|.;N..#^.
	 * 89 3b 00 00 89 23 00 7c 99 3b 45 00 99 23 78 04 .;...#.|.;E..#x.
	 * 89 3b 00 00 89 23 00 81 7c 99 3b 48 00 99 23 5e .;...#..|.;H..#^
	 * 04 89 3b 00 00 89 23 00 7c 99 3b 4e 00 99 28 62 ..;...#.|.;N..(b
	 * 04 89 3b 00 00 89 28 00 81 7c 99 39 4c 00 99 23 ..;...(..|.9L..#
	 * 5e 04 89 39 00 00 89 23 00 82 7c 99 3b 4c 00 99 ^..9...#..|.;L..
	 * 23 5e 04 89 3b 00 00 89 23 00 7c 99 3b 48 00 99 #^..;...#.|.;H..
	 * 28 62 04 89 3b 00 00 89 28 00 81 7c 99 3b 3f 04 (b..;...(..|.;?.
	 * 89 3b 00 1c 99 23 5e 04 89 23 00 5c 99 3b 45 00 .;...#^..#.\.;E.
	 * 99 23 78 04 89 3b 00 00 89 23 00 81 7c 99 3b 46 .#x..;...#..|.;F
	 * 00 99 23 5e 04 89 3b 00 00 89 23 00 7c 99 3b 48 ..#^..;...#.|.;H
	 * 00 99 28 62 04 89 3b 00 00 89 28 00 81 7c 99 3b ..(b..;...(..|.;
	 * 46 00 99 23 5e 04 89 3b 00 00 89 23 00 7c 99 3b F..#^..;...#.|.;
	 * 48 00 99 23 78 04 89 3b 00 00 89 23 00 81 7c 99 H..#x..;...#..|.
	 * 3b 4c 00 99 23 5e 04 89 3b 00 00 89 23 00 7c 99 ;L..#^..;...#.|.
	 */
        case WINE_MSM_HEADER:
            /* sets initial tick count for first MIDIHDR */
            if (!lpMidiStrm->dwStartTicks)
                lpMidiStrm->dwStartTicks = GetTickCount();
            lpMidiHdr = (LPMIDIHDR)msg->lParam;
            lpData = (LPBYTE)lpMidiHdr->lpData;
            TRACE("Adding %s lpMidiHdr=%p [lpData=0x%p dwBytesRecorded=%u/%u dwFlags=0x%08x size=%lu]\n",
                  (lpMidiHdr->dwFlags & MHDR_ISSTRM) ? "stream" : "regular", lpMidiHdr,
                  lpData, lpMidiHdr->dwBytesRecorded, lpMidiHdr->dwBufferLength,
                  lpMidiHdr->dwFlags, msg->wParam);
#if 0
            /* dumps content of lpMidiHdr->lpData
             * FIXME: there should be a debug routine somewhere that already does this
             */
            for (dwToGo = 0; dwToGo < lpMidiHdr->dwBufferLength; dwToGo += 16) {
                DWORD       i;
                BYTE        ch;

                for (i = 0; i < min(16, lpMidiHdr->dwBufferLength - dwToGo); i++)
                    printf("%02x ", lpData[dwToGo + i]);
                for (; i < 16; i++)
                    printf("   ");
                for (i = 0; i < min(16, lpMidiHdr->dwBufferLength - dwToGo); i++) {
                    ch = lpData[dwToGo + i];
                    printf("%c", (ch >= 0x20 && ch <= 0x7F) ? ch : '.');
                }
                printf("\n");
            }
#endif
            if (((LPMIDIEVENT)lpData)->dwStreamID != 0 &&
                ((LPMIDIEVENT)lpData)->dwStreamID != 0xFFFFFFFF &&
                ((LPMIDIEVENT)lpData)->dwStreamID != (DWORD)lpMidiStrm) {
                FIXME("Dropping bad %s lpMidiHdr (streamID=%08x)\n",
                      (lpMidiHdr->dwFlags & MHDR_ISSTRM) ? "stream" : "regular",
                      ((LPMIDIEVENT)lpData)->dwStreamID);
                lpMidiHdr->dwFlags &= ~MHDR_INQUEUE;
                lpMidiHdr->dwFlags |= MHDR_DONE;

                DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags,
                               (HDRVR)lpMidiStrm->hDevice, MM_MOM_DONE,
                               lpwm->mod.dwInstance, (DWORD_PTR)lpMidiHdr, 0);
                break;
            }

            lpMidiHdr->lpNext = 0;
            for (lpmh = &lpMidiStrm->lpMidiHdr; *lpmh; lpmh = &(*lpmh)->lpNext);
            *lpmh = lpMidiHdr;
            break;
        default:
            FIXME("Unknown message %d\n", msg->message);
            break;
        }
        if (!paused)
            return TRUE;
        GetMessageA(msg, 0, 0, 0);
    }
}
Beispiel #14
0
/**************************************************************************
 * 				MMSYSTEM_MidiStream_Player	[internal]
 */
static	DWORD	CALLBACK	MMSYSTEM_MidiStream_Player(LPVOID pmt)
{
    WINE_MIDIStream* 	lpMidiStrm = pmt;
    WINE_MIDI*		lpwm;
    MSG			msg;
    DWORD		dwToGo;
    DWORD		dwCurrTC;
    LPMIDIHDR		lpMidiHdr;
    DWORD		dwOffset;

    TRACE("(%p)!\n", lpMidiStrm);

    if (!lpMidiStrm ||
	(lpwm = (LPWINE_MIDI)MMDRV_Get(lpMidiStrm->hDevice, MMDRV_MIDIOUT, FALSE)) == NULL)
	goto the_end;

    /* force thread's queue creation */
    PeekMessageA(&msg, 0, 0, 0, PM_NOREMOVE);

    lpMidiStrm->dwStartTicks = 0;
    lpMidiStrm->dwPulses = 0;

    lpMidiStrm->lpMidiHdr = 0;

    /* midiStreamOpen is waiting for ack */
    SetEvent(lpMidiStrm->hEvent);

start_header:
    lpMidiHdr = lpMidiStrm->lpMidiHdr;
    if (!lpMidiHdr) {
	/* for first message, block until one arrives, then process all that are available */
	GetMessageA(&msg, 0, 0, 0);
	do {
	    if (!MMSYSTEM_MidiStream_MessageHandler(lpMidiStrm, lpwm, &msg))
		goto the_end;
	} while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE));
	goto start_header;
    }

    dwOffset = 0;
    while (dwOffset + offsetof(MIDIEVENT,dwParms) <= lpMidiHdr->dwBytesRecorded) {
	LPMIDIEVENT me = (LPMIDIEVENT)(lpMidiHdr->lpData+dwOffset);

	/* do we have to wait ? */
	if (me->dwDeltaTime) {
	    lpMidiStrm->dwPositionMS += MMSYSTEM_MidiStream_Convert(lpMidiStrm, me->dwDeltaTime);
	    lpMidiStrm->dwPulses += me->dwDeltaTime;

	    dwToGo = lpMidiStrm->dwStartTicks + lpMidiStrm->dwPositionMS;

	    TRACE("%d/%d/%d\n", dwToGo, GetTickCount(), me->dwDeltaTime);
	    while ((dwCurrTC = GetTickCount()) < dwToGo) {
		if (MsgWaitForMultipleObjects(0, NULL, FALSE, dwToGo - dwCurrTC, QS_ALLINPUT) == WAIT_OBJECT_0) {
		    /* got a message, handle it */
		    while (PeekMessageA(&msg, 0, 0, 0, PM_REMOVE)) {
			if (!MMSYSTEM_MidiStream_MessageHandler(lpMidiStrm, lpwm, &msg))
			    goto the_end;
			/* is lpMidiHdr still current? */
			if (lpMidiHdr != lpMidiStrm->lpMidiHdr) {
			    goto start_header;
			}
		    }
		} else {
		    /* timeout, so me->dwDeltaTime is elapsed, can break the while loop */
		    break;
		}
	    }
	}
	switch (MEVT_EVENTTYPE(me->dwEvent & ~MEVT_F_CALLBACK)) {
	case MEVT_COMMENT:
	    FIXME("NIY: MEVT_COMMENT\n");
	    /* do nothing, skip bytes */
	    break;
	case MEVT_LONGMSG:
	    midiOutLongMsg(lpMidiStrm->hDevice, lpMidiStrm->lpMidiHdr, MEVT_EVENTPARM(me->dwEvent));
	    break;
	case MEVT_NOP:
	    break;
	case MEVT_SHORTMSG:
	    midiOutShortMsg(lpMidiStrm->hDevice, MEVT_EVENTPARM(me->dwEvent));
	    break;
	case MEVT_TEMPO:
	    lpMidiStrm->dwTempo = MEVT_EVENTPARM(me->dwEvent);
	    break;
	case MEVT_VERSION:
	    break;
	default:
	    FIXME("Unknown MEVT (0x%02x)\n", MEVT_EVENTTYPE(me->dwEvent & ~MEVT_F_CALLBACK));
	    break;
	}
	if (me->dwEvent & MEVT_F_CALLBACK) {
	    /* native fills dwOffset regardless of the cbMidiHdr size argument to midiStreamOut */
	    lpMidiHdr->dwOffset = dwOffset;
	    DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags,
			   (HDRVR)lpMidiStrm->hDevice, MM_MOM_POSITIONCB,
			   lpwm->mod.dwInstance, (LPARAM)lpMidiHdr, 0L);
	}
	dwOffset += offsetof(MIDIEVENT,dwParms);
	if (me->dwEvent & MEVT_F_LONG)
	    dwOffset += (MEVT_EVENTPARM(me->dwEvent) + 3) & ~3;
    }
    /* done with this header */
    lpMidiStrm->lpMidiHdr = lpMidiHdr->lpNext;
    lpMidiHdr->dwFlags |= MHDR_DONE;
    lpMidiHdr->dwFlags &= ~MHDR_INQUEUE;

    DriverCallback(lpwm->mod.dwCallback, lpMidiStrm->wFlags,
		   (HDRVR)lpMidiStrm->hDevice, MM_MOM_DONE,
		   lpwm->mod.dwInstance, (DWORD_PTR)lpMidiHdr, 0);
    goto start_header;

the_end:
    TRACE("End of thread\n");
    return 0;
}
Beispiel #15
0
void __fastcall TMainForm::ToolButton6Click(TObject *Sender)
{
	String FileName = "ExpMtr\\mtr.xml";
	TStringList *list = new TStringList;
	TSendThread *Client;
	int mr;
	String err, s;
	char c[512];
	MSG msg;

	if ((err = cVerifData()) != "")	{
		ShowMessage(err);
		return;
	}

	LoginForm->UserEdit->Text = /*"sc910001" + */"sc" + IntToStr(School.SchoolCode);
	LoginForm->PasswordEdit->Text = "jXCHJQQo";

	Client = new TSendThread(true);
	if (LoginForm->ShowModal() != mrOk)
		return;

	Client->User = LoginForm->UserEdit->Text;
	Client->Password = LoginForm->PasswordEdit->Text;
	Client->ms = new TMemoryStream;
	s = "SchoolCode=" + Client->User.SubString(3, 6);
	Client->ms->Write(s.c_str(), 512);
//	Client->ms->Write('\0', 1);
	Client->CommandID = "4";
	Client->srv = GetServerIP();
	Client->FreeOnTerminate = true;

	SendForm->Show();
	SendForm->Memo1->Lines->Append("Соединение с сервером...");

	while (PeekMessage(&msg, this->Handle, WM_USER, THRD_END, PM_REMOVE)); //инициализация и отчистка очереди

	Client->Resume();

	GetMessageA(&msg, 0, THRD_READY, THRD_READY);

	while (!PeekMessageA(&msg, 0, THRD_END, THRD_END, PM_NOREMOVE))	{
		Application->ProcessMessages();
		WaitMessage();
	}

	if (!PostThreadMessageA(Client->ThreadID, MAIN_READY, 0, 0))	{
		Client->Suspend();
		Client->Terminate();
		ShowMessage("Непредвиденная ошибка при попытке отправить сообщение окну.");
    }

	if (msg.wParam)
		ShowMessage("WParam=" + IntToStr(msg.wParam));

	if (msg.lParam) {
		SendForm->Close();
		FillServerMatrixForm(ReceiveStream);
		ServerMatrixForm->Show();
	}
	else	{
        ShowMessage("Ошибка при получении списка матриц.");
    }
}
Beispiel #16
0
static void test_Load(void)
{
    static const WCHAR xmlview_xmlW[] = {'/','x','m','l','/','x','m','l','v','i','e','w','.','x','m','l',0};
    static const WCHAR res[] = {'r','e','s',':','/','/',0};

    WCHAR buf[1024];
    IPersistMoniker *pers_mon;
    IConnectionPointContainer *cpc;
    IConnectionPoint *cp;
    IMoniker *mon;
    IBindCtx *bctx;
    IHTMLElement *elem;
    HRESULT hres;
    MSG msg;
    BSTR source;

    lstrcpyW(buf, res);
    GetModuleFileNameW(NULL, buf+lstrlenW(buf), (sizeof(buf)-sizeof(res))/sizeof(WCHAR));
    lstrcatW(buf, xmlview_xmlW);

    if(!pCreateURLMoniker) {
        win_skip("CreateURLMoniker not available\n");
        return;
    }

    hres = CoCreateInstance(&CLSID_XMLView, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER,
            &IID_IPersistMoniker, (void**)&pers_mon);
    if(FAILED(hres)) {
        win_skip("Failed to create XMLView instance\n");
        return;
    }
    ok(hres == S_OK, "CoCreateInstance returned %x, expected S_OK\n", hres);

    hres = IPersistMoniker_QueryInterface(pers_mon, &IID_IHTMLDocument2, (void**)&html_doc);
    ok(hres == S_OK, "QueryInterface(HTMLDocument2) returned %x, expected S_OK\n", hres);
    hres = IPersistMoniker_QueryInterface(pers_mon, &IID_IConnectionPointContainer, (void**)&cpc);
    ok(hres == S_OK, "QueryInterface(IConnectionPointContainer) returned %x, expected S_OK\n", hres);
    hres = IConnectionPointContainer_FindConnectionPoint(cpc, &IID_IDispatch, &cp);
    ok(hres == S_OK, "FindConnectionPoint returned %x, expected S_OK\n", hres);
    hres = IConnectionPoint_Advise(cp, (IUnknown*)&HTMLEvents, NULL);
    ok(hres == S_OK, "Advise returned %x, expected S_OK\n", hres);
    IConnectionPoint_Release(cp);
    IConnectionPointContainer_Release(cpc);

    hres = CreateBindCtx(0, &bctx);
    ok(hres == S_OK, "CreateBindCtx returned %x, expected S_OK\n", hres);
    hres = pCreateURLMoniker(NULL, buf, &mon);
    ok(hres == S_OK, "CreateUrlMoniker returned %x, expected S_OK\n", hres);
    loaded = FALSE;
    hres = IPersistMoniker_Load(pers_mon, TRUE, mon, bctx, 0);
    ok(hres == S_OK, "Load returned %x, expected S_OK\n", hres);
    IBindCtx_Release(bctx);
    IMoniker_Release(mon);

    while(!loaded && GetMessageA(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessageA(&msg);
    }

    hres = IHTMLDocument2_get_body(html_doc, &elem);
    ok(hres == S_OK, "get_body returned %x, expected S_OK\n", hres);
    hres = IHTMLElement_get_outerHTML(elem, &source);
    ok(hres == S_OK, "get_outerHTML returned %x, expected S_OK\n", hres);
    ok(!html_src_compare(source, xmlview_html), "Incorrect HTML source: %s\n", wine_dbgstr_w(source));
    IHTMLElement_Release(elem);
    SysFreeString(source);

    IHTMLDocument2_Release(html_doc);
    html_doc = NULL;
    IPersistMoniker_Release(pers_mon);
}
Beispiel #17
0
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {

    MSG msg;
    int dwRefresh;
    LARGE_INTEGER LargeInt;


    if (InitInstance(hInstance) == FALSE) {
        return FALSE;
    }

    //Init random seed
    QueryPerformanceCounter(&LargeInt);
    srand(LargeInt.LowPart);
    ////////////////////////////////////////

    InitializeCriticalSection(&crsCurPiece);

    ClearBoard();

    dwRefresh = GetTickCount();

    PushRandomPiece();
    DrawBoard();
    UpdateScreen();


    while (1) {

        if (PeekMessageA(&msg, NULL, 0, 0, PM_NOREMOVE) == TRUE) {

            if (GetMessageA(&msg, NULL, 0, 0) == FALSE) {
                return 0;
            }

            TranslateMessage(&msg);
            DispatchMessage(&msg);

        }
        else {


            if (GetTickCount() >= (DWORD)(dwRefresh + FallingPieceSpeed)) {

                DrawBoard();
                UpdateScreen();

                dwRefresh = GetTickCount();

                EnterCriticalSection(&crsCurPiece);

                if (IsActionPossible(CurPiece.Piece, CurPiece.PosX, CurPiece.PosY + 1) == TRUE) {

                    CurPiece.PosY++;

                }
                else {

                    if (SaveCurPiece() == TRUE) {
                        MessageBoxA(NULL, "Game Over!", NULL, MB_OK);
                        ExitProcess(0);
                    }
                    DeleteLines();
                    PushRandomPiece();
                }

                LeaveCriticalSection(&crsCurPiece);

            }

            Sleep(100); //give that CPU some rest
        }
    }


    return 0;
}