关于SetCapture和GetCapture

正常情况下,鼠标指针位于哪个窗口区域内,鼠标消息就自动发给哪个窗口。如果调用了SetCapture,之后无论鼠标的位置在哪,鼠标消息都发给指定的这个窗口,直到调用ReleaseCapture或者调用SetCapture设置另一个窗口为止。
很多时候,窗口或控件在鼠标按下后,需要知道鼠标移动和放开的情况,例如按钮在鼠标按下后会变为“按下”状态,鼠标移出按钮区域时“弹起”,所以按钮控件需要在鼠标按下时SetCapture,鼠标放开后ReleaseCapture。
GetCapture只是检查一下当前是哪个窗口捕获了鼠标,通常不需要调用。

CHtmlView, 页面载入快播播放器时, 窗口关闭后, 出现内存访问失败的问题

CHtmlView, 页面载入快播播放器时, 窗口关闭后, 出现内存访问失败的问题。

如果遇到关闭带网页的窗口后,崩溃的问题,可以

  1. 打开about:blank空白页
  2. ShowWindow(SW_HIDE);
  3. SetTimer设置定时器,在定时器里关掉窗口

———– 解决页面嵌入快播播放器里,崩溃的问题 2011年9月25日 17时48分03秒

开发环境: VS2003

CHttpFile 获取URL重定向后的文件名

CHttpFile 获取URL重定向后的文件名

// 获取URL重定向后的文件名,如果没有重定向,也返回下载文件名
CString GetFileNameFromRedirectUrl(CString strUrl)
{
	CInternetSession iSession; 
	CStdioFile* pFileDown = NULL; 
	CString sFileName; 
 
	pFileDown = iSession.OpenURL(strUrl, 1, INTERNET_FLAG_TRANSFER_BINARY); 
 
	CHttpFile* pHttpFile = (CHttpFile *)pFileDown; 
	HINTERNET hHttpFile = HINTERNET(*pHttpFile); 
 
	//获得重定向文件名 
	BOOL bResult = pHttpFile->QueryOption(INTERNET_OPTION_URL, sFileName);
	int flag=sFileName.ReverseFind('/');
	CString strFileName=sFileName.Mid(flag+1);
 
	return strFileName;
}

禁止WIN32系统关机

建立MFC程序,截获WM_QUERYENDSESSION消息,响应ON_WM_QUERYENDSESSION() ,消息响应函数对应为:   afx_msg BOOL OnQueryEndSession();  直接在该函数中return false 则拒绝了Windows的WM_QUERYENDSESSION的请求,Windows则无法正常软关机。(开始->关闭计算机->关机、注销、重启)。

Windows在关机的时候会向所有顶层窗口广播一个消息WM_QUERYENDSESSION,应该不是所有进程,而是已经注册窗口类的程序。所以控制台程序不接收WM_QUERYENDSESSION消息。