我在使用Visual Studio 2012的Windows 7上.
当我编译时,我得到了很多由winerror.h和dxgi.h,dxgitype.h,d3d11.h,d3d10.h引起的宏重定义警告.例如DXGI_STATUS_OCCLUDED,DXGI_STATUS_CLIPPED,DXGI_STATUS_NO_REDIRECTION等.
我想这是因为安装了windows sdk 8.我怎么能避免这个?有没有办法可以从我的项目中排除这些新库?
我正在使用ComPtr(Microsoft :: WRL)来管理一些DirectX11资源.我该如何手动释放它?
如果我理解正确的话,"ReleaseAndGetAddressOf"方法只释放指针而不释放资源本身(返回),我不确定"重置"方法.
我能想到的唯一选择是手动调用指针析构函数,或者从"ReleaseAndGetAddressOf"获取原始指针后调用"Release",我想避免.
我的项目是使用vs2012的c ++ 11.现在我觉得不需要使用自定义内存管理,但是我应该采取什么安排来促进最终的未来修改?
我想为一个宏使用"new"/"new []"/"delete"/"delete []"和typedef用于容器和智能指针.
什么是最佳做法?
正如标题所说,我正在尝试解析例如
term(A, b, c(d, "e", 7))
Run Code Online (Sandbox Code Playgroud)
在Lua表中
{term, {A, b, {c, {d, "e", 7}}}}
Run Code Online (Sandbox Code Playgroud)
这是我建立的语法:
local pattern = re.compile[=[
term <- variable / function
argument <- variable / lowercase /number / string
function <- {|lowercase {|(open argument (separator (argument / function))* close)?|}|}
variable <- uppercase
lowercase <- {[a-z][A-Za-z0-9]*}
uppercase <- {[A-Z][A-Za-z0-9]*}
string <- '"' {~ [^"]* ~} '"'
number <- {[0-9]+}
close <- blank ")"
open <- "(" blank
separator <- blank "," blank
blank <- " "*
]=]
Run Code Online (Sandbox Code Playgroud)
我遇到以下问题: …
我有一个项目列表,其中每个项目都是一个包含2个公共字符串的简单类.我有一个equals方法,只使用两个字符串的equalsIgnoreCase methot.
public class data
{
public String a;
public String b;
public boolean equals(data d)
{
if(a.equalsIgnoreCase(d.a) && b.equalsIgnoreCase(d.b))
{
return true;
}
else
{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望能够删除一个元素,即使它与列表中的元素不同,但是等于它.
现在我这样做:
public void remove(data dataToRemove)
{
for(data i : _list)
{
if(i.equals(dataToRemove))
{
_list.remove(i);
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
根据是否出现错误,pcall(function)可能会返回:
成功:true和函数的返回值[s].
失败:错误和错误.
在我的情况下,我正在调用一个函数来返回一个表,所以如果没有错误,我将从第二个返回值获取我的数据,如果出现错误,我将打印管理错误.
我怎么能用断言来做?
起初我写了这个:
local ret, data = pcall(the_function)
assert(ret, "Error: "..data)
-- use data from here on.
Run Code Online (Sandbox Code Playgroud)
问题是即使在成功的情况下也会评估断言消息,因此当调用成功时,Lua会抱怨将字符串与表连接.
这个问题是由于我想使用assert并引用错误,但避免使用类似的东西if not ret then assert(false, "...") end.
我在自定义ContentControl中有一个Image控件,我用它来应用一些变换(通过RenderTransform缩放和翻译).问题是,如果图像大于控件的区域,如果我滚动或缩小它的全部剪切,就像在原始视口中一样.
有没有办法强制图像完全自我绘制?(已经尝试将ClipToBounds设置为false)
顺便说一句,如果我尝试将图像作为画布的背景,它可以正常工作.
编辑,这是一些细节.
我的控制:
public class CustomControl: ContentControl
Run Code Online (Sandbox Code Playgroud)
设置阶段:
source = VisualTreeHelper.GetChild(this, 0) as FrameworkElement;
...
source.RenderTransform = this.transformGroup;
Run Code Online (Sandbox Code Playgroud)
变换组由平移和缩放变换组成.
xaml部分是这样的:
<ui:CustomControl ClipToBounds="True">
<Image
Source="{Binding Path=BackgroundImage}"
Stretch="None"
ClipToBounds="False"/>
</ui:CustomControl>
Run Code Online (Sandbox Code Playgroud)