Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368124
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:38:51

mrzdp:amok,好久没联系了,近来可好?
(发表于2005-11-11 12:48:00)

aMok:mrzdp兄,好久无见了,我还是一个样,累,现在手头上还有两个小工程,15号就要交一个,赶得不得了。以前vccode.com的朋友我联系得最多的是WuCountry,我常去他的blog。
(发表于2005-11-12 8:04:00)

superdai:感谢你的奉献。
(发表于2005-11-14 9:53:00)

aMok:superdai兄不用谢,你肯用它就是对我最好的回报。
(发表于2005-11-14 13:15:00)

Vegeta:UE可以高亮显示,但却没法儿输出成HTM格式,希望你能作出这种功能,GOOD LUCK!
(发表于2005-11-15 15:54:00)

tohjs:在VCCODE上见过aMok的作品,可是那里现在怎么上不去了呢?
(发表于2005-11-16 17:06:00)

aMok:新发现了一个手误:
__forceinline UINT     CPfxEditHash::HashKey(LPCTSTR pKey, LONG cch) const
{
        UINT nHash = 0;
        // !!!应为PFX_EC_KEYWORD_MAP_MAX_KEYWORD_LEN
        LPCTSTR lp = pKey + min(cch, PFX_EC_KEYWORD_MAP_HASH_TABLE_SIZE);
        while (pKey < lp)
        {
nHash = (nHash << 5) + nHash + *pKey++;
        }
        return (nHash % PFX_EC_KEYWORD_MAP_HASH_TABLE_SIZE);
}
(发表于2005-11-16 19:15:00)

aMok:to Vegeta:
这个控件在处理形如HTML语法的文件时效果不是很理想,因为它没有“tag块”的意识,例如

body

”这里的“body”肯定被高亮显示。

要输出成HTML文件其实很容易做到,但当初设计时因为欠缺考虑,很多地方使用了“HDC hDC”等代码,
这是不好的地方。如果你真需要输出成其他文件,我建议你这样做:

1)定义一个接口IPfxEditDC
class IPfxEditDC
{
    virtual void ExtTextOut(...) = 0; // 省参数
    virtual void SetTextColor(...) = 0;
    virtual void MoveTo(...) = 0;
    ...etc
};

2)将CPfxEditView中的绘制函数与DC有关的参数改成IPfxEditDC* pDC,例如:
void DrawPlainText(CDC* pdcSrc, CDC* pdcMem, CPfxEditViewPaintContext& pc)
改成
void DrawPlainText(IPfxEditDC* pdcSrc, IPfxEditDC* pdcMem, CPfxEditViewPaintContext& pc)

3)实现IPfxEditDC的不同版本:
屏幕输出的就可以简单的wrap一下CDC的
class CMyDC : public IPfxEditDC
{
    CDC* m_pDC;
    virtual void ExtTextOut(...) { m_pDC->ExtTextOut(...); }
    virtual void SetTextColor(...) { m_pDC->SetTextColor(...); }
    ...etc
}
(发表于2005-11-16 19:18:00)

aMok:to Vegeta:
输出成HTML或PDF版本的就各自实现
class CMyHTMDC : public IPfxEditDC
{
    CArchive m_ar;
    virtual void ExtTextOut(LPCTSTR pszText, ...) { m_ar << pszText; } // 写入到文件
    virtual void SetTextColor(COLORREF clr) { m_ar << _T("    ...etc...
}

CMyPDFDC : public IPfxEditDC
{
    ...
}

因为可以通过IPfxEditDC来拦截CPfxEditView的输出,你甚至可以知道它的输出坐标,所以还能输出成PDF文件。

(发表于2005-11-16 19:20:00)

Vegeta:3ks
(发表于2005-11-18 11:48:00)

VC70新手:原来amok的真名是陈建初,这个在vccode上没见过
(发表于2005-12-5 7:25:00)

aMok:haha, VC70很高兴又见到你^_^
(发表于2005-12-5 13:56:00)

VC70新手:呵呵,好久不见了。别拼得太狠,注意身体
(发表于2005-12-6 14:45:00)

漂流:我一直用Editplus用得很好,除了编mak文件浪费时间,一直用得很好,aMok要加倍努力。
(发表于2005-12-22 23:04:00)

..........................................................................
--------------------next---------------------

阅读(155) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~