Jiangsheng的CSDN Digest(March 4, 2006)(7)

王朝other·作者佚名  2006-03-10
窄屏简体版  字體: |||超大  

CListCtrl中的CCheckBox问题(VC/MFC 界面 )

我在CListCtrl中添加了CCheckBox,现在想选中某一行的Checkbox的同时,将该行的数据立刻添加到数据库中,取消选中时,将该行数据立刻从数据库中删除。这个功能需要在CListCtrl的那个事件中实现,如何判断我点击的时那一行对应的checkbox

void CTestForm::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult)

...{

NMITEMACTIVATE* pActivate = (NMITEMACTIVATE*)pNMHDR ;

LVHITTESTINFO oInfo ;

oInfo.pt = pActivate->ptAction ;

m_List.HitTest(&oInfo) ;

if(oInfo.flags == LVHT_ONITEMSTATEICON)

AfxMessageBox("State") ;

*pResult = 0;

}

void CCBTestDlg::OnKeydownList1(NMHDR* pNMHDR, LRESULT* pResult)

...{

LV_KEYDOWN* pLVKeyDow = (LV_KEYDOWN*)pNMHDR;

// please insert code here...

if(pLVKeyDow->wVKey == VK_SPACE)

AfxMessageBox("State") ;

*pResult = 0;

}

如何隐藏当前打开ie网页窗口 (VB 基础类 )

http://www.codeproject.com/shell/AutomateShellWindow.asp

http://blog.joycode.com/jiangsheng/archive/2005/10/20/65489.aspx

IE控件右边的Scroll问题(VC/MFC ATL/ActiveX/COM )

我在程序中用了一个IE控件用于显示Html格式的数据,显示通过IHTMLDocument2的IPersistStreamInit接口的Load方法实现。为了能取得IHTMLDocument2,在程序初始化时,我会调用Navigate2("about:blank", ...)来初始化IE的文档对象,这时麻烦来了,右边会出现一个灰掉的ScrollBar,我想不让这个灰掉的ScrollBar显示出来(只有当ScrollBar有效时才显示),

http://support.microsoft.com/kb/324419

ActiveX在网页中显示的问题(VC/MFC ATL/ActiveX/COM )

自己写的ActiveX控件,使用,<OBJECT CLASSID==''>时,显示正常.

使用Javascript:

new ActiveXObject(ProgID),控件方法可以执行,但是不能显示控件.

