共用方式為


繪製標記

您可以使用線條函數來繪製標記。 標記是以點為中心符號。 繪圖應用程式會使用標記來指定起點、結束點和控制點。 試算表應用程式會使用標記來指定圖表或圖表上的景點。

在下列程式碼範例中,應用程式定義的 Marker 函式會使用 MoveToExLineTo 函式建立標記。 這些函式會繪製兩條交集線條,長度為 20 圖元,以游標座標為中心。

void Marker(LONG x, LONG y, HWND hwnd) 
{ 
    HDC hdc; 
 
    hdc = GetDC(hwnd); 
        MoveToEx(hdc, (int) x - 10, (int) y, (LPPOINT) NULL); 
        LineTo(hdc, (int) x + 10, (int) y); 
        MoveToEx(hdc, (int) x, (int) y - 10, (LPPOINT) NULL); 
        LineTo(hdc, (int) x, (int) y + 10); 

    ReleaseDC(hwnd, hdc); 
} 

當使用者按下滑鼠左鍵時,系統會將游標的座標儲存在WM_LBUTTONDOWN訊息的lParam參數中。 下列程式碼示範應用程式如何取得這些座標、判斷它們是否位於其工作區內,並將其傳遞至 Marker 函式以繪製標記。

// Line- and arc-drawing variables  
 
static BOOL bCollectPoints; 
static POINT ptMouseDown[32]; 
static int index; 
POINTS ptTmp; 
RECT rc; 
 
    case WM_LBUTTONDOWN: 
 
 
        if (bCollectPoints && index < 32)
        { 
            // Create the region from the client area.  
 
            GetClientRect(hwnd, &rc); 
            hrgn = CreateRectRgn(rc.left, rc.top, 
                rc.right, rc.bottom); 
 
            ptTmp = MAKEPOINTS((POINTS FAR *) lParam); 
            ptMouseDown[index].x = (LONG) ptTmp.x; 
            ptMouseDown[index].y = (LONG) ptTmp.y; 
 
            // Test for a hit in the client rectangle.  
 
            if (PtInRegion(hrgn, ptMouseDown[index].x, 
                    ptMouseDown[index].y)) 
            { 
                // If a hit occurs, record the mouse coords.  
 
                Marker(ptMouseDown[index].x, ptMouseDown[index].y, 
                    hwnd); 
                index++; 
            } 
        } 
        break;