求教:普通C++类怎么和MFC交互?

lzhongsh 2005-05-11 08:20:19
我在写一个小型语法分析器。开始时,我是用标准C++写控制台应用程序,每当遇到一个语法错误,就用cout向屏幕输出错误信息。
现在我想做成windows窗体版本,希望每遇到一个语法错误,就在一个windows窗体添加一条错误信息,我已经写了一个函数,专门在窗体上添加一条错误信息,可是问题是,每当解析出一个错误时,怎么调用这个函数来写信息?
...全文
243 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaopeng6422 2005-05-12
  • 打赏
  • 举报
回复
可以导入啊
通过插入资源啊!!
tudou614 2005-05-12
  • 打赏
  • 举报
回复
顶下先,最近也在向MFC转
alaisalaix 2005-05-12
  • 打赏
  • 举报
回复
严重同意 krh2001(边城浪子) 的做法
其实这是设计模式中的一种模式的体现:facade外观模式

不仅要在自己的设计编码中灵活使用模式,也可以在别人的代码中体会模式的应用
建议大家一定要学习设计模式,挺有用的
theCFan 2005-05-11
  • 打赏
  • 举报
回复
可以在你的普通c++函数里面
HWND pRes = NULL,pTemp = NULL;
CWnd *pEdit = NULL;
CWinApp *pApp = NULL;
pApp = AfxGetApp();
pRes = FindWindow(NULL,"Dialog");
pEdit = CWnd::FromHandle(::FindWindowEx(pRes,NULL,"Edit",NULL));
pEdit->SetWindowText("haha");
pEdit->UpdateWindow();
实现在对话框中的edit控件中显示信息,
其他地方应该类似
jerry 2005-05-11
  • 打赏
  • 举报
回复
定义一个全局的 LOG 类对象. LOG 负责将信息输出到指定的地方.

你的语法分析器可以调用 LOG 对象的某个方法来输出消息:

class CLog
{
public:
CLog():m_pEdit(0) {}
AddMessage(LPCTSTR msg)
{
p->SetSel(-1,-1);
p->ReplaceSel(msg);
p->SetSel(-1,-1);
}
SetOutEditCtrl(CEdit* p) { m_pEdit = p; }
private:
CEdit* m_pEdit;
};



// 定义一全局 LOG

CLog g_log;


// 创建好输出窗口时, 设置好LOG的 输出 EDIT 控件:

extern CLog g_log; // 引用全局对象

int COutputWnd::OnCreate(...)
{
...
m_edit.Create(...); // 显示消息的控件

g_log.SetOutEdit(&m_edit);
}


#include "log.h"
extern CLog g_log; // 引用
/////////////////////
// 输出消息:

void CXXX::Prase(..)
{
...
g_log.AddMessage("语法错误! 未声明的变量.\r\n");
....

}

kkcy 2005-05-11
  • 打赏
  • 举报
回复
先顶一个!我之前也一度为这个问题苦恼,后来就用了很弱的一招。把自己的c++类作为对话框的内部成员,然后直接调用全局函数AfxGetMainWnd(),得到主框架句柄后,再调用GetActiveView()得到活动视图的指针,最后再用该指针在窗口中执行输出。我的程序是为了在算法执行过程中动态输出中间结果,哪位高手有好办法,诚请赐教!
theCFan 2005-05-11
  • 打赏
  • 举报
回复
?如果可以的话就实现一个全局的错误函数,不是直接调用吗?
当然如果要这么做的话,要传递窗口句柄给该函数。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