var myObjectElement = document.createElement('<object id="elementid"

classid="clsid:098F2470-BAE0-11CD-B579-08002B30BFEB"></object>');

var myParamElement1 = document.createElement('<PARAM NAME=movie

value="example.avi">');

var myParamElement2 = document.createElement('<Param name=quality value=high>');

var myParamElement3 = document.createElement('<Param name=bgcolor value=#FFFFFF>');

myObjectElement.appendChild(myParamElement1);

myObjectElement.appendChild(myParamElement2);

myObjectElement.appendChild(myParamElement3);

embedControlLocation.appendChild(myObjectElement);

在ClistCtrl中用鼠标框选多行的事件是什么?(就像在资源管理器中点左键或右键拖动鼠标,选中多行) (VC/MFC 基础类 )

LVN_MARQUEEBEGIN

怎样得到构成一个函数的所有指令所占内存的大小(VC/MFC 硬件/系统)

举例说明:

int __stdcall Addup(int n)

...{

int sum = 0;

int i = n;

for(i = n; i >= 0; i--)

...{

sum += i;

}

return sum;

}

void *p = Addup;

现在我想知道从“p”开始,在这以后多少字节是函数“Addup”的指令,怎样知道这部分内存的大小

把Addup函数声明为static的,紧接其后再声明一个static的函数,名字自定,这个函数体为空即可。然后用后面的函数名减去前面的函数名,即地址相关,就可得前面函数所占的代码空间。

http://blog.csdn.net/jiangsheng/archive/2003/11/09/3789.aspx

如果在一个线程中,让线程休眠,结果会怎样呢?(VC/MFC 进程/线程/DLL )

如果有与休眠并行的操作,比如下面程序中对ret赋值,那么这个并行的操作在什么时候被执行呢?而且,执行SuspendThread后,线程是立刻进入休眠的么?

如果这么做(在线程内休眠自己,在线程外重新启动),有没有什么副作用?

谢谢各位。

#include <windows.h>

#include <iostream>

using std::cin;

using std::cout;

using std::endl;

DWORD ret = -1;

HANDLE threadHandle = 0;

DWORD WINAPI ThreadProc(LPVOID lpParam)

...{

::Sleep(500);

cout<<"123"<<endl;

DWORD ret = ::SuspendThread(threadHandle);//程序运行到这里时,会休眠自己,那么ret会在什么时候被赋值呢?休眠前还是休眠后?为什么?

while(1)

cout<<"abc"<<endl;

return 0;

}

int _tmain(int argc, _TCHAR* argv[])

...{

DWORD a;

threadHandle = ::CreateThread(NULL, 0, ThreadProc, 0, 0, &a);

::Sleep(1000);

::Sleep(1000);

a = ::ResumeThread(threadHandle);

::Sleep(1000);

return 0;

}

SuspendThread在休眠后才返回。你看看汇编码就知道了

Calling SuspendThread on a thread that owns a synchronization object, such as a mutex or critical section, can lead to a deadlock if the calling thread tries to obtain a synchronization object owned by a suspended thread. To avoid this situation, a thread within an application that is not a debugger should signal the other thread to suspend itself.

如果没有同步对象的存在,是不是这样就是安全的?

还有个问题,线程池一般是如何实现的?我的想法是起一系列的休眠线程,然后在需要用到时替换内部的运行函数,这个函数运行完后,线程将设标志位标志回收,并自己休眠自己,不知道这样是否可行

1 hard to say. deadlock can occur in other conditional waitings

2 http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vcsample/html/vcsamCThreadPoolSample.asp

CppWebBrowser的Fresh与重复Navigate同一网址有啥区别(CppWebBrowser的Fresh与重复Navigate同一网址有啥区别)

Fresh can repost all form data.

点击网页中控键怎么与后台mfc程序交互(VC/MFC HTML/XML)

http://www.codeguru.com/cpp/i-n/ieprogram/article.php/c4399/

http://msdn.microsoft.com/workshop/browser/mshtml/tutorials/sink.asp

http://www.codeproject.com/miscctrl/luo31.asp

http://www.codeproject.com/shell/dlgdhtmlevents.asp

突然发现VS2005 的 devenv.exe 是在 Common7 目录下(.NET技术 C#)

既然 VS2005 号称 8.0,那么应当是在Common8 目录下才对的啊

It's a long story. I don't know all the gory details, but I understand the problem is due to some component authoring decisions made in the VS 2002 timeframe. Not because of backwards compatibility, but for side-by-side correctness, we're stuck with them now.

--Paul Harrington, Visual Studio Platform Team, Microsoft

如何在windows media player里控制伴唱,原唱 (专题开发/技术/项目 多媒体/流媒体开发 )

First, enable multichannel support (http://www.microsoft.com/windowsxp/using/windowsmediaplayer/expert/bridgman_03january07.mspx)

Second, set the player.settings.balance property. The value zero indicates that the audio plays at equal volume on both left and right channels. A value of –100 indicates that audio plays only on the left channel. A value of 100 indicates that audio plays only on the right channel.

Reference:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmplay10/mmp_sdk/settingsobject.asp

编程实现WMV/ASF文件用MMS或HTTP协议通过一个端口发送出去 (专题开发/技术/项目 多媒体/流媒体开发)

我想实现对WMV/ASF本地文件的广播,能编程实现吗

可以编程控制Windows Media Encoder(IWMEncPushDistribution ),或者自己用Windows Media Format的IWMWriterNetworkSink 接口创建一个本地点播点

http://msdn.microsoft.com/windowsmedia/downloads/default.aspx 下SDK

http://msdn.microsoft.com/library/en-us/wmform95/htm/sampleapplications.asp

The following samples are installed by default in C:\WMSDK\WMFSDK9\samples. The samples will not work unless the Windows Media Format SDK has been installed.

......

WMVNetWrite This console application shows how a Windows Media file is streamed across the Internet. The sample requires a port to be specified, and then the file can be played using a player.

如何通过IHTMLDocument2接口获取网页中的meta信息(VC/MFC HTML/XML )

HRESULT TBaseWebBrowserPageletCtrl::GetMetaCollection(IHTMLElementCollection** pCollec, IHTMLDocument2* pDocument)

...{

CComPtr <IDispatch > lDispatch;

CComQIPtr <IHTMLDocument2 > lDocument;

HRESULT lResult;

if (pDocument == NULL)

...{

if (!m_BrowserTree)

return E_FAIL;

lResult = m_BrowserTree- >get_Document(&lDispatch);

lDocument = lDispatch;

lDispatch = NULL;

ASSERT(SUCCEEDED(lResult) && lDocument);

if (FAILED(lResult) ¦ ¦ (lDocument == NULL))

return E_FAIL;

}

else

...{

lDocument = pDocument;

}

CComPtr <IHTMLElementCollection > lCollec;

lResult = lDocument- >get_all(&lCollec);

ASSERT(SUCCEEDED(lResult) && lCollec);

if (FAILED(lResult) ¦ ¦ (lCollec == NULL))

return E_FAIL;

lResult = lCollec- >tags(CComVariant( "META "), &lDispatch);

return lDispatch- >QueryInterface(pCollec);

}

HRESULT TBaseWebBrowserPageletCtrl::CheckMetaTags()

...{

CComQIPtr <IHTMLElementCollection > lCollec;

CComQIPtr <IHTMLMetaElement > lMetaElement;

CComPtr <IDispatch > lDispatch;

HRESULT lResult;

long lIndex = 0;

long lLength = 1;

lResult = GetMetaCollection(&lCollec);

if (SUCCEEDED(lResult) && lCollec)

...{

lResult = lCollec- >get_length(&lLength);

ASSERT(SUCCEEDED(lResult));

}

while (lIndex < lLength)

...{

if (lCollec)

...{

lResult = lCollec- >item(CComVariant(lIndex), CComVariant(), &lDispatch);

lMetaElement = lDispatch;

lDispatch = NULL;

ASSERT(SUCCEEDED(lResult) && lMetaElement);

}

if (SUCCEEDED(lResult) && lMetaElement)

...{

//

CComBSTR lName;

lResult = lMetaElement- >get_name(&lName);

if (SUCCEEDED(lResult)

&& lName

&& (!wcsicmp(CComBSTR(KEEBOO_PRODUCT_NAME), lName)

¦ ¦ !wcsicmp(CComBSTR(KEEBOO_COMPANY), lName)))

...{

CComBSTR lMetaContent;

lResult = lMetaElement- >get_content(&lMetaContent);

if (SUCCEEDED(lResult) && lMetaContent)

...{

if (!wcsicmp(L "no-stretch ", lMetaContent))

...{

m_bNoStretch = TRUE;

}

else if (!wcsicmp(L "no-cache ", lMetaContent))

...{

CComQIPtr <IPageletSink > lPageletSink(m_pControlSite);

if (lPageletSink)

...{

CComObject <TDeleteCacheEntryCallback >* lCallback;

CComQIPtr <IPageletDestroyCallback > lCBInterface;

CComObject <TDeleteCacheEntryCallback >::CreateInstance(&lCallback);

lCallback- >SetPage(getModel());

lCBInterface = lCallback;

lPageletSink- >SetDestroyCallback(lCallback);

}

}

else

...{

TModelPtr <TPropertyObjectModel > lProp;

TModelPtr <TContentModel > lContentModel;

if (!wcsicmp(L "online-reload ", lMetaContent))

...{

getModel()- >getContent(&lContentModel);

GetModelProperty <TContentModel >(lContentModel, T_CONTENT_NETWORK_PROPERTIES, &lProp, TRUE);

ASSERT(lProp);

if (lProp)

lProp- >putBooleanField( "online-reload ", true);

}

else if (!wcsicmp(L "online-flush ", lMetaContent))

...{

getModel()- >getContent(&lContentModel);

GetModelProperty <TContentModel >(lContentModel, T_CONTENT_NETWORK_PROPERTIES, &lProp, TRUE);

ASSERT(lProp);

if (lProp)

lProp- >putBooleanField( "online-flush ", true);

}

}

}

}

}

lIndex++;

}

return S_OK;

}

第一頁    上一頁    第7頁/共8頁    下一頁    最後頁
第01頁 第02頁 第03頁 第04頁 第05頁 第06頁 第07頁 第08頁 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航