当前位置: 代码迷 >> VC/MFC >> error C2248: “CDialog:OnOK”: 无法访问 protected 成员(在“CDialog”类中声明)解决方案
  详细解决方案

error C2248: “CDialog:OnOK”: 无法访问 protected 成员(在“CDialog”类中声明)解决方案

热度:850   发布时间:2016-05-02 03:29:58.0
error C2248: “CDialog::OnOK”: 无法访问 protected 成员(在“CDialog”类中声明)
error C2248: “CDialog::OnOK”: 无法访问 protected 成员(在“CDialog”类中声明)

在线程中调用onok,编译出现这个错误,很不理解。。。算了还是上代码,另外注释掉的那句发送消息,希望能通过发送消息关闭dialog,但是运行的时候会断言...


------解决思路----------------------

这是CDialog::OnOk的声明。
protected成员在类外相当于私有的,肯定没法直接调用。
------解决思路----------------------
关于第二个问题,你贴出来的这个函数也不是某个类的成员函数。
比如你在CDialog的成员函数中,这么直接调用FromHandle函数,
会默认你调用CDialog的FromHandle。不是类的成员函数中这么
直接调用,只能是调用windows api函数,而windows中没有这个
函数。
------解决思路----------------------
你这些错误都是C++基础性的错误呀!
再一个,线程里面能用消息的,就不要用对象去调函数,这是基本原则:

HWND hWnd = ::FindWindow(NULL,"Dialog");
if(hWnd && IsWindow(hWnd))
{
      ::PostMessage(hWnd,WM_CLOSE,0,0);
}
  相关解决方案