小编cta*_*cke的帖子

寻找更好的C++类工厂

我有一个应用程序有几个对象(目前约有50个,但正在增长).应用程序中每个对象只有一个实例,这些实例在组件之间共享.

我所做的是从基础BrokeredObject类派生所有对象:

class BrokeredObject
{
  virtual int GetInterfaceId() = 0;
};
Run Code Online (Sandbox Code Playgroud)

每个对象类型都返回一个唯一的ID.这些ID保存在头文件中.

然后我有一个ObjectBroker"工厂".当有人需要一个对象时,请调用GetObjectByID().boker在STL列表中查看该对象是否已存在,如果存在,则返回该对象.如果没有,它会创建它,将其放入列表并返回它.一切都很好.

BrokeredObject *GetObjectByID(int id)
{
  BrokeredObject *pObject;
  ObjectMap::iterator = m_objectList.find(id);
  // etc.
  if(found) return pObject;

  // not found, so create
  switch(id)
  {
    case 0: pObject = new TypeA; break;
    case 1: pObject = new TypeB; break;
    // etc.
    // I loathe this list
  }
  // add it to the list
  return pObject;
}
Run Code Online (Sandbox Code Playgroud)

我觉得痛苦的是维护这个ID列表并让每个类实现它.我至少让我的消费者的生活变得更容易了,让每个类型都拥有关于它自己的ID的信息,如下所示:

