PlanetSquires Forums

Please login or register.

Login with username, password and session length
Advanced search  

Author Topic: scaling problem  (Read 85 times)

jermy

  • Junior Member
  • **
  • Posts: 92
scaling problem
« on: March 28, 2021, 11:05:11 AM »

What is the reason that the button for both code examples ends up in a different location on the form?.
This piece of code sets the button in the correct location on the form.

Code: [Select]
            hCtle = CreateWindowEx(xStyle, "Button", cText, WS_CHILD  Or WS_VISIBLE  Or  WS_TABSTOP  Or  cStyle, _
                                                      hctl.rect.left, _                                                   '  // horizontal position
                                                      hctl.rect.top, _                                                   '  // vertical position
                                                      hctl.rect.right - hctl.rect.left, _                           '  // window width
                                                      hctl.rect.bottom - hctl.rect.top, _                       '  // window height
                                                      hwndOwner, Cast(HMENU,id), _
                                                      GetModuleHandle(NULL), _
                                                      NULL)

I would like to use AFX, but then my button location is no longer correct.
Code: [Select]
DIM pWindow AS CWindow PTR = AfxCWindowOwnerPtr(hwndOwner)
           hCtle =    pWindow->AddControl ( "Button", _                       
                                                   hwndOwner, _                                   
                                                   id, _                                           
                                                   cText, _                                   
                                                   hctl.rect.left, _                                                   ' // Horizontal position
                                                   hctl.rect.top, _                                                   ' // Vertical position
                                                   hctl.rect.right - hctl.rect.left, _                        ' // Control width
                                                   hctl.rect.bottom - hctl.rect.top, _                    ' // Control height
                                                   WS_CHILD  Or WS_VISIBLE  Or  WS_TABSTOP  Or  cStyle, _                                   
                                                   xStyle, _                             
                                                   0, _                                 
                                                   Null, _                             
                                                   &HFFFFFFFF, _                           
                                                  Null  )                             

can I calculate the correct coordinates with a function?
Logged

Paul Squires

  • Administrator
  • Guru Member
  • *****
  • Posts: 9386
  • Windows 10
    • PlanetSquires Software
Re: scaling problem
« Reply #1 on: March 28, 2021, 02:55:29 PM »

The Afx routine does the scaling based on the passed in position values. You would need to unscale those values prior to passing in the value because Afx will scale it up.

, _
pWindow->UnScaleX(hctl.rect.left), _
pWindow->UnScaleY(hctl.rect.top), _

etc
Logged
Paul Squires
PlanetSquires Software
WinFBE Editor and Visual Designer

jermy

  • Junior Member
  • **
  • Posts: 92
Re: scaling problem
« Reply #2 on: March 28, 2021, 03:06:12 PM »

Thanks for the effort.
Already thought there would be a function for it
Logged