Toon posts:

[MFC] Object resizen zonder te verplaatsen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Allereerst wil ik ff kwijt dat ik voordat ik dit topic postte volop heb zitten googlen, mIRCen in #devschuur en op dit forum heb zitten searchen, maar er niks over kon vinden.

Ik ben bezig een programmaatje in VC++ te schrijven met MFC, en daarin zit een Picture object. De naam van het object is IDC_picPreview, en ik wil dat object resizen zonder het te verplaatsen (de beginpositie is onbekend) als ik op het knopje 'btnUpdate' klik.
Dus wilde ik het volgende gebruiken:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
void CRembolcdDlg::OnbtnUpdate() 
{
CWnd *cwndPicture = GetDlgItem(IDC_picPreview);
RECT pictureRect;

cwndPicture->GetWindowRect(&pictureRect);

pictureRect.bottom = pictureRect.top + 100;
pictureRect.right = pictureRect.left + 100;

cwndPicture->MoveWindow(&pictureRect, TRUE);
}


Maar nou is het probleem dat het object iedere keer als ik op het knopje druk, een heel stuk naar rechtsonder gaat (niet random, elke keer wordt er even veel bij de positie opgeteld) :?
Het resizen gaat prima, maar hij verplaatst nu dus ook, en dat wil ik niet. Hoe los ik dit op?

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 17:28

alienfruit

the alien you never expected

Java:
1
2
3
4
5
6
void InflateRectangle( RECT rect, int x, int y ) {
    rect.top = rect.top - y;
    rect.bottom = rect.bottom + y 
    rect.left = rect.left -  x 
    rect.right = rect.left -  y 
}


Dit zou moeten werken

[ Voor 26% gewijzigd door alienfruit op 18-07-2003 22:30 ]


Verwijderd

Topicstarter
rect.right = rect.left - y
:?

anyway, het probleem is dus dat die Rect die ik terugkrijg van GetWindowRect niet goed is, zijn top & left zijn te groot... Een simpel aftrek/optelsommetje kan ik ook nog wel verzinnen ;)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-08 13:19

.oisyn

Moderator Devschuur®

Demotivational Speaker

Even de docs lezen he
The GetWindowRect function retrieves the dimensions of the bounding rectangle of the specified window. The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.
Gebruik ScreenToClient () om een punt te transformeren van screencoordinaten naar clientcoordinaten (waarbij de client dus de parent window is). Of gewoon SetWindowPos ipv MoveWindow, zodat je kunt aangeven dat ie alleen de breedte en hoogte moet aanpassen, en niet de positie

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 17:28

alienfruit

the alien you never expected

Argh :Z Dat kon het ook zijn

Verwijderd

Topicstarter
.oisyn schreef op 18 juli 2003 @ 23:57:
Even de docs lezen he


[...]


Gebruik ScreenToClient () om een punt te transformeren van screencoordinaten naar clientcoordinaten (waarbij de client dus de parent window is). Of gewoon SetWindowPos ipv MoveWindow, zodat je kunt aangeven dat ie alleen de breedte en hoogte moet aanpassen, en niet de positie
Thx, dat wist ik nog niet, maar het werkt nu :D
Pagina: 1