簡體   English   中英

錯誤 C2248: 'CObject::CObject': 當我在 ZD7421054471AB272ZCEAC18FD97BBD237

[英]error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject' when I calling hDC.SelectObject function in MFC

我在 MFC (Visual Studio 2013) 中為 WinCE 2013 開發了一個簡單的程序,使用 GDI 方法在設備上下文上繪圖。 不幸的是,當我嘗試在上下文設備句柄上調用 SelectObject 時出現錯誤:“錯誤 C2248:'CObject::CObject':無法訪問在 class'CObject 中聲明的私有成員”

我附上了調用 SelectObject 方法的函數之一。

    BOOL Druk::DrawGrid(CDC hDC,int start_x, int start_y, int limit_x, int limit_y, int width)
{
    CPen pen;
    COLORREF linecol;
    pen.CreatePen(PS_SOLID, width, NULL);
    hDC.SelectObject(&pen);
    for (float i = start_y; i < limit_y; i += 5 * MILIMETER)
    {
        hDC.MoveTo(start_x, i);
        hDC.LineTo(limit_x, i);
    }
    for (float j = start_x; j < limit_x; j += 5 * MILIMETER)
    {
        hDC.MoveTo(j, start_y);
        hDC.LineTo(j, limit_y);

    }
    for (float i = start_x; i < limit_x; i += MILIMETER)
    {
        for (float j = start_y; j < limit_y; j += MILIMETER)
        {
            hDC.MoveTo(i, j);
            hDC.LineTo(i + 1, j);
        }
    }

    return TRUE;
}

我嘗試用谷歌搜索這個錯誤,但我找不到可以幫助我的東西。

您的 SelectObject() 代碼對我來說看起來不錯。 但是,按值傳遞 CDC 是一個很大的錯誤。 您應該通過引用傳遞它或傳遞一個指向 CDC 的指針。 我希望當參數 CDC hDC 嘗試制作副本時可能會看到錯誤。 CObject 的復制構造函數和賦值運算符被聲明為私有且未實現。 您不能復制它們。 相反,將 function 的簽名更改為:

BOOL Druk::DrawGrid(CDC& hDC,int start_x, int start_y, int limit_x, int limit_y, int width)
{
// your code
}

您還有一些其他問題...您需要保存最初選擇的筆,然后將 select 保存回 CDC 最后....

CPen* pOldPen = hdc.SelectObject(&pen);

在最后

hdc.SelectObject(pOldPen);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM