Sabertooth Napisano Listopad 28, 2019 Autor Zgłoś Udostępnij Napisano Listopad 28, 2019 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? Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Trix Napisano Listopad 29, 2019 Zgłoś Udostępnij Napisano Listopad 29, 2019 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 Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.