我有这个无模式MFC对话框,它嵌入了Internet Explorer Web浏览器控件.
控件直接来自CWnd
Visual Studio生成的ActiveX包装器,我将其映射到CDialog
仅使用a DDX_Control(pDX, IDC_EXPLORER, m_explorer);
.
我有2个问题.
作为无模式,我使用new/Create(),然后DestroyWindow()/ delete(在PostNcDestroy中)开始和停止对话.
当IE控件开始加载Flash视频(常规YouTube内容)时,麻烦就开始了:当一个人关闭,从而破坏对话框时,视频仍会加载!直到完全缓存.即使父对话框已通过PostNcDestroy并释放所有内存,Flash ActiveX线程仍会继续运行并继续运行.
该怎么办?你如何彻底"杀死"那个子网页控件及其所有线程?
Web浏览器控件覆盖对话框的整个区域.我无法拦截任何OnMouseMove()
- 在父对话框或Web浏览器映射类中!是什么赋予了?
谢谢!
"清理"
在PostNcDestroy()中"删除此" - 并且当然调用基本功能.应该更多吗?什么?对话框不应该优雅地照顾孩子吗?
我试图在Web控件上显式调用DestroyWindow,或者发送/发布他的消息,如WM_DESTROY,WM_CLOSE,甚至WM_QUIT - 但没有 - 同样的交易.
问题#2:
不,就像缩进一样,控件占用所有空间而且它位于顶部所以我猜任何鼠标动作都不会被传输'吼叫':)?但那为什么他自己的OnMouseMove不会被调用?因为它直接来自CWnd?我迷路了...
这个问题的代码让我思考
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
Run Code Online (Sandbox Code Playgroud)
我从不写if语句.断言就足够/你可以做的一切."早点崩溃,经常崩溃"
CodeComplete说明:
我不认为您通过更正无效输入值或跳过代码使应用程序更加健壮:
assert(value >= 0 ); //Precondition
assert(value <= 90); //Precondition
if(value < 0) //Just in case
value = 0;
if (value > 90) //Just in case
value = 90;
//Doit
Run Code Online (Sandbox Code Playgroud)
这些更正是基于您对外部世界的假设.只有调用者知道你的函数的"有效输入值"是什么,并且他必须在调用你的函数之前检查它的有效性.
用CodeComplete来解释:" 当我们不依赖于断言时,真实世界的程序会变得太乱."
问题:我错了,顽固,愚蠢,太不防守......
如何以编程方式获得Vista Edition,即Home Basic,Home Premium,Business还是Ultimate?
不久前我在接受采访时,需要解决两个非常有趣的问题.我很好奇你会如何处理这些解决方案.
问题1:
除了当前的一切产品
编写一个函数,将两个长度为len,input和index的整数数组作为输入,并生成第三个数组result,结果如下:result [i] =输入中除输入[index [i]]之外的所有内容的乘积
例如,如果使用len = 4,input = {2,3,4,5}和index = {1,3,2,0}调用该函数,则结果将设置为{40,24,30 ,60}.
重要信息:您的算法必须以线性时间运行.
问题2 :(主题在Jeff帖子中)
洗牌卡甲板均匀
设计(在C++或C#中)一个类Deck代表一张有序的牌组,其中牌组包含52张牌,分为13个等级(A,2,3,4,5,6,7,8,9, 4,J,Q,K)四件套装:黑桃(?),心形(?),钻石(?)和球杆(?).
基于这个类,设计和实现一个有效的算法来洗牌一副牌.牌必须均匀洗牌,也就是说,原牌中的每张牌必须具有相同的概率才能最终进入洗牌牌的任何可能位置.该算法应该在Deck类的方法shuffle()中实现:void shuffle()
算法的复杂程度是多少(作为卡片中卡片数量n的函数)?
解释如何测试您的方法均匀地洗牌(黑盒测试).
PS我有两个小时来编写解决方案代码
我想用最新的SVN版本号开始标记我已部署的二进制文件.
但是,因为SVN是基于文件而不是基于目录/项目的,所以我需要扫描所有目录和子目录的文件,以确定最高版本号.
svn info
在root上使用不起作用(它只报告该目录的版本,而不是子目录中的文件):
我想知道是否有使用该svn
命令执行此操作的快捷方式.否则,任何人都可以建议一个网络效率的简单脚本(我更喜欢它根本没有点击远程服务器)?
我也明白,一个可供选择的方法是保持一个版本的文件与svn:keywords
.这工作(我已经在其他项目上使用过它),但我厌倦了确保文件是脏的并处理不可避免的合并冲突.
回答我svn up
在调用svn info
根目录之前看到我的问题在于没有做正确的事情:
$ svn info
Path: .
...
Last Changed Author: fak
Last Changed Rev: 713
Last Changed Date: 2008-08-29 00:40:53 +0300 (Fri, 29 Aug 2008)
$ svn up
At revision 721.
$ svn info
Path: .
...
Revision: 721
Last Changed Author: reuben
Last Changed Rev: 721
Last Changed Date: 2008-08-31 22:55:22 +0300 (Sun, 31 Aug 2008)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ElementTree,它看起来很好,它可以逃脱HTML实体等等.我错过了一些我没听说过的真正精彩的东西吗?
这与我实际做的类似:
import xml.etree.ElementTree as ET
root = ET.Element('html')
head = ET.SubElement(root,'head')
script = ET.SubElement(head,'script')
script.set('type','text/javascript')
script.text = "var a = 'I love á letters'"
body = ET.SubElement(root,'body')
h1 = ET.SubElement(body,'h1')
h1.text = "And I like the fact that 3 > 1"
tree = ET.ElementTree(root)
tree.write('foo.xhtml')
# more foo.xhtml
<html><head><script type="text/javascript">var a = 'I love &aacute;
letters'</script></head><body><h1>And I like the fact that 3 > 1</h1>
</body></html>
Run Code Online (Sandbox Code Playgroud) 从我所看到的,在IIS中托管WCF服务时忽略了标记.我明白,当自托管这是必需的,但这有害甚至在IIS下运行时使用?
恩.
<system.serviceModel>
<service blah blah blah>
<host>
<baseAddresses>
<add baseAddress="http://localhost/blah" />
</baseAddresses>
</host>
</service>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
从我所看到的,您可以从一台机器上获取描述服务的配置文件,并在完全不同的机器上使用它并且工作正常.看起来好像IIS完全忽略了这一部分.
谢谢,凯尔
我有了全新的VS2008并决定从VS2005转换我的主要解决方案.其中一个项目是SQL2005报告服务项目.现在我已经转换了,我无法在VS2008中加载它.有没有办法解决?
我的问题是我的解决方案是一个混合,并在那里有网站库和报告.将其分开会打破解决方案实体的逻辑.
我们需要构建一个管理门户网站来支持我们的客户端/服务器应用程序.由于我们是.Net商店,显而易见的传统方式是在ASP.Net中这样做.但Silverlight 2将在我们发布日期之前的一段时间内推出测试版.我们是否应该考虑使用支持WCF后端在Silverlight中构建整个网站?
门户网站的主要功能是:用户,组和权限配置; 用户配置设置配置; 文件上载和下载支持应用程序所需的文件.
我认为采用这种方法的主要原因是我们在WPF和WCF方面有很好的经验,但在ASP.Net方面经验不足.无论哪种方式,我们都必须学习ASP.Net或Silverlight,学习Silverlight似乎是我们当前技能的更自然的延伸.
StackOverflowers的经验有什么大不了吗?有什么大的积极因素?