小编Doc*_*own的帖子

用C或C++编写Android应用程序?

我正在尝试开发/移植游戏到Android,但是它在C中,并且Android支持Java,但我确信必须有一种方法可以在那里获得一个C应用程序,任何人都知道关于这个主题的一个很好的教程?

谢谢!

c c++ android

282
推荐指数
12
解决办法
31万
查看次数

AutoScaleMode更改了默认字体的问题

当使用非默认字体时,我有一些Form.AutoScaleMode属性和固定大小控件的问题.我把它归结为一个简单的测试应用程序(WinForms 2.0),只有一个表单,一些固定大小的控件和以下属性:

class Form1 : Form
{
    // ...
    private void InitializeComponent()
    {
        // ...
        this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
        this.Font = new System.Drawing.Font("Tahoma", 9.25F);
        // ...
    }
}
Run Code Online (Sandbox Code Playgroud)

在96dpi,Windows XP下,表单看起来像这个96 dpi示例:

96 dpi WinForm

在120 dpi,Windows XP下,Windows窗体自动缩放功能产生了这个120 dpi的示例:

之前的WinForm扩展到120 dpi

如您所见,组框,按钮,列表或树视图正确缩放,多行文本框在垂直轴上变得太大,并且固定大小的标签在垂直和水平方向上都无法正确缩放.似乎是.NET框架中的错误?

编辑:一些提示:字体更改仅应用于包含表单,控件从表单继承其字体.如果可能的话,我想保持这种方式.

使用默认字体(Microsoft Sans Serif 8.25pt),不会发生此问题.AutoScaleMode = Font当然,使用(当然具有足够的AutoScaleDimensions)要么根本不进行缩放,要么完全如上所示进行缩放,具体取决于设置Font的时间(在更改AutoScaleMode之前或之后).问题不是特定于"Tahoma"字体,它也出现在Microsoft Sans Serif,9.25pt.

是的,我已经阅读了这篇文章,发布了 高DPI问题, 但它并没有真正帮助我.

有什么建议如何解决这个问题?

编辑2:关于我的意图的一些额外信息:我有大约50个已经工作的固定大小对话框,有几百个正确放置的固定大小控件.它们从较旧的C++ GUI框架迁移到C#/ Winforms,这就是它们都是固定大小的原因.所有这些都使用9.25pt字体,96 dpi看起来很好.在旧框架下,缩放到120 dpi工作正常 - 所有固定大小的控件在两个维度上缩放相等.上周,我们在切换到120 dpi时在WinForms下检测到这种奇怪的缩放行为.你可以想象我们的大多数对话现在在120 dpi下看起来非常糟糕.我正在寻找一种解决方案,避免完全重新设计所有这些对话框.

编辑3:为了测试这种行为,恕我直言,建立一个120 dpi的虚拟Windows XP环境是一个好主意,而开发环境只有96 dpi(至少,这就是我所做的).在96和120 dpi之间切换通常需要在Win XP下重启,否则你看不到真正发生的事情.

// As requested: the source code of Form1.cs 
namespace DpiChangeTest …
Run Code Online (Sandbox Code Playgroud)

.net c# winforms

35
推荐指数
1
解决办法
9万
查看次数

将数据从IntPtr复制到IntPtr

我有两个IntPtr值指向一些length字节的数据区域.length可能有200k到400k的数量级.

            int length = /* ..*/
            IntPtr ptrSrc = /*.. */;
            IntPtr ptrDst = /* .. */;
Run Code Online (Sandbox Code Playgroud)

现在我想将数据复制ptrSrcptrDst.这段代码工作正常:

            byte[] data = new byte[length];
            Marshal.Copy(ptrSrc, data, 0, length);
            Marshal.Copy(data, 0, ptrDst, length);
Run Code Online (Sandbox Code Playgroud)

但它的缺点是需要一个额外的临时(可能是巨大的)数组.不幸的是,我无法找到一个Marshal.Copy在直接复制.NET框架的变形IntPtrIntPtr,所以我寻找替代品.

我对一个适用于32位Windows和64位Windows的解决方案感兴趣.有什么建议?

c#

28
推荐指数
3
解决办法
2万
查看次数

在C++/CLI中是否有与C#"var"关键字相同的名称?

在C#中,我喜欢这样的var情况下的关键字:

var myList = new List<MyType>();
Run Code Online (Sandbox Code Playgroud)

在C++/CLI中是否有任何等价物,或者每次都必须重复类型名称,如下所示:

List<MyType ^>^ myList = gcnew List<MyType ^>();
Run Code Online (Sandbox Code Playgroud)

到目前为止,无法在文档或Google中找到明确的声明.我正在使用Visual Studio 2008.

