我正在寻找一种在 Windows 中用 C++ 解析 XML 的方法,我发现了一些方法,例如 MSXML、Xerces、TinyXml 等,但我想知道哪个在性能和功能方面最好。我的要求是它必须能够静态链接或将源包含在项目本身中,并且不得需要任何其他工具,例如 boost。MSXML 将是显而易见的选择,因为它是一个 MS 库,但它似乎是一个 COM 库并且相当复杂,无法真正利用它。
有没有人对快速简单的使用有任何建议?
谢谢,J
我正在使用普通的Win32 API(没有MFC或.NET)开发Win32 GUI应用程序.我遇到的问题是使控件显得透明.我想出了一个适用于大多数事情的方法,在Windows Vista +我在WndProc中这样做:
case WM_CTLCOLORSTATIC:
{
SetBkMode((HDC)wParam, TRANSPARENT);
return (INT_PTR)::GetStockObject(NULL_PEN);
}
break;
Run Code Online (Sandbox Code Playgroud)
在Windows XP中,我在WndProc中执行此操作:
case WM_CTLCOLORSTATIC:
{
HBRUSH hbr = (HBRUSH)DefWindowProc(hDlg, message, wParam, lParam);
::DeleteObject(hbr);
SetBkMode((HDC)wParam, TRANSPARENT);
return (LRESULT)(HBRUSH)(COLOR_WINDOW);
}
Run Code Online (Sandbox Code Playgroud)
现在这适用于大多数控件,但是我在组框控件顶部的标签上获得透明背景,该控件在文本中绘制组框线.我开始研究一个只有组合箱的情况,但我确信这是一个必须先解决的问题,我不想重新发明轮子.
是否有经过试验和测试的方法使控件看起来透明?
谢谢,J
在我开始使用自己的设置库编写之前,我会尝试找到现有的库.我用Google搜索并找到了很多C#或MFC,但没有使用普通的C++/STL.我想要一些允许通过键访问的东西,例如:
mySettings["Root"]["Subsection"]["Value"].Value
Run Code Online (Sandbox Code Playgroud)
或类似的规定.是否有任何东西可以提供XML文件的那种接口,或者我将不得不自己滚动?
谢谢,J
我正在使用NotifyIcon该类在任务托盘中显示一个图标。该图标执行 2 个功能 - 当用户单击左键时应显示一个窗口,当用户单击右键时应显示上下文菜单。除了在用户单击上下文菜单中的选项后显示的窗口之外,这可以正常工作。这是我的代码:
contextMenuItems = new List<MenuItem>();
contextMenuItems.Add(new MenuItem("Function A", new EventHandler(a_Clicked)));
contextMenuItems.Add(new MenuItem("-"));
contextMenuItems.Add(new MenuItem("Function B", new EventHandler(b_Clicked)));
trayIcon = new System.Windows.Forms.NotifyIcon();
trayIcon.MouseClick += new MouseEventHandler(trayIcon_IconClicked);
trayIcon.Icon = new Icon(GetType(), "Icon.ico");
trayIcon.ContextMenu = contextMenu;
trayIcon.Visible = true;
Run Code Online (Sandbox Code Playgroud)
问题是trayIcon_IconClicked当用户选择“功能 A”或“功能 B”时会触发我的事件。为什么会发生这种情况?
谢谢,J
我有一个带有核心数据数据库的iPhone应用程序,其中包含一个位置列表,每个位置都有纬度/经度坐标.我该如何搜索距离我当前位置最近的10?
我是Core Data的新手,所以我的问题是如何进行查找,我知道如何获取当前位置等.我相信我需要设置一个带有查询字词的NSPredicate,但不确定应该如何编写.
谢谢,J
我有一个脚本通过PUT请求接收大文件上传.这些文件在上传时会动态完成一些处理.有时我们可以在前几个字节中检测到文件无效,因此我们会die()收到错误消息.唯一的问题是客户端仍然发送剩余的数据,这是一个巨大的浪费.有没有办法关闭传入连接?
码:
$fp = fopen('php://input', 'rb');
// Do some data checking here
if( <invalid> ) {
fclose($fp);
die('Error');
}
Run Code Online (Sandbox Code Playgroud)
stream_socket_shutdown 看起来它可能会起作用,但它没有任何效果.
有没有办法做到这一点?即使我必须为此写一个扩展名?
是否可以使用NSURLConnection/NSURLRequest组合向具有Content-Range标头的服务器发送PUT请求?我的意思是我想恢复上传到服务器,它可以接受请求中的字节范围以恢复上传.
我看到你可以设置一个NSInputStream作为请求体,所以我想我可以继承它并覆盖open/seek函数并设置请求头,但它似乎调用了未记录的选择器并打破了实现.
我确信我可以用CFNetwork做到这一点,但似乎必须有一种方法来使用更高级别的API.
关于从哪里开始的任何想法?
编辑:
为了回答我自己的问题,在阅读博客[http://bjhomer.blogspot.com/2011/04/subclassing-nsinputstream.html]之后确实可以做到这一点,该博客详细说明了与CFStream相关的未记录的回调.一旦实现了这些,我可以在open回调中调用以下内容来跳过:
CFReadStreamSetProperty((CFReadStreamRef)parentStream, kCFStreamPropertyFileCurrentOffset, (CFNumberRef)[NSNumber numberWithUnsignedLongLong:streamOffset]);
Run Code Online (Sandbox Code Playgroud)
谢谢,J
我有一组CGPoints代表一个有点像倒置'T'形状的形状,现在我想将这些点转换成CGRect适合形状的一个,所以创建一个CGRect包含整个形状的我只是循环通过并计算最低点x和y左上角,最高点x和y右下角这是很好的但是在图像外留下白色区域,我怎么能找出没有白色区域的最大矩形,所以最终的形状更像是一个'|' 形状?我的代码到目前为止:
CGPoint topLeft = CGPointZero;
CGPoint bottomRight = CGPointZero;
for( NSValue *value in points ) {
CGPoint point = [value CGPointValue];
if( topLeft.x == 0 || topLeft.x > point.x ) shapeRect.x = point.x;
if( topLeft.y == 0 || topLeft.y > point.y ) shapeRect.y = point.y;
if( bottomRight.x < point.x ) bottomRight.x = point.x;
if( bottomRight.y < point.y ) bottomRight.y = point.y;
}
CGRect shapeRect = …Run Code Online (Sandbox Code Playgroud) 我真的很难弄清楚如何使用JNI从Objective-C调用Java函数.
我应该首先说我对Java知之甚少,但对Obj-C非常熟悉.我有一个Java类,我需要从我的应用程序包中调用一个方法.jar位于bundle中的Resources文件夹中,我已经NSJavaRoot设置Content/Resources,NSJavaNeeded检查并NSJavaPath包含2个jar文件的名称(主要的一个和一个依赖项).
我正在使用调用来启动虚拟机JNI_CreateJavaVM,然后尝试查找使用NSClassFromString哪个感觉错误的类,但这是我在搜索中找到的唯一方法.我相信这个方法在使用已弃用的Java桥时是正确的,但我找不到任何使用JNI的示例或引用.
我的Java类看起来像这样:
package foo;
public class bar {
public function dostuff() {
}
}
Run Code Online (Sandbox Code Playgroud)
我需要dostuff()在app流程中调用一次.有没有人有任何想法如何做到这一点?
谢谢,J
如何将 24 位颜色System.Drawing.Bitmap转换为索引(256 色)格式?我在计算调色板时遇到了麻烦。我可以遍历像素并使用 anint[]来包含各种颜色,但是当颜色超过 256 时就会出现问题。有没有办法转换为索引格式并从Bitmap.