1
我在用窗戶搞亂,截至目前,我確實有一個出現的聲音,當我點擊(按鈕按下)並拖動,然後鬆開(按鈕),我們有一個正方形......如何當我調整它消失的窗口大小?爲什麼?我錯過了什麼?感謝您花時間審閱這篇文章。Buit矩形(我自己的類型),不會調整窗口大小?
//LEFT BUTTON DOWN MOVEMENT
case WM_LBUTTONDOWN:
// if not drwing then save start poostion and set drawing flag
// goes here startPosition
if(! isDrawing)
{
startPosition = MAKEPOINTS(lParam);// poiint where the mouseis clicked
isDrawing = true;
}
else{
// how did I get a button down while I was drawing
}
break;
//when the button is let up the message is sent, its a drawing mode or not drawing, or draging draw.....
// LEFT BUTTON UP movement
case WM_LBUTTONUP:
// if drawing is not occuring, then
// if I am drawing then save endeding point(position), draw a rectangle (startPositon and endPoistion)
//
if(isDrawing)
{
endPosition = currentPosition = MAKEPOINTS(lParam);
//draw rectangle here.
// This is what we had 1st.... RectType rect(startPosition.x, startPosition.y, endPosition.x, endPosition.y);
RectType rec(startPosition , endPosition);// this is what we want...need to write teh code for this.
//something and I cant call beginPaint(),and end paint();
if(hdc = GetDC(hWnd))
{
::Rectangle(hdc, rec.myRect.left, rec.myRect.top, rec.myRect.right, rec.myRect.bottom);
ReleaseDC(hWnd, hdc);// this is how we call on paint with out being in WM_Paint
}
isDrawing = false; // this is the flag.
}
break;
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
int wmId, wmEvent;
PAINTSTRUCT ps;
HDC hdc;
switch (message)
{
//LEFT BUTTON DOWN MOVEMENT
case WM_LBUTTONDOWN:
// if not drwing then save start poostion and set drawing flag
// goes here startPosition
if(! isDrawing)
{
startPosition = MAKEPOINTS(lParam);// poiint where the mouseis clicked
isDrawing = true;
}
else{
// how did I get a button down while I was drawing
}
break;
//when the button is let up the message is sent, its a drawing mode or not drawing, or draging draw.....
// LEFT BUTTON UP movement
case WM_LBUTTONUP:
// if drawing is not occuring, then
// if I am drawing then save endeding point(position), draw a rectangle (startPositon and endPoistion)
//
if(isDrawing)
{
endPosition = currentPosition = MAKEPOINTS(lParam);
//draw rectangle here.
// This is what we had 1st.... RectType rect(startPosition.x, startPosition.y, endPosition.x, endPosition.y);
RectType rec(startPosition , endPosition);// this is what we want...need to write teh code for this.
//something and I cant call beginPaint(),and end paint();
if(hdc = GetDC(hWnd))
{
::Rectangle(hdc, rec.myRect.left, rec.myRect.top, rec.myRect.right, rec.myRect.bottom);
ReleaseDC(hWnd, hdc);// this is how we call on paint with out being in WM_Paint
}
isDrawing = false; // this is the flag.
}
break;
case WM_MOUSEMOVE:
//if I am drawing...
//if I am not drawing save current postion, and latested or endingPositon
// darw rectangle(StartPos, latestPos)
if(isDrawing)//
{
currentPosition = MAKEPOINTS(lParam);
RectType rec(startPosition , currentPosition);// this is what we want.
//draw rectangle here.
if(hdc = GetDC(hWnd)) // GetDC is the window function....
{
POINTS prevPosition = currentPosition;
currentPosition = MAKEPOINTS(lParam);
RectType rec(startPosition , currentPosition);
RectType prevRec(startPosition, prevPosition);
HDC dc = GetDC(hWnd);
HPEN pen = CreatePen(PS_DASH, 0, RGB(0, 0, 0));
HBRUSH brush = CreateSolidBrush(RGB(rand()%255, rand()%255, rand()%255) );//---------------------------------------------NEWWWWWWWWWWWWRGB(200,0,0)
SelectObject(hdc,pen);
//give us a quaiz hollow square.below.
SelectObject(hdc,GetStockObject(HOLLOW_BRUSH) );
//::SetROP2(hdc, R2_XORPEN);//these use exclusive OR bit wise logical operator...try R2_NOT,for later
// 1^0 = 1...so if the comparing two are differnet 1 and 0 we have 1
// 1^1 = 0...if we have all the same 0,0 then it would be 1....
::Rectangle(hdc, prevRec.myRect.left, prevRec.myRect.top , prevRec.myRect.right, prevRec.myRect.bottom);
::Rectangle(hdc, rec.myRect.left, rec.myRect.top , rec.myRect.right, rec.myRect.bottom);
ReleaseDC(hWnd, hdc);// this is how we call on paint with out being in WM_Paint
}
}
break;