我正在尝试使用GetOpenFileName()常用对话框调用弹出一个对话框并允许用户选择多个文件.
我已经设置了OFN_ALLOWMULTISELECT标志,以及OFN_EXPLORER设置,所以我得到了"新样式"文件选择框.
当我设置我的OPENFILENAME结构时,我将ofn.lpstrFile指向分配用于保存结果的缓冲区,并将ofn.nMaxFile设置为其长度.
我遇到的问题是,如果用户选择了缓冲区溢出的文件名这么多,则对GetOpenFileName的调用返回FALSE,然后CommDlgExtendedError()返回FNERR_BUFFERTOOSMALL.
这对于错误检测很好,我可以调高缓冲区的大小来修复它,但是用户迟早会选择足够的文件名来溢出缓冲区.
我已经看到MSDN中的注释说明如果缓冲区太小,lpstrFile缓冲区的前两个字节将包含所需的大小,但它返回的大小似乎太小(当OFN_ALLOWMULTISELECT不是'时,这是正确的' t set).另外,这需要我再次打开对话框!
我的另一个想法是创建一个对话框挂钩程序,然后在我收到CDN_SELCHANGE通知消息并动态分配正确大小的缓冲区时检测文件名的大小,但是当它将数据写入新缓冲区时,似乎记住ofn.nMaxFile的orignal值.
有没有人知道动态分配缓冲区以保存GetOpenFile调用结果而不使对话框出现两次的正确方法?
因此,事实证明,Martlark的文章是正确的.
我的2个错误是:
1)我忘了将MAX_PATH添加到钩子中的applcate大小,
2)这只适用于GetOpenFileName的unicode版本.(我是用UNICODE编译没有定义)
当在网站(主题浏览器)上使用jQueryUI示例时,事情看起来很棒.但是,当我将代码和主题放入我的应用程序时,大小调整是不合适的(我正在尝试使用Redmond主题).
关于为什么这些样品看起来如此不同的任何想法?在我构建的应用程序中,只有一个CSS引用用于Redmond主题......下面这些图像正是它们如何呈现给浏览器.
我的申请:
替代文字http://www.imageunload.com/public/14462/jQueryUI.png
jQuery UI示例:
alt text http://www.imageunload.com/public/14463/jQueryUI-Sample.png
我的申请代码:
<div>
<asp:TextBox ID="txtDateSample" runat="server"></asp:TextBox>
</div>
</form>
<script type="text/javascript" language="javascript">
$(function() {
$('#<%= txtDateSample.ClientID %>').datepicker({
showButtonPanel: true,
showOn: 'button',
buttonImage: '../Graphics/Icons/calendar.png',
buttonImageOnly: true
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
Firebug视图:
<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-helper-hidden-accessible"/>
Run Code Online (Sandbox Code Playgroud) class MySymbol
TABLE={}
def initialize(str) @str = str end
def to_s() @str end
def ==(other)
self.object_id == other.object_id
end
end
class String
def my_intern
table = MySymbol::TABLE
unless table.has_key?(self)
table[self] = MySymbol.new(self)
end
table[self]
end
end
"foo".my_intern
Run Code Online (Sandbox Code Playgroud)
在我在博客上找到的上面的例子中,我理解TABLE是一个哈希,并且是MySymbol类的成员.我不明白的是如何从String类中公开访问它.我认为类实例变量默认是私有的,你需要使用get/set方法从类外部访问它们吗?
vim + ctags
适用于C项目,因为C不允许函数重载,并且通常鼓励由于基本的范围设施而手动添加符号.
在C++中,函数经常被重载,并在子类中被重写.这使得vim总是跳到错误的类中的标签上"Ctrl + ]"
.有没有办法让它表现得更智能一点?我知道我可以带一个带有标签替代品的列表,但是总是不得不提出这个列表并且每当我想跳到定义时按编号找到所需的标签是非常烦人的.
我正在尝试使用flex和bison来创建一个过滤器,因为我想从复杂的语言中获取某些语法元素.我的计划是使用flex + bison来识别语法,并转出感兴趣的元素的位置.(然后使用脚本根据转储的位置获取文本.)
我发现flex可以支持一个叫做bison-locations的野牛功能,但它是如何工作的.我在flex文档中尝试了这个例子,似乎yylloc不是由flex自动设置的,我总是得到(1,0)-(1,0)
.可以自动灵活计算每个令牌的位置吗?如果没有,我定义了什么接口函数来实现?有什么例子吗?
有关工具的更好解决方案吗?
最诚挚的问候,凯文
编辑:
现在,yylex的界面转向:
int yylex(YYSTYPE * yylval_param,YYLTYPE * yylloc_param );
Run Code Online (Sandbox Code Playgroud)
bison手册没有说明lexer应如何实现正确设置yylloc_param.对我来说,很难手动跟踪每个令牌的列号.
我们刚刚使用Microsoft的TS网关设置了一个新的远程访问解决方案,为了使其正常工作(安装我们的root ca证书,RDP 6.1客户端的要求等),需要在最终用户上进行几个有点繁琐的步骤.
为了使这个设置过程尽可能简单(很多这些用户都没有技术头脑),我想创建一个程序来自动执行所有这些任务.我有大部分工作,但我不完全确定如何将根CA证书导入Windows证书存储区.
因为这可以在具有不同级别的补丁和更新的各种计算机上运行,所以我很清楚.NET和任何非原生的东西 - 该工具应该"只运行"而无需用户安装任何额外的(好吧,我会说Windows XP,没有服务包,是最低要求的Windows版本).说这个,我不介意使用第三方,如果它可以与工具捆绑在一起,只要它不是很大,并且不会引入任何交互式步骤.理想情况下,Windows API中的某些东西是最好的,但我似乎无法追踪任何相关的东西.
目前该工具是一个C++应用程序,所以我不介意它是否是相当低级别的东西.
我想知道是否有可能以编程方式更改水晶报告的公式.我想在我的网络应用程序中列出报告的所有公式,并为用户提供修改它们的可能性.
那可能吗?
我的.aspx页面中存在问题,我将布尔变量(C#)传递给期望布尔类型的javascript函数.
BUt C#变量返回True,而javascript不喜欢大写.
myjavascript( <%= MyBooleanVariableInCSharp %> );
Run Code Online (Sandbox Code Playgroud)
如果我将c#变量转换为字符串,那么我的javascript变量变为字符串而不是js bool值!
这场噩梦的解决方案是什么?大声笑