我已经阅读了COM Programmer's Cookbook中详细介绍的各种COM设计模式以及一些相关的SO线程,特别是讨论组合与多重继承的线程.可能是因为我对C++和COM都太新了,我可能会错过各种来源中提出的观点,所以这里的问题用一句话来表达:
我可以扩展MIDL生成的接口以供DLL内部使用吗?如果是这样,在MIDL/COM限制下如何正确处理菱形问题/并行层次结构?
肮脏的细节......
希望能帮助其他人确定我的困惑,这是我的假设:
1)COM不支持虚拟继承,只允许通过接口进行多重继承.
2)即使COM看不到它,但是我不应该使用不受支持的C++继承,因为我不希望它直接暴露给COM.
3)因为MIDL只允许接口的单继承,所以如果我有一个并行层次结构,我需要为coclass聚合它们.
4)MIDL似乎没有声明coclass本身,所以我需要写一个声明实际类的.h文件,在那里,我可以根据需要扩展,理解COM消费者不能使用它(这没关系).
我想要做的是有一个基础对象(我还没有决定它是否是抽象的,虽然我认为它将是现在),它处理大多数实现细节并将一些特定的功能委托给子类.客户端通常会使用子类.所以,
project.idl
import "oaidl.idl"
import "ocidl.idl"
[
object,
uuid(...),
dual,
oleautomation
]
interface IBase : IDispatch {
//stuff I want to show to COM
};
[
object,
uuid(...),
dual,
oleautomation
]
interface IChild1 : IBase {
//stuff (in addition to base) I want to show to COM
};
[
object,
uuid(...),
dual,
oleautomation
]
interface IChild2 : IBase {
//stuff (in addition to base) I want …Run Code Online (Sandbox Code Playgroud) 我正在研究爬虫,它将在电子商店中搜索商品.这是我的论文,所以没有商业..
我使用Java SE.
我将需要某种高级库,进行一些诊断测试(如果该网页是我正在寻找的),并从正确的数据中提取相关数据.
您是否有使用解析器库的个人经验来推荐我最好的?
我正在使用一些使用CGPath绘制弧的示例代码.我已经有大约一看,发现文档,但我似乎无法在我的脑海想象什么事情在使用MoveToPoint,AddLineToPoint等方面,我不能"看"是什么代码正在做我可以看到结果.
例如,下面的代码从3点钟位置开始绘制一个完整的360度弧.对于我的生活,我无法弄清楚如何让它从12点钟位置开始实际旋转视图 - 90度.
有人可以帮我弄清楚这个代码以及如何改变它以实现从12点开始,最好是试图解释整个路径是如何工作的.或者也许可以在线指出我的视觉资源?
- (void)drawPathWithArc:(CGFloat)arc {
CGMutablePathRef thePath = CGPathCreateMutable();
CGPathMoveToPoint(thePath, NULL, 100.f, 100.f);
CGPathAddLineToPoint(thePath, NULL, 200.f, 100.f);
CGPathAddArc(thePath, NULL, 100.f, 100.f, 100.f, 0.f, (360* M_PI)/180, NO);
CGPathCloseSubpath(thePath);
shapeLayer_.path = thePath;
CGPathRelease(thePath);
}
Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个具有白色文本和透明背景的用户控件.不幸的是因为VS2010中的XAML设计视图有白色背景我看不到任何我正在设计的东西!
我已经浏览了所有我能想到的设置对话框,但一直无法找到改变XAML设计器背景颜色的设置.
有谁知道如何做到这一点?
我正在使用MySQL v5.0.45并尝试删除表中的第n行而不管其ID号.我在PHP中设置原型,然后将其集成到我的Web开发项目中,我在我的数据库中设置了以下内容:
CREATE TABLE prototype_1 (id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name varchar(30));
INSERT INTO prototype_1 (name) VALUES ('A');
INSERT INTO prototype_1 (name) VALUES ('B');
INSERT INTO prototype_1 (name) VALUES ('C');
Run Code Online (Sandbox Code Playgroud)
很简单!现在我尝试使用'LIMIT',但是我收到以下错误:
"ERROR 1235(42000):此版本的MySQL尚不支持'LIMIT&IN/ALL/ANY/SOME子查询'"
现在我明白你不能在子查询中使用LIMIT,但是,有没有某种解决方法?
我可以选择第n行并使用以下内容很好地显示它:
SELECT * FROM prototype_1 LIMIT 1,1;
Run Code Online (Sandbox Code Playgroud)
因此返回'B',但为什么我不能删除!?
我从我找到的唯一一个例子中创建了一个自定义的SimpleCursorAdapter .
调用我的ListActivity时,将为每个数据库条目调用newView和bindView,并为每个条目再次调用.我有几个问题:
- 这是正确的例子(如果没有,我在哪里可以找到一个)?
-if bindView调用总是在newView调用之前,为什么在两个函数中都这样做?
为什么序列newView-bindView为每个项目调用两次?
为什么有些CursorAdapter示例使用getView而不是newView和bindView?
基本上,应该如何使用SimpleCursorAdapter,以及我的代码有什么问题?
谢谢
ListActivity
public class ContactSelection extends ListActivity {
private WhipemDBAdapter mDbHelper;
private FriendAdapter friendAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mDbHelper = new WhipemDBAdapter(this);
mDbHelper.open();
setContentView(R.layout.contact_list);
Cursor c = mDbHelper.fetchAllFriends();
startManagingCursor(c);
String[] from = new String[] {};
int[] to = new int[] {};
this.friendAdapter = new FriendAdapter(this, R.layout.contact_row, c, from, to);
setListAdapter(this.friendAdapter);
getListView().setItemsCanFocus(false);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
@Override
protected void onResume() {
super.onResume();
mDbHelper.open();
}
@Override
protected …Run Code Online (Sandbox Code Playgroud) 使用JQuery,我需要选择具有条件的ALL INPUT元素:
'not disabled'(:禁用)'AND'''readonly',
然后我要改变css样式来查询结果.
更新:我需要按顺序迭代结果..
任何人都可以告诉我为什么这个jQuery函数不起作用.它没有alert.
$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?',
{
screen_name: 'samajshekhar',
count: '5',
},
function (data) {
alert('hello world from twitter');
});
Run Code Online (Sandbox Code Playgroud)
在fiddler中,我可以看到已经返回了预期的JSON.
但是,当使用jQuery文档中的示例代码调用flicker的api时,它会alert按预期方式提供
$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?',
{
tags: 'cat',
tagmode: 'any',
format: 'json'
},
function(data) {
alert('hello world from flicker');
});
Run Code Online (Sandbox Code Playgroud)
我甚至试过Facebook的图形API仍然没有 alert
在示例代码中,我尝试使用getJSON调用facebook,twitter,flicker,只提出了闪烁的调用alert.
摘要
这个问题是建立一个简单的电子表格API的愿望的后续,同时保持对熟悉Excel的用户友好.
总结一下,这个问题与以下两个问题有关:
1.如何从索引实现列自命名?;
2. 如何使此自定义工作表初始化更快?.
目的
为了提供用作包装在nevralgic组件,如一个简化的Excel API Application,所述Workbook的Worksheet和Range同时暴露只为每个这些最常用的对象属性的类/接口.
用法示例
这个用法示例的灵感来自单元测试,使我能够将此解决方案带到现在的位置.
Dim file as String = "C:\Temp\WriteTest.xls"
Using mgr As ISpreadsheetManager = New SpreadsheetManager()
Dim wb as IWorkbook = mgr.CreateWorkbook()
wb.Sheets("Sheet1").Cells("A1").Value = 3.1415926
wb.SaveAs(file)
End Using
Run Code Online (Sandbox Code Playgroud)
现在我们打开它:
Dim file as String = "C:\Temp\WriteTest.xls"
Using mgr As ISpreadsheetManager = New SpreadsheetManager()
Dim wb as IWorkbook = mgr.OpenWorkbook(file)
// Working with workbook here...
End Using
Run Code Online (Sandbox Code Playgroud)
讨论
在实例化Excel工作簿时:
Range可以表示一个或多个单元格的对象初始化其单元格. …我正在开发一个通用应用程序,我正试图在iPhone和iPad版本之间共享尽可能多的代码.我需要使用一个TabBarController作为我的根视图控制器,虽然我想每个选项卡的使用SplitViewController,SplitViewController的文档说,它需要的根视图控制器.因此,考虑到所有这些 - 了解我正在尝试并排放置两个导航控制器,并且(大部分)复制SplitViewController的行为/布局.
一切都很好,除了视图的布局.当应用程序以纵向模式启动时,一切都会在设备方向改变时正常运行并调整大小/位置.

如果应用程序以UIDeviceOrientationPortrait以外的任何方向启动,则视图将在导航控制器上方显示20点间隙/边距.我试过在运行时调整帧没有完美的结果.将框架的origin.y调整为-20并将高度增加20会使视图与其父级的顶部齐平,但在底部留下20个点的间隙!