class TypeA : public BrokeredObject
{
  static int get_InterfaceID() { return IID_TYPEA; }
  int …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns

7
推荐指数
3
解决办法
1万
查看次数

掌上电脑/ Windows Mobile:如何检测智能最小化

如何检测我的Compact Framework应用程序何时智能最小化(智能最小化是当用户单击Pocket PC右上角的"X"按钮时发生的情况)?

Deactivate事件不是正确的方式,因为它发生在最小化以外的情况下,例如在主窗体顶部显示消息框或其他窗体时.窗体的WindowState没有用,因为.NET CF上没有"Minimized"WindowState.

我听说通过设置MinimizeBox = false,我的应用程序将被关闭而不是最小化.但我实际上不希望我的应用程序关闭,我只是想知道它何时被最小化.

.net pocketpc compact-framework minimize windows-mobile

7
推荐指数
1
解决办法
3937
查看次数

混合32位和64位P/Invokes

我遇到了一个问题,我很确定我知道答案,但我想我至少会问,看看是否有一些"神奇的子弹"可能会让我头疼不已.

这是高级视图.

我有一个托管应用程序.此应用程序通过来自不同供应商的第三方库与硬件连接.我可以完全控制使用托管应用程序并对硬件API库进行零控制.

供应商A仅提供32位本机SDK.为了允许我们在64位系统上使用它,我们将应用程序标记为以32位模式运行.一切都好.

我们现在与Vendor B集成,后者在64位计算机上提供64位特定的本机API库.来自供应商B的32位本机DLL将无法在64位系统上运行(尝试过).如果我构建一个运行为64位或AnyCPU的测试工具,它可以正常工作.如果我将其标记为32位,则在P/Invoke调用上失败.

似乎供应商A和供应商B硬件将在64位PC上互斥,但我想知道是否有人有关于如何解决这个问题的建议.

c# interop 32bit-64bit

7
推荐指数
1
解决办法
2203
查看次数

Windows Phone上是否有任何脚本支持?

在Windows Mango OS中,是否支持任何脚本环境?

它是否支持powershell或python或perl?

python powershell perl smartphone windows-phone-7

7
推荐指数
2
解决办法
4338
查看次数

HTTPWebRequest&过了一会儿,400(错误请求)启动

我有一个后台工作线程,它不断地将数据同步到远程服务器或从远程服务器同步数据.当我第一次运行应用程序时,一切似乎都正常.它每30秒发出一次Web请求,数据返回成功.

如果我让模拟器长时间运行,最终请求将因(400)错误请求而失败.所有后续请求都做同样的事情.如果我杀了应用程序并重新启动它...一切都很好.

有人有主意吗?代码如下.

public RestResponse<T> Execute<T>(RestRequest request) {
    var restResponse = new RestResponse<T>();
    var serializer = new JavaScriptSerializer();
    var urlPath = baseUrl + "/" + request.Resource;
    Console.WriteLine("Requesting: " + urlPath);
    var httpRequest = (HttpWebRequest)HttpWebRequest.Create(new Uri(urlPath));

    httpRequest.Headers = request.Headers;
    foreach (string key in clientHeaders.Keys)
        httpRequest.Headers.Add(key, clientHeaders[key]);
    httpRequest.Headers.Add("Accept-Encoding", "gzip,deflate");

    Authenticator.Authenticate(httpRequest);
    httpRequest.Method = request.Method.ToString();       
    HttpWebResponse httpResponse = null;
    try {
        if ((request.Method == Method.POST) && (!request.IsJsonPost))
            SetPostData(httpRequest, request);

        if ((request.Method == Method.POST) && (request.IsJsonPost)){
            SetJsonPostData(httpRequest, request);
        }

        httpResponse = (HttpWebResponse)httpRequest.GetResponse();
        var reader = …
Run Code Online (Sandbox Code Playgroud)

c# mono httpwebrequest xamarin.ios http-status-code-400

7
推荐指数
1
解决办法
6466
查看次数

dotnet compact framework 3.5 sp1检测设备分辨率

我需要自动检测设备分辨率,现在我有一个全局var&hardwire分辨率:

Public gDeviceRes As String = "640"
'Public gDeviceRes As String = "320"
Run Code Online (Sandbox Code Playgroud)

然后重新编译每个设备,有没有人有一个快速snippit的代码?

compact-framework windows-mobile

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

Linux下获取SD卡序列号和制造商

我希望能够检索 SD 卡的序列号、制造商以及它可能提供的任何其他信息。Java 或者只是一个运行命令就很好了。 Compact Framework 可以做到这一点,但这对我没有帮助。

java linux ide scsi sd-card

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

有没有办法检查用户是否真的为您的应用评分?

我正在写一个WP7应用程序,我有代码要求用户每五次运行一次市场评论,并且指数退出,这样就不那么烦人了.如果用户在我的"您要查看"消息框中单击"确定",我会启动审阅任务,并存储用户已审阅该应用程序,因此我不再询问.

var marketplaceReviewTask = new MarketplaceReviewTask();
marketplaceReviewTask.Show();
IsolatedStorageSettings.ApplicationSettings["HasReviewed"] = true;
Run Code Online (Sandbox Code Playgroud)

然而,尽管他们很可能对应用程序进行了评分,但实际上我并不是100%肯定他们做过的.有没有办法检查当前用户是否真的写过评论?MarketplaceReviewTask()是否具有返回值?我找不到任何表明我能听的东西.

windows-phone-7

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

IValueConverter不适用于SolidColorBrush

我有一个进度条,我想根据布尔值改变颜色; true为绿色,false为红色.我有代码似乎应该工作(它将它绑定到文本框时返回正确的值)但不是当它是进度条的颜色属性时.转换器定义为此(在App.xaml.cs中,因为我想在任何地方访问它):

public class ProgressBarConverter : System.Windows.Data.IValueConverter
{
    public object Convert(
        object o, 
        Type type, 
        object parameter, 
        System.Globalization.CultureInfo culture)
    {
        if (o == null)
            return null;
        else
            //return (bool)o ? new SolidColorBrush(Colors.Red) : 
            //                 new SolidColorBrush(Colors.Green);
            return (bool)o ? Colors.Red : Colors.Green;
    }

    public object ConvertBack(
        object o, 
        Type type, 
        object parameter, 
        System.Globalization.CultureInfo culture)
    {
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我将以下内容添加到App.xaml(因此它可以是全局资源):

<Application.Resources>
    <local:ProgressBarConverter x:Key="progressBarConverter" />
    <DataTemplate x:Key="ItemTemplate">
        <StackPanel>
            <TextBlock Text="{Binding name}" Width="280" />
            <TextBlock Text="{Binding isNeeded, 
                          Converter={StaticResource progressBarConverter}}" />
            <ProgressBar>
                <ProgressBar.Foreground> …
Run Code Online (Sandbox Code Playgroud)

data-binding silverlight ivalueconverter windows-phone-7

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

同时按下多个按钮

在我的WP 7.1应用程序中,我有一个带有多个按钮的页面.
我注意到,当按下任何一个按钮时,不能按任何其他按钮.

我怎么能克服这个?我需要能够允许用户同时按下多个按钮.

c# multi-touch windows-phone-7 windows-phone-7.1

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