MFC使用友元函数访问窗体类成员变量

⌚Time: 2023-09-14 22:01:15

👨‍💻Author: Jack Ge

首先创建一个窗体类指针的全局变量


CPoissonimageDlg *pDlg = NULL;

在窗体类的OnInitDialog函数中将指针赋值this,在OnInitDialog中窗体已经创建完成。这样指针就可以指向窗体实例




BOOL CPoissonimageDlg::OnInitDialog()

{

    CDialogEx::OnInitDialog();



    ...

    pDlg = this;

    return TRUE;

}

在窗体类中。将on_mouse函数声明为友元函数。友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数


class CPoissonimageDlg : public CDialogEx

{

public:

    CPoissonimageDlg(CWnd* pParent = NULL);

    bool isSelectedRect;

    bool isLoadBg;

    friend void on_mouse(int event, int x, int y, int flags, void *ustc);

    ...

};


在on_mouse函数中就可以对窗体类内的成员变量进行操作了


void on_mouse(int event, int x, int y, int flags, void *ustc){

        ...

        pDlg->isSelectedRect = true;

}