学习COM的朋友请来光顾以下,提点意见,谈谈感受,拿拿分 我看过《COM原理及应用》,没看完,后面也没怎样看明白,就没看了,现在使用ATL编写COM,也不是太难。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现在还是一头雾水。就像没有项目经验的人在看《设计模式》的感觉是一样的。理解了COM,那么你用ATL会更加顺手的,ATL中有些技法在COM本质论里被刨出根出来了。多读几遍,会有不一样的收获的。我现在重读第二遍,以前不理解的地方又有新的收获了。 记得有一本叫《com/dcom编程指南的》我感觉还可以。看了三便后有点入门 恰好兄弟我刚找到一本不错的书,“Visual C++实践与提高__COM和COM+篇”。感觉很不错,从标准C++编程方式很自然地过渡到COM,而且深入内幕,COM API、MFC、ATL都有较深入的讲解,体系也不错,可以自由跳过一些章节(有提示),是中国铁道出版社出的。 我的建议是先看《深度探索C++对象模型》(如果你对C++了解得很透可以略过,不过你要是真的认为你是C++高手也许看了这本书你就不这么想了)。然后看《COM本质论》的前两章。接着看《COM技术内幕》(Inside COM)然后会来看COM本质论的其余部分。最后可以学学ATL,可以看看《深度解析ATL》潘爱民译!当然了,很对地方可以交叉进行。还有这不全是我的建议!~!~是侯捷先生说的,虽然有推荐自己翻译作品的嫌疑,但还是有道理的况且,这几本书都是经典之作。(好书无价,别吝惜Money) 我以前就是看了《com/dcom编程指南的》这本书,书不是很好,而且我自认自己的智力也不是很好,所以看了好几遍才看明白,我觉得要学好COM不能光借用工具,什么MFC ATL BasCtrl先都别用,纯粹自己写,类厂、注册函数什么都自己写,这样肯定能理解的深,好了以上是我的一些看法,请方家指正。 我也是看的一头雾水,com这个东西的学习周期比较长吧 《COM技术内幕》很简单的,看起来比较容易,但是我不知道《深度探索C++对象模型》的哪些内容对理解COM有帮助,如果只是多重继承的vtable内存结构的话,那么只看前者基本上就够了,不知道哪位比较了解后者对学习COM上的帮助 《COM技术内幕》很简单的,看起来比较容易,但是我不知道《深度探索C++对象模型》的哪些内容对理解COM有帮助,如果只是多重继承的vtable内存结构的话,那么只看前者基本上就够了,不知道哪位比较了解后者对学习COM上的帮助 我看了《com/dcom编程指南》,感觉不怎么样,看来得选本经典得看看。先从《COM原理及应用》着手。另外我觉得com这东西需要使用才能入门,否则看得时候有些明白但很费劲,过了两天就全忘了。 我只能找到《com/dcom编程指南》,和另外一本叫《com和com+的入门与提高》的书看,脑袋都看大了。 Don't forget COM/DCOM specification, which is better than most books. 我觉得需要多动手,书要多读几遍,第一次不理解没有关系,等到水到渠成自然会理解。不过好难等哦我觉得先看INSIDE COM比先看COM本质论要好 我正在学用ATL写控件,感觉如果用VC的话,还不如封装成一个类。除非用别的开发工具,否则真是得不偿失! TMD,我被一个 nmake 给卡壳了。 看ATL开发指南(2th)6天,现云里雾里。但这个星期就要拿出东东,钱不好赚啊。 拿一本书,最好是有水平的书,我是拿《COM原理与应用》,看不明白,没关系,就是往下看,从头看一遍,理解多少是多少,不要叫劲,主要目的是要对你所要学的东东有个模糊的概念,这样就可以了,刚开始不要奢求太多,然后就开始做,不明白再看书,再做,再看书,不知不觉你就会了,当然这是很枯燥的,但坚持下去,你就会有很大收获。此方法是我一直采用的方法,不单单是COM,我学其他的东东,也是采用的这个方法,自觉得还是不错,说出来让大家参考。 现在正在做《COM原理及应用》,他的第二章DictComp的DeleteWord方法算法有错void CDictionary::DeleteWord(String word){ char *pWord = _com_util::ConvertBSTRToString(word); char *pUpperWord = strupr(pWord); for (int i = 0; i < m_nWordNumber; i++) { char *tmpWord = strupr(m_Data[i].wordForLang1); if (strcmp(tmpWord, pWord) == 0) { for(int j = i + 1; j < m_nWordNumber; j++) { strcpy( m_Data[j].wordForLang1, m_Data[j + 1].wordForLang1); strcpy( m_Data[j].wordForLang2, m_Data[j + 1].wordForLang2); } m_nWordNumber ++ ; break; } } delete pWord;}应为:void CDictionary::DeleteWord(String word){ char *pWord = _com_util::ConvertBSTRToString(word); char *pUpperWord = strupr(pWord); for (int i = 0; i < m_nWordNumber; i++) { char *tmpWord = strupr(m_Data[i].wordForLang1); if (strcmp(tmpWord, pWord) == 0) { for(int j = i + 1; j < m_nWordNumber; j++) { strcpy( m_Data[j-1].wordForLang1, m_Data[j + 1].wordForLang1); strcpy( m_Data[j-1].wordForLang2, m_Data[j + 1].wordForLang2); } m_nWordNumber -- ; break; } } delete pWord;}不知我是否正确,请指正 我读过《com/dcom编程指南》,正在看《COM原理和应用》,感觉前者没有后者深入,后者也更容易理解一些。我觉得仅仅是编写一些COM组件,用Wizard好像不难,但是要深入一点,比方结构化储存的原理,仅仅知道一些皮毛是不够的 学习COM只是一种技术,最重要的是大家得学习方法,我是帖子的开辟者,我希望大家把自己好的方法共享出来,让我们象在一个大家庭一样讨论学习,在此得很多大吓,走过很长的路才发展成今天的样子,希望把你的经验贡献出来,让后来者更容易学习,少走弯路 com两个月,感觉可以用ATL做东西了。主要书籍:康亩本质论。康木原理与应用。不求甚解,边做边学 看了《COM的原理与应用》,我还是只能用模板写ATL,真不知道哪天才能自己动手弄个COM出来…… 《INSIDE COM》确切比《COM本质论》容易入门多了。 我看了一本叫《COM/DCOM技术内幕》的书,看了比没看还糊涂。 问个问题啊!怎么把CString直接转化成OLECHAR*?我现在用的方法、、、、我觉得很笨 _com_util::ConvertStringToBSTR(s.GetBuffer(s.GetLength()))不知道可不可以,^_^ 刚学COM能有更多的声音吗? 《INSIDE COM》确切比《COM本质论》容易入门多了。 是呀,我看了《INSIDE COM》两遍,再看《COM本质论》,哇,进度神速 我是初学者,现在正在看潘爱民的那本com的原理和应用;感觉第一部分还能理解第二部分就无法看夏去了;原理太难了,不知道是不是边学边用的效果是不是会好一些! vc隐藏鼠标 Win套接字建立顺序 怎么样让dll自动下载到system32? 几个关于HTTP协议的问题,高分请教高手 请问各位,调试时怎么跟踪进入MFC源代码中? InstallShield6 安装问题 如何实现象autocad中那样的栅格和图形自动对齐栅格功能 DLL,求教 About stl 一看简单,但我看复杂的问题,uup有分!! TC中的文件操作 请问MFC ODBC 如何调用有输入输出函数的存贮过程?
就像没有项目经验的人在看《设计模式》的感觉是一样的。
理解了COM,那么你用ATL会更加顺手的,ATL中有些技法在COM本质论里被刨出根出来了。
多读几遍,会有不一样的收获的。我现在重读第二遍,以前不理解的地方又有新的收获了。
当然了,很对地方可以交叉进行。还有这不全是我的建议!~!~是侯捷先生说的,虽然有推荐自己翻译作品的嫌疑,但还是有道理的况且,这几本书都是经典之作。(好书无价,别吝惜Money)
先从《COM原理及应用》着手。
另外我觉得com这东西需要使用才能入门,否则看得时候有些明白但很费劲,过了两天就全忘了。
我觉得先看INSIDE COM比先看COM本质论要好
void CDictionary::DeleteWord(String word)
{
char *pWord = _com_util::ConvertBSTRToString(word);
char *pUpperWord = strupr(pWord);
for (int i = 0; i < m_nWordNumber; i++)
{
char *tmpWord = strupr(m_Data[i].wordForLang1);
if (strcmp(tmpWord, pWord) == 0) {
for(int j = i + 1; j < m_nWordNumber; j++) {
strcpy( m_Data[j].wordForLang1, m_Data[j + 1].wordForLang1);
strcpy( m_Data[j].wordForLang2, m_Data[j + 1].wordForLang2);
}
m_nWordNumber ++ ;
break;
}
}
delete pWord;
}
应为:
void CDictionary::DeleteWord(String word)
{
char *pWord = _com_util::ConvertBSTRToString(word);
char *pUpperWord = strupr(pWord);
for (int i = 0; i < m_nWordNumber; i++)
{
char *tmpWord = strupr(m_Data[i].wordForLang1);
if (strcmp(tmpWord, pWord) == 0) {
for(int j = i + 1; j < m_nWordNumber; j++) {
strcpy( m_Data[j-1].wordForLang1, m_Data[j + 1].wordForLang1);
strcpy( m_Data[j-1].wordForLang2, m_Data[j + 1].wordForLang2);
}
m_nWordNumber -- ;
break;
}
}
delete pWord;
}不知我是否正确,请指正
我觉得仅仅是编写一些COM组件,用Wizard好像不难,但是要深入一点,比方结构化储存的原理,仅仅知道一些皮毛是不够的
主要书籍:康亩本质论。康木原理与应用。
不求甚解,边做边学
不知道可不可以,^_^ 刚学COM
能有更多的声音吗?
第二部分就无法看夏去了;原理太难了,不知道是不是边学边用的效果是不是会好
一些!