Jump to content
Sign in to follow this  
Sabertooth

Dialog Units

Recommended Posts

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?

Share this post


Link to post
Share on other sites

Zgodnie z tym textem:

https://www.kellygroup.com/glinkj/help/scd/dunits.htm

Więc w skrócie:
1 jednostka dialogu w poziomie = 1/4 average character width ( czyli albo szerokosc sredniego znaku, albo srednia szerokosc znaku..)
1 jednostka dialogu w pionie = 1/8 average character height
MSDN twierdzi, że łatwiej jest użyc funkcji MapDialogRect, która w jednym ze swoich parametrów zwróci rozmiar okna dialogowego w pikselach.

pozdrawiam

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...