Koristio sam Api funkciju i riješio nek probleme. Još samo mi ostaje problem kada iz druge forme namještam da prozor nije iznad svih - i dalje ne radi. Profunkcionira kada na formi kojoj stavljam izvršim sljedeći kod:
Code:
iniSettings = new TIniFile(ExtractFilePath(Application->ExeName)
+ "\Settings.ini");
int x;
if(iniSettings->ReadInteger("Settings", "StayOnTop", x) == 0)
{
int XCor = iniSettings->ReadInteger("Settings", "frmL", x);
int YCor = iniSettings->ReadInteger("Settings", "frmT", x);
SetWindowPos(frmMain->Handle, HWND_TOPMOST, XCor, YCor, 0, 0, SWP_NOMOVE ||
SWP_NOACTIVATE || SWP_NOSIZE);
SetWindowPos(frmMain->Handle, HWND_NOTOPMOST, XCor, YCor, 0, 0, SWP_NOMOVE ||
SWP_NOACTIVATE || SWP_NOSIZE);
// Parametars
// HWND_TOPMOST -> HWND_NOTOPMOST
// x
// y
// cx -> new width
// cy -> new height
}
delete iniSettings;
Onda sve funkcionira. Ako recimo tada ponovno želim uključiti da bude iznad svih, otiđem na formu za postavke i onda sve radi savršeno. kada kliknem izvan prozora prozor je i dalje vidljiv. No ako onda želim postaviti da prozor ne bude iznad ostalih nema efekta jer ako kliknem izvan njega ili otvorim neki novi prozor i dalje je situacija ista. Problem riješim ako izvršim gornji kod.
Samo želio bih da se on sam izvrši sam od sebe ali ne znam u koji Event ga postaviti - event koji se izvršava kad izađem iz neke druge forme?
Konkreto stavio sam sljedeći kod na dugme OK kod forme za postavke:
Code:
if(chkStayOnTop->Checked == true)
{
SetWindowPos(frmMain->Handle, HWND_TOPMOST, frmMain->Left, frmMain->Top, 0, 0, SWP_NOMOVE ||
SWP_NOACTIVATE || SWP_NOSIZE);
}
else
{
SetWindowPos(frmMain->Handle, HWND_NOTOPMOST, frmMain->Left, frmMain->Top, 0, 0, SWP_NOMOVE ||
SWP_NOACTIVATE || SWP_NOSIZE);
}
SaveSettings();
Close();
Možda mi neki od parametara nevalja za kod u else odjeljku?