.net c# type-inference c++-cli

27
推荐指数
2
解决办法
3万
查看次数

在SVN中保留历史记录时拆分文件

在重构期间,我有时必须将一个源文件拆分为两个或更多(例如,当一个类变得如此之大以至于它应该被分成两个类时).

例如,让A为原始文件,B1和B2为新文件.

是否有可能告诉SVN B1和B2都应该"继承"文件A的完整历史记录,所以当我查看B1和B2的历史日志时,我可以看到它们已经从A中出现,并且日志看起来像这样:

A                B1                  B2
- change A3      - change B1.2       - change B2.2
- change A2      - change B1.1       - change B2.2
- change A1      - change A3         - change A3
                 - change A2         - change A2
                 - change A1         - change A1
Run Code Online (Sandbox Code Playgroud)

我知道如何让历史时,我重命名文件(如讨论上所以这里),但据我所知,这只是保持历史的方式与一个或者B1或B2,不与两者都相关.

目前我在Windows上使用Tortoise SVN 1.6.12.

svn tortoisesvn

16
推荐指数
1
解决办法
1871
查看次数

AnkhSvn不会向SVN添加文件

这是一个已知问题 - 当使用Ankh添加文件时,它们并未真正添加到SVN.很多时候这会导致问题,例如稍后通过TortoiseSvn提交只发现丢失文件或创建补丁时.

是否有解决方法,或者一些计划解决这个问题是未来的Ankh版本?

编辑 - 澄清一下,当我使用Ankh时,文件确实被添加了.但是如果使用Ankh没有完成提交,则不会添加文件(与其他SVN操作不同).

svn ankhsvn visual-studio

13
推荐指数
1
解决办法
4291
查看次数

WiX,如何防止文件卸载虽然我们忘了设置Permanent ="yes"

我们有一个使用Wix创建的产品安装程序,其中包含程序包(" V1 ")和一些配置文件.现在,我们将使用新的产品代码进行重大升级,其中卸载了旧版本的产品并安装了" V2 ".我们想要的是保存其中一个配置文件免于卸载,因为它也需要V2.不幸的是,我们Permanent="yes"在发送V1时忘记设置选项(阅读此问题以获取更多信息).

这里有一个问题:是否有一种简单的方法可以防止文件的卸载?当然,我们可以在脚本中添加一个自定义操作来在卸载之前备份文件,然后再添加另一个自定义操作来恢复它,但恕我直言,这个任务似乎有点过分,并且可能会干扰MSI注册过程的其他部分.

编辑:是的,该NeverOverwrite="yes"属性已经在V2中设置,行为就像我描述的那样.

我不认为在V2的组件参数中直接更改某些内容会有所帮助.也许有机会在卸载V1之前以某种方式在自定义操作中修改注册表,以便安装程序服务认为V1中的配置文件已安装Permanent="yes"

windows installer windows-installer wix

8
推荐指数
1
解决办法
7758
查看次数

创建单元测试以确保不变性

我设计了一个不可变类,因为我希望它具有值语义.我在课堂的评论部分写了一个提示

// "This class is immutable, don't change this when adding new features to it."

但我知道,有时这些评论会被其他团队成员忽略,所以我想创建一个单元测试作为额外的保护措施.知道怎么做到这一点?可以通过反射检查一个类,以确保只有构造函数改变它的内部状态吗?

(使用C#2.0和NUnit,如果这对任何人都很重要).

c# nunit unit-testing immutability

6
推荐指数
2
解决办法
1032
查看次数

在c#中从内存中释放指针

我正在使用fixed{}短语处理C#中的指针.

我将我的代码放在fixed语句的括号内,并想知道Garbage集合是否会在fixed语句之后处理指针释放

fixed{int * p=&x}
{
// i work with x.
}
Run Code Online (Sandbox Code Playgroud)

如果不是我怎么能释放它?

c#

6
推荐指数
1
解决办法
1103
查看次数

测试批量电子邮件脚本的最佳方法

我有一个PHP邮件脚本坐在LAMP vps服务器上.该脚本抓取大约1000个电子邮件地址,并向每个电子邮件地址发送一封HTML电子邮

我用大约六个自己的测试电子邮件帐户测试了脚本,并且工作正常.但我担心当我实际使用这个脚本1000封电子邮件时可能会出现问题.我想测试的一些东西是

1)确认已发送和接收的所有1000封电子邮件

2)测试以确保电子邮件不会在人们的垃圾邮件文件夹中结束

3)检测任何其他一般故障

有没有人有关于如何测试上述案例的建议?我想了解一下构建批量电子邮件脚本的经验.

html email

5
推荐指数
1
解决办法
522
查看次数