VC++编程常见问题解答十五 问:如何增加视图中ActiveX控件的事件处理函数? 如果我在对话框中加入微软的网络浏览器,很容易通过类模板加入对事件的处理. 但我现在在视图中用m_pBrowser=new CWebBrowser2加入了网络浏览器,我该如何 对事件进行处理? 答:到www.vcdj.com(inet章节)去看看,有一篇文章名为"Building a Webbrowser in a Afternoon". 如下的代码也可能是你所需要的: #include // For AFX_EVENT def. BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo) { AFX_EVENT *pEvent = (AFX_EVENT *)pExtra; //If this is a control notification event. if (nCode == CN_EVENT) { // If we have information on this event. if (pEvent) { // Event DISPID is stored at pEvent->m_dispid // Event DISPPARAMS are stored at pEvent->m_pDispParams // Handle the event from here... } } return CWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo); } 问:如何创建一个动态的Tree控件? 我想创建一个动态的tree控件,就象弹出窗口一样,但它并不象想象中那么容易. A1:用CreateWindow(SDK)创建风格为WS_POPUP,WS_CAPTION和WS_TICKFRAME的窗口, 并作为父窗口. A2:创建一个包含Tree控件的对话框. 问:SDI程序开始时不打开文档? 我创建了一个SDI应用,但每次启动时它都会打开一个文档("untitled"), 如何不 让它打开该文档呢? 答:看看InitInstance函数中有没有关于OnFileNew的调用,去掉它即可. 问:List控件中整栏选择? 我在处理List控件时碰到了麻烦,我想创建一个ListView,来依据Tree控件的 选择 同时在ListView和ReportView中显示列表的信息.以下是相关的代码: // Set full line select ListView_SetExtendedListViewStyle(m_plstCustomers->GetSafeHwnd(), LVS_EX_FULLROWSELECT); 答:按如下方法处理: // -------------------- begin of snippet -------------------------------- bool CCommCtrlUtil32::ListCtrl_ModifyExtendedStyle(CListCtrl& p_rListCtrl, const DWORD p_dwStyleEx, const bool p_bAdd) { HWND t_hWnd = p_rListCtrl.GetSafeHwnd(); DWORD t_dwStyleEx = ListView_GetExtendedListViewStyle(t_hWnd); if(p_bAdd) { if(0 == (p_dwStyleEx & t_dwStyleEx)) { // add style t_dwStyleEx |= p_dwStyleEx; } } else { if(0 != (p_dwStyleEx & t_dwStyleEx)) { // remove style t_dwStyleEx &= ~p_dwStyleEx; } } ListView_SetExtendedListViewStyle(t_hWnd, t_dwStyleEx); return true; }