Probleme rezolutie

Intrebari legate de programarea cu biblioteci precum MFC, ATL, WTL si GDI+.
Post Reply
carrera
Junior
Junior
Posts: 38
Joined: 23 Aug 2007, 12:06

Probleme rezolutie

Post by carrera » 31 May 2011, 13:50

Buna,

-O intrebare as avea: am un mic programel facut in C++/MFC, si cind l-am facut am avut un monitor cu rezolutia 1240X1024 care afisa toate controalele corect, il testasem si pe alt monitor cu rez. 1024x768 si la fel, mergea bine.
-Acum insa, am un ecran cu rezolutia 1366x768 (panoramic) si e jale ce afiseaza, controale incalecate, unele mai mici altele mai mari, etc.Pe google am vazut ca unii
creaza alte controale pe care le incarca dinamic in functie de rezolutie.Ar fi vreo metoda mai simpla de rezolvare?

Merci.



User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Probleme rezolutie

Post by Ovidiu Cucu » 31 May 2011, 13:59

Pune aici un demo si vedem dupa aceea ce se intampla.

carrera
Junior
Junior
Posts: 38
Joined: 23 Aug 2007, 12:06

Re: Probleme rezolutie

Post by carrera » 01 Jun 2011, 07:06

Am atasat un exemplu, se vede cum combobox-urile au incalecat lista, iar randurile listei s-au facut mai late...la fel si la edit-box-urile din dreapta.Mentionez ca liniile erau perfect paralele, dintr-un capat in altul, de la combobox la editbox-uri.Controalele sint create static.Pina la urma cred ca o sa creez alt form, si in functie de rezolutie il incarc pe unul sau pe celalalt.
Merci.

carrera
Junior
Junior
Posts: 38
Joined: 23 Aug 2007, 12:06

Re: Probleme rezolutie

Post by carrera » 01 Jun 2011, 08:07

Gata, am gasit problema, e de la sistemul de operare, cind am schimbat monitorul am schimbat si SO-ul, inainte aveam xp acum win7.Si totusi, ce-as putea face acum sa se vada corect?

mesajflaviu
Membru++
Membru++
Posts: 687
Joined: 10 Sep 2008, 21:40
Judet: Cluj

Re: Probleme rezolutie

Post by mesajflaviu » 01 Jun 2011, 08:51

O solutie ar fi sa incadrezi toate controalele intr-un groupbox , pe care il faci invizibil apoi , iar la OnSize(...) il iei ca referinta si muti toate controalele dupa el :

Code: Select all

void CMyFormView::OnSize(UINT nType, int cx, int cy) 
{
	CFormView::OnSize(nType, cx, cy);

	// TODO: Add your message handler code here

	if((GetScrollPos(SB_HORZ) != 0) || (GetScrollPos(SB_VERT) != 0))return;

	int topMargin = 5, leftMargin = 5;
	CRect rect, rectView, rectTotal;
	GetWindowRect(&rectView);

	for(CWnd* pWnd = GetWindow(GW_CHILD);pWnd != NULL;pWnd = pWnd->GetWindow(GW_HWNDNEXT))
	{
		CWnd* pTotal = GetDlgItem(IDC_TOTAL_RECT);
		if(pTotal == NULL)break;
		pTotal->GetWindowRect(&rectTotal);

		int xPos, yPos;
		pWnd->GetWindowRect(&rect);
		if(rectView.Width() > (rectTotal.Width() + 2 * leftMargin))
			xPos = (rectView.Width() - rectTotal.Width()) / 2;
		else xPos = leftMargin;

		if(rectView.Height() > (rectTotal.Height() + 2 * topMargin))
			yPos = (rectView.Height() - rectTotal.Height()) / 2;
		else yPos = topMargin;

		pWnd->MoveWindow(xPos + rect.left - rectTotal.left,yPos + rect.top - rectTotal.top, rect.Width(), rect.Height(), TRUE);
	}
}

aici ID-ul groupbox-ului care incadreaza totul este IDC_TOTAL_RECT.
Iti atasez si un mic exemplu .
Attachments
CtrlsForm.rar
(79.95 KiB) Downloaded 279 times

User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

Re: Probleme rezolutie

Post by Ovidiu Cucu » 01 Jun 2011, 10:22

Nu cred ca "durerea" din OP provine doar de la a centra niste controale. La asa ceva nu cred sa apara probleme, indiferent de rezolutia monitorului.

E posibil sa fie vorba de o aplicatie ceva mai "desteapta" care se uita la rezolutie si in functie de asta se apauca pe langa mutat, de redimensionat controale, fonturi si alte celea.
Un mic bugulet pe la calcule sau la transformari (de exempu din unitati dialog in pixeli) sau pur si simplu cel ce-a scris programul nu s-a gandit ca in viitor vor exista si monitoare "wide" si s-a dus totul de rapa.

Nu pot spune exact ce si cum ar trebui facut pentru ca n-am in fata aplicatia sau macar un demo cu comportare similara, deci nu stiu ce "minunatii" sunt prin cod si cum ar putea fi ele reparate.
carrera wrote:Am atasat un exemplu...
Unde?

Post Reply