Witam!
Uzywajac visual studio 6, a dokladnie jego resource editora zrobilem sobie Dialoga w projekcie MFC. Wszystko pieknie dziala. Nistety zostalem zmuszony aby zrezygnowac z dobrodziejstw takowego tworzenia okien na rzecz tworzenia dynamicznego. I tutaj pojawil sie problem. Mam okolo 90 kontrolek, ktore musza zostac zainicjowane podczas startu programu. Ze swtorzeniem nie ma zadnych probemow. Sek w tym, ze pozycja podana w pliku z *.rc jest wyrazona w tak zwanych Dialog Units i wykorzystujac je podczas tworzenia dynamicznego [ potrzebne do tego sa piksele ] wszystko sie sypie. Moje pytanie brzmi w jaki sposob przeliczyc dialog unity na piksele.
Nie omieszkalem zagooglac. Wyniki Przedstawiam ponizej:
class MSKDialogUnits
{
private:
WORD m_duXx4; // Dialog Units, on the X axis, times 4
WORD m_duYx8; // Dialog Units, on the Y axis, times 8
public:
MSKDialogUnits()
{
DWORD dw = GetDialogBaseUnits();
m_duXx4 = LOWORD(dw);
m_duYx8 = HIWORD(dw);
}
~MSKDialogUnits() {};
int X(int x) {return ((x * m_duXx4) /4);}
int Y(int y) {return ((y * m_duYx8) /8);}
};
Niestety koordynaty zdaja sie byc niepoprawne, a przynajmniej pomylone o kilkanascie pikseli [ im dalsza pozycja od zera tym wiekszy blad ].
Moze ktos juz sie spotkal z takim problemem i moze ma rozwiazanie?