12/18/2003

Ask Mr JS

[url=http://expert.csdn.net/expert/Topicview2.asp?id=2562836] 如何访问 WebBrowser 控件中的XML源码[/url]
总结:注意使用IHtmlDocument::get_Script(唯一的一个方法@_@bb)就可以获得脚本的顶层对象,然后就可以用GetIdsOfNames开始遍历文档结构了

[url=http://expert.csdn.net/expert/Topicview2.asp?id=2560341]ActiveX控件上想添加一个工具栏[/url]
总结:另外一种方式是弹出工具栏,参见[url=http://support.microsoft.com/default.aspx?scid=kb;en-us;166193]Knowledge Base Q166193 SAMPLE: ColorFrm Demonstrates ActiveX Control with Popup Toolbar[/url]
[url=http://expert.csdn.net/expert/Topicview2.asp?id=2572992]如何把word菜单融入到应用程序中[/url]
总结:不光Word,支持ActiveDocument的都可以,比如Adobe Acrobat Reader
[url=http://expert.csdn.net/Expert/TopicView1.asp?id=2288266]怎么用VC修改任意网页中text文本框的值[/url]
总结:有了技术不要做坏事哟

12/17/2003

问题:Internet Explorer中的控件在可见之前没有被创建

Knowledge Base
Q195188 PRB: ActiveX Control Window Is Not Created Until Visible in Internet Explorer
使用知识库里面的方法
// CMyControl is derived from CComControl
STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
if (pClientSite)
{
RECT rc = {0,0,0,0};
// Don't have access to the container's window so just use the
// desktop. Window will be resized correctly during in-place
// activation.
HWND hWnd = CreateControlWindow(::GetDesktopWindow(), rc);
_ASSERT (hWnd);
}
return IOleObjectImpl::SetClientSite (pClientSite);
}
在Windows XP中,可以在任务栏上看到控件的窗口,很是不雅观
解决的方法是尽可能用GetForegroundWindow替代GetDesktopWindow(GetForegroundWindow有时返回NULL)

12/16/2003

Ask Mr JS

[url=http://community.csdn.net/expert/Topicview2.asp?id=2542812]怎样修改theApp.m_pszAppName[/url]总结:可以参考微软知识库Q154744[url=http://community.csdn.net/expert/Topicview2.asp?id=1988055]BBS灌水机[/url]总结:太复杂了一点,而且依赖于网页结构。后来我写了个支持脚本的,参见[url=http://www.csdn.net/develop/author/netauthor/jiangsheng/]我的专栏[/url]
[url=http://community.csdn.net/expert/Topicview2.asp?id=2521954]获得设备安装和卸载的通知,控件访问所在网页的DHTML文档对象模型[/url]总结:抄微软的代码,没什么特别的[url=http://community.csdn.net/expert/Topicview2.asp?id=2568865]编译时报告线程函数类型错误[/url]总结:非静态成员函数具有隐含this指针参数,会造成这个编译错误。解决方案是 m_pThreadWrite=AfxBeginThread(ThreadProc,(LPVOID)this);
UINT CMyClass::ThreadProc(LPVOID lp){ CMicrophoneInput* pInput=(CMicrophoneInput*)lp; return pInput->Run();}UINT CMyClass::Run(){ HRESULT hr; if(!InitInstance()){ TRACE("InitInstance failed\r\n"); return ExitInstance(); } while(!IsKilling()){ //do something } return ExitInstance();}BOOL CMyClass::InitInstance(){ m_eventKill.ResetEvent(); m_eventDead.ResetEvent(); //do something return TRUE}UINT CMyClass::ExitInstance(){ //do something m_eventDead.SetEvent(); return 0;}
BOOL CMyClass::IsDead(){ return WaitForSingleObject(m_eventDead,0)==WAIT_OBJECT_0;}BOOL CMyClass::IsKilling(){ return WaitForSingleObject(m_eventKill,0)==WAIT_OBJECT_0;}在外部可以这样终止线程 //check if dead if(!IsDead()&&m_pThreadWrite!=NULL){ m_eventKill.SetEvent(); WaitForSingleObject(m_eventDead,INFINITE); m_pThreadWrite=NULL; }

12/12/2003

Ask Mr JS

[url=http://community.csdn.net/expert/Topicview2.asp?id=2535830]关于DAO和多线程的问题 [/url]总结:放弃希望吧,你们这些使用过时技术的人[url=http://community.csdn.net/expert/Topicview2.asp?id=2532086]转换字符串到指定代码页 [/url][url=http://community.csdn.net/expert/Topicview2.asp?id=2554149]怎么实现JIS内码到SJIS的转换 [/url]总结:IE的国际化做的是我见过得最好的,为什么不借来用用呢 [url=http://community.csdn.net/expert/Topicview2.asp?2554403.xml]ActiveX控件中访问所在页面的指定元素的属性[/url][url=http://community.csdn.net/expert/Topicview2.asp?id=2545179] CListView是如此封装CLisCtrl的呢?[/url]总结:不仅派生类的指针可以转化为基类指针,基类指针也可以转化为派生类指针,只要派生类没有数据成员和虚函数。CEdit,CListCtrl,CTreeCtrl都是这样派生的,所以CEditView,CListVew,CTreeView都可以这么操作。 [url=http://community.csdn.net/expert/Topicview2.asp?id=2545686]ADO中使用带参数的SQL和传递参数 [/url]总结:其实存储过程比较好用,用法也类似

12/08/2003

DHTML应用于windows Applicatoin界面

[url=http://community.csdn.net/Expert/TopicView1.asp?id=2408994]DHTML应用于windows Applicatoin界面的讨论![/url]入门[url=http://www.csdn.net/develop/read_article.asp?id=9408]在对话框中使用网页输入数据[/url][url=http://www.csdn.net/develop/read_article.asp?id=14752]如何: 通过HTML文档对象模型访问文档中的ActiveX控件的属性[/url][url=http://www.csdn.net/develop/read_article.asp?id=18998]浏览器集成教学 在你的应用程序中集成WebBrowser控件[/url][url=http://www.csdn.net/develop/read_article.asp?id=19627]浏览器集成教学 在你的应用程序中集成WebBrowser控件[/url][url=http://www.csdn.net/develop/read_article.asp?id=20439]关于MSHTML [/url][url=http://www.csdn.net/develop/read_article.asp?id=21702]浏览器集成教学--脚本化浏览器[/url]

12/07/2003

ActiveX控件访问所在网页的DHTML文档对象模型(MFC)


void CICWXPlayerCtrl::SetHolderID(CICWXPlayerWindowHolder::enumHolderIndex iHolderIndex,LPCTSTR lpszElementID)
{
IOleClientSite* pClientSite=GetClientSite();
do{
if(pClientSite==NULL)break;
CComQIPtr pISP(pClientSite);
if(pISP==NULL)break;
CComPtr pIWebBrowser2;
pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
(void **)&pIWebBrowser2);
if(pIWebBrowser2==NULL)break;
CComPtr spDocument;
pIWebBrowser2->get_Document(&spDocument);
CComQIPtr pIHTMLDocument2(spDocument);
if(pIHTMLDocument2==NULL)break;
CComPtr pHTMLElementCollection;
pIHTMLDocument2->get_all(&pHTMLElementCollection);
if(pHTMLElementCollection==NULL)break;
COleVariant varName(lpszElementID,VT_BSTR);
COleVariant varindex;

CComPtr spElement;
pHTMLElementCollection->item(varName,varindex,&spElement);
if(spElement==NULL)break;
//is it an Iframe?
CComQIPtr pFrame(spElement);
if(pFrame){
switch(iHolderIndex){
case CICWXPlayerWindowHolder::WebHolder:
case CICWXPlayerWindowHolder::TextHolder:
m_holders[iHolderIndex].SetTarget(spElement);
break;
}
}
CComQIPtr pObjectElement(spElement);
if(pObjectElement==NULL)break;
CComPtr spObject;
pObjectElement->get_object(&spObject);
m_holders[iHolderIndex].SetTarget(spObject);
}
while(FALSE);
}

12/04/2003

Ask Mr JS

Ask Mr JS控件找不到容器的窗口 [http://search.csdn.net/Expert/topic/2518/2518945.xml]
总结:其实并不是写ActiveX就不能用WINAPI
to be continued...

12/01/2003

Ask Mr JS

今天心血来潮,整理了一下上个月在CSDN得分的问题我参与的帖子太多,整理起来有难度,所以只整理结了的贴子
希望把这个习惯保留下去[url=http://community.csdn.net/Expert/TopicView2.asp?id=2501675]为什么一按Ctrl+Alt + DEL后退回到在桌面上画的字就消失了呢[/url]总结:重画时被擦掉了[url=http://community.csdn.net/Expert/TopicView2.asp?id=2497461]多采集卡环境下用DirectX SDK中的AMCap示例无法切换使用的硬件[/url]总结:驱动的问题总是很难检查出来的[url=http://community.csdn.net/Expert/TopicView2.asp?id=2497558]IPicture显示图片时有内存泄漏[/url]总结:分配内存和获得COM对象接口指针之后记得要释放[url=http://community.csdn.net/Expert/TopicView2.asp?id=2498143]缓冲区的同步[/url]总结:最好异步使用以提高性能,同步的话记得要加锁[url=http://community.csdn.net/Expert/TopicView2.asp?id=2406640]高效的屏幕截取方法[/url]总结:只能看情况了,要质量就不能要低带宽[url=http://community.csdn.net/Expert/TopicView2.asp?id=2465634]Shell Namespace Extension Example[/url]总结:有必要扩展windows的shell么?要知道这会降低windows的性能[url=http://community.csdn.net/Expert/TopicView2.asp?id=2487688]分析网页和自动提交网页表单[/url]总结:经常被提出的问题,但是网页千奇百怪,要写个通用的不容易[url=http://community.csdn.net/Expert/TopicView2.asp?id=2399653]两幅BMP 图像进行比较[/url]总结:异或,更好的办法是用MPEG等算法[url=http://community.csdn.net/Expert/TopicView2.asp?id=2463663]实现文件夹的缩略图[/url]总结:见我的CSDN专栏文章。实际上那篇文章没什么,缩略浏览的技术核心是如何将图象进行格式转换和压缩存储,以及缩略图的缓冲。[url=http://community.csdn.net/Expert/TopicView2.asp?id=2429877]从vc工程生成类关系图[/url]总结:Visio很不错的,建议买一套[url=http://community.csdn.net/expert/TopicView2.asp?id=2465941]处理CDialogbar对象中控件的通知[/url]总结:也是问了很多遍的问题,不知道微软在MFC6中为什么对CDialogbar的处理和CDialog的处理不一样[url=http://community.csdn.net/Expert/TopicView2.asp?id=2481697]黑白的内存DC[/url]总结:同样是问了很多遍的问题,不知道为什么这么多人抄示例代码的时候抄漏一两行[url=http://community.csdn.net/Expert/TopicView2.asp?id=2379164]启动新的IE窗口时,隐藏菜单和控件[/url]总结:IWebBrowser2接口提供了这个功能,只需要获得创建的窗口的这个接口而已[url=http://community.csdn.net/Expert/TopicView2.asp?id=2465834]两个类之间如何访问[/url]总结:C++是VC的基础[url=http://community.csdn.net/Expert/TopicView2.asp?id=2464391]如何调用网页中Script中的函数?[/url]总结:虽然答案很简单,但是其他人的回答也介绍了脚本如何"发现"对象的属性和方法,调用默认属性/方法,根据名字调用方法和访问网页中的脚本[url=http://community.csdn.net/Expert/TopicView2.asp?id=2355813]数据库中的表保存为一个Excel文件[/url]总结:介绍了用DAO和自动化访问Excel[url=http://community.csdn.net/Expert/TopicView2.asp?id=2270225]获得DC中的位图数据[/url]总结:还是问了很多遍的问题,上面那个高效录制屏幕的基础[url=http://community.csdn.net/Expert/TopicView2.asp?id=2465752]拖拉窗口时只显示边框[/url]总结:效率就是这么提高的[url=http://community.csdn.net/Expert/TopicView2.asp?id=2363440]VC编辑文件时突然报告文件不存在,是否创建[/url]总结:VC的临时文件机制和病毒防火墙的隔离机制之间发生冲突。编译大工程时VC非法操作也是这个原因[url=http://community.csdn.net/Expert/TopicView2.asp?id=2334466]根据URL,从IE缓存里读出内容[/url]总结:缓存浏览器?[url=http://community.csdn.net/Expert/TopicView2.asp?id=2400520]控件中使用控件[/url]总结:用这种方法在控件中创建对话框,可以集成其他控件,以及处理它们的事件。[url=http://community.csdn.net/Expert/TopicView2.asp?id=2426826]读当前计算机的DNS名,但,GetComputerNameEx调用出错[/url]总结:记得多看MSDN中的函数说明[url=http://community.csdn.net/Expert/TopicView2.asp?id=2405317]win2000下的进程隐藏[/url]总结:不是很正当的功能需要不是很正统的方法[url=http://community.csdn.net/Expert/TopicView2.asp?id=2227425]捕获DHTML中脚本动态创建的对象的事件时出现问题[/url]总结:微软的IE有待改进[url=http://community.csdn.net/Expert/TopicView2.asp?id=2250244]编程访问获取本地策略中的系统安全/密码/帐号策略[/url]总结:WMI这个东东真好用[url=http://community.csdn.net/Expert/TopicView2.asp?id=2430758]编程修改链接的目标时内存泄漏[/url]总结:同上面的泄漏问题,这回是字符串没释放[url=http://community.csdn.net/Expert/TopicView2.asp?id=2431944]24位的RGB转成16位的RGB[/url]总结:什么时候DirectX才支持这个转化啊,最好用硬件来做比较快[url=http://community.csdn.net/Expert/TopicView2.asp?id=2442983]派生类对于基类的CRuntimeClass验证失败[/url]总结:记得编译的时候使用同一个版本的MFC库文件[url=http://community.csdn.net/Expert/TopicView2.asp?id=2438141]自动化接口要传递自定义的结构体类型的参数[/url]总结:还是传IDispatch借口好了[url=http://community.csdn.net/Expert/TopicView2.asp?id=2449479]在DirectShow中使用DivX5.0.5时的filter连接问题[/url]总结:DirectShow未熟[url=http://community.csdn.net/Expert/TopicView2.asp?id=2454122]去掉分割窗口的多余滚动条[/url]总结:总是要重复劳动[url=http://community.csdn.net/Expert/TopicView2.asp?id=2442149]编程调整工具栏的停靠位置[/url]总结:用程序来模拟鼠标的拖放操作[url=http://community.csdn.net/Expert/TopicView2.asp?id=2442463]在线程中调用其他线程创建的MFC对象指针时出现错误[/url]总结:MFC的局限