WinAPI + przyklejające się okienko do brzegu ekranu

0

Witam
Normalnie pisze w javie. Chcę sobie zaimplementować przyklejające się okienko do brzegu ekranu ( nie nie dokowanie do brzegu) czyli np. jeżeli użytkownik zbliży okienko (przesuwając je ) do lewej krawędzi, wtedy ustawiamy jego pozycje na (0,y).
Robię to w dll (musi to być dll dla javy) i mam takie oto hooki oraz obsugę:
Dodam jeszcze, że dll generalnie działa, bo wypisuje mi położenie okna przy przemieszczaniu oraz sygnalizuje, że spełniony jest warunek "przyklejenia". Niestety okienko nie zmienia pozycji (wg dokumentacji powinno w przynajmniej jego ramka - i tutaj może leży problem). Jak zastosowałem to co jest zakomentowane (ten setWindow position) to już coś się tam działo, ale szału nie ma bo strasznie migało.
Hook:

JNIEXPORT void JNICALL Java_javax_pl_choina_StickyJFrame_makeWindowSticky
  (JNIEnv *env, jobject obj, jint intval)
{
	stickyWindowHandle=getHWND();
	stickyWindowHook= SetWindowsHookEx(
	WH_CALLWNDPROC,
	windowMovedOnScreen,
	getCurrentModule(),
	0);
	if(stickyWindowHook==NULL)
		std::cout<<"Error during creating window hook CODE:"+GetLastError()<<"\n";
	else
		std::cout<<"Window hook successfuly created\n";
	stickyOffset=intval;
}

Callback:

LRESULT CALLBACK windowMovedOnScreen(int nCode, WPARAM wParam, LPARAM lParam )
{
	if(nCode<0)
		return CallNextHookEx(NULL,nCode,wParam,lParam);
	if(nCode==HC_ACTION)
	{
		CWPSTRUCT* msg=(CWPSTRUCT*)lParam;
		if(msg->message==WM_MOVING)
		{
			RECT* rect=(RECT*)(msg->lParam);
			std::cout<<"Pozycja okna z JNI to: "<<rect->left<<":"<<rect->top<<"\n";
			// stick to left edge
			if(rect->left-stickyOffset<0)
			{
				((RECT*)(msg->lParam))->left=0;
				std::cout<<"Niby ustawiam ale i tak nic z tego;/;/\n";
				//SetWindowPos(stickyWindowHandle,0,0,0,0,0,SWP_NOZORDER | SWP_NOSIZE);
				return true; // tutaj próbowałem również false ale mało pomogło ;/
			}
		}
	}
//	std::cout<<"Kod wiadomosci: "<<nCode<<"\n";
	return CallNextHookEx(NULL,nCode,wParam,lParam);
}
0

I poraz kolejny sam po dłuższych chwilach rozwiązałem swój problem. StickyJFrame gra i buczy, klei się jak szalone bez migotania i takich tam innych pierdół!

1 użytkowników online, w tym zalogowanych: 0, gości: 1