小编Mar*_*ila的帖子

String类型是类还是结构?或者是其他东西?

class MyString: String {}
Run Code Online (Sandbox Code Playgroud)

给出错误:

从非协议,非类型'String'继承.

所以看起来String不是一个阶级.但为什么它可以用于AnyObject预期的上下文?我虽然AnyObject只是类类型,但Any可以是类或非类类型.

swift

14
推荐指数
1
解决办法
6034
查看次数

角度/离子在iOS 10上不起作用

我有一个使用Ionic框架开发的Cordova应用程序,曾经在iOS上运行良好,但在iOS 10上则不然.当我在模拟器中启动应用程序时,没有Angular特定的工作(绑定,事件等).这是一个截图.

在此输入图像描述

如果我从Safari附加开发人员工具,我在控制台中看不到任何内容.但是,如果我按下刷新按钮并重新加载索引页,一切都会正常工作.

我怀疑这与iOS 10上的内容安全策略有关.我的Content-Security-Policy元标记如下所示:

<meta http-equiv="Content-Security-Policy" 
      content="default-src 'self' data: gap: file://* * 'unsafe-eval'; 
               script-src 'self' 'unsafe-inline' 'unsafe-eval' *; 
               style-src 'self' 'unsafe-inline' *; 
               media-src *">
Run Code Online (Sandbox Code Playgroud)

我已经尝试过与其他人面临的类似问题相关的各种建议,但没有任何帮助.任何建议都表示赞赏.

javascript ios angularjs cordova ionic-framework

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

生成伪随机16位整数

我需要生成16位伪随机整数,我想知道最好的选择是什么.

我想到的显而易见的方法如下:

std::random_device rd;
auto seed_data = std::array<int, std::mt19937::state_size> {};
std::generate(std::begin(seed_data), std::end(seed_data), std::ref(rd));
std::seed_seq seq(std::begin(seed_data), std::end(seed_data));
std::mt19937 generator(seq);
std::uniform_int_distribution<short> dis(std::numeric_limits<short>::min(), 
                                         std::numeric_limits<short>::max());

short n = dis(generator);
Run Code Online (Sandbox Code Playgroud)

我在这里看到的问题是std::mt19937产生32位无符号整数,因为它定义如下:

using mt19937 = mersenne_twister_engine<unsigned int, 
                                        32, 624, 397, 
                                        31, 0x9908b0df,
                                        11, 0xffffffff, 
                                        7, 0x9d2c5680, 
                                        15, 0xefc60000, 
                                        18, 1812433253>;
Run Code Online (Sandbox Code Playgroud)

这意味着静态转换完成,并且分布仅使用这些32位整数的最不重要部分.所以我想知道这些伪随机短裤系列有多好,我没有数学专业知识来回答这个问题.

我希望更好的解决方案是将自己定义的mersenne_twister_engine引擎用于16位整数.但是,我没有找到任何提到的模板参数集(例如,可以在这里找到需求).有吗?

更新:我通过正确的分发初始化更新了代码示例.

c++ random mersenne-twister c++11

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

编辑控件中的搜索图标与输入区域重叠

我试图在MFC中创建一个搜索编辑控件,它始终在控件窗口中显示一个图标(无论控件的状态和文本如何).我多年前写过类似的东西并且运行得很好,但代码不再适用于Windows 7及更新版本(甚至可能是Vista,但没有尝试过).发生的情况是控件中显示的图像与输入区域重叠(参见下图).

代码背后的想法:

  • 有一个派生自的类CEdit(在OnPaint中处理绘画)
  • 右侧显示图标,根据图标的大小缩小编辑区域
  • 对于单行和多行编辑,调整大小的方式不同.对于单行,我调用SetMargins,对于多行编辑,我调用SetRect.
  • 此编辑调整大小应用于PreSubclassWindow(),OnSize()OnSetFont()

这是编辑输入大小的应用方式:

void CSymbolEdit::RecalcLayout()
{
    int width = GetSystemMetrics( SM_CXSMICON );

    if(m_hSymbolIcon)
    {
      if (GetStyle() & ES_MULTILINE)
      {
         CRect editRect;
         GetRect(&editRect);

         editRect.right -= (width + 6);

         SetRect(&editRect);
      }
      else
      {
         DWORD dwMargins = GetMargins();
         SetMargins(LOWORD(dwMargins), width + 6);
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

下图显示了单行编辑的问题(图像已放大以获得更好的视图).黄色背景仅用于突出显示,在实际代码中我使用COLOR_WINDOW系统颜色.您可以看到,当单行编辑具有文本并具有输入时,左侧图像将被绘制.对于SetRect正确设置格式矩形的多行编辑,不会发生这种情况.

在此输入图像描述

我尝试使用ExcludeClipRect删除正在显示图像的编辑区域.

CRect rc;
GetClientRect(rc);

CPaintDC dc(this);
ExcludeClipRect(dc.m_hDC, rc.right - width - 6, rc.top, rc.right, rc.bottom); …
Run Code Online (Sandbox Code Playgroud)

c++ mfc paint editcontrol visual-c++

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

如何将System.Object [*]强制转换为System.Object []

当我试图将ArrayVFP9语言COM/DLL返回到我的.NET C#项目时,我收到一个System.Object[*]数组,我无法转换为System.Object[](没有星号).

c# interop casting visual-foxpro

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

过滤可观察的集合

我有一个ListView控件,显示可观察集合中的项目.这些项目需要过滤.我可以用a做CollectionViewSource,但每次项目更改时都需要更新过滤器.

我的项目看起来像这样:

enum Status {Done, Failed, Skipped, ...}

class Project {
  public string Name {get;set;}
  public Status Status {get;set;}
  // etc. etc.
}

class ProjectViewModel : INotifyPropertyChanged {
  private Project project;

  public ProjectBuildInfoViewModel(ProjectBuildInfo project)
  {
    this.project = project;
  }

  public string Name
  {
     get { return project.Name; }
     set { project.Name = value; OnPropertyChanged("Name"); }
  }

  // etc. etc.
}

class CollectionViewModel {
  private ObservableCollection<ProjectViewModel> projects = 
             new ObservableCollection<ProjectViewModel>();

  public ObservableCollection<ProjectViewModel> Collection
  {
     get { return …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf listview filtering observablecollection

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

C++指向函数调用的指针不在范围内

我花了最后3个小时试图找出我做错了什么.我只需要另外一些眼睛,我已经尝试了我能想到的一切,甚至各种随机排列,试图让编译器告诉我一些有用的东西.

这是我现在的位置:

码:

class villain
{
public:
   villain();
   //lots of other stuff
   bool Type1EnemyBlasts();
   bool Type2EnemyBlasts();
   bool (villain::*OnFire)();
};

villain::villain()
{
    //lots of other stuff
    OnFire = &villain::Type1EnemyBlasts;
}

main
{
    //lots and lots of other stuff
    villain *targets[100];
    targets[0] = new villain();
    if(targets[0]->*OnFire() == true)
    {
         //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用"targets [0] - >*OnFire()"时会发生错误,其中声明它未在此范围内声明.当我在恶棍构造函数中定义它时,我必须用"&villain ::"来定义"OnFire",这让我觉得很奇怪,但是我发现的所有信息都表明它必须以这种方式完成,而且确实它会搅动如果我不这样做,就会发生过多的错误.

调用属于目标[0]的*OnFire()指针的正确语法是什么?

c++ pointers scope function-pointers reference

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

$ ionicHistory不适用于ion-tabs

我在使用$ionicHistory的页面上使用时遇到问题ion-tabs.我用它来导航到上一个视图(使用goBack()).当我在视图中放置标签时,历史记录是错误的,后视图是之前的两个视图.

为了证明这一点,我创建了一个具有4页/视图的演示应用程序(此处为 plunker ).第1页 - >第2页 - >第3页 - >第4页.最后一页上有标签.

angular
.module("demoapp", ['ionic'])
.config(['$stateProvider', '$urlRouterProvider',
  function($stateProvider, $urlRouterProvider){
    $stateProvider
        .state('first', {
           url: '/',
           controller: 'firstController',
           templateUrl: 'first.html',
        })
        .state('second', {
           url: '/second',
           controller: 'secondController',
           templateUrl: 'second.html',
        })
        .state('third', {
           url: '/third',
           controller: 'thirdController',
           templateUrl: 'third.html',
        })
        .state('fourth', {
           url: '/fourth',
           controller: 'fourthController',
           templateUrl: 'fourth.html',
        });

    $urlRouterProvider.otherwise("/");
  }])
.factory("historyFactory", ['$ionicHistory', function($ionicHistory){
  var show = function() {
    var text = "";

    var vh = $ionicHistory.viewHistory();
    if(vh …
Run Code Online (Sandbox Code Playgroud)

javascript navigation angularjs ionic-framework

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

基于 Chromium Edge 的 WebView2 不起作用

我已按照WebView2 入门(开发者预览版)中的所有说明创建了一个使用 Microsoft Edge (Chromium) 的应用程序。但是,它无法找到 Edge 浏览器。我还尝试了示例应用程序(thisthis),但结果相同。我已经为 32 位和 64 位构建了应用程序。

我从调用中得到的CreateWebView2EnvironmentWithDetails()是错误0x80070002,即ERROR_FILE_NOT_FOUND系统找不到指定的文件。

HRESULT hr = CreateWebView2EnvironmentWithDetails(nullptr, nullptr, nullptr,
  Callback<IWebView2CreateWebView2EnvironmentCompletedHandler>(
     [hWnd](HRESULT result, IWebView2Environment* env) -> HRESULT {

        // Create a WebView, whose parent is the main window hWnd
        env->CreateWebView(hWnd, Callback<IWebView2CreateWebViewCompletedHandler>(
           [hWnd](HRESULT result, IWebView2WebView* webview) -> HRESULT {
              if (webview != nullptr) {
                 webviewWindow = webview;
              }

              // Resize WebView to fit the bounds of the parent …
Run Code Online (Sandbox Code Playgroud)

c++ browser windows webview microsoft-edge

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

我在哪里翻译MFC消息框

我正在将MFC应用程序本地化为日语,并且资源正常运行.

我当前的问题是,当我使用AfxMessageBox或者MessageBox,对话框标题和按钮消息以英文出现时,我还没有找到任何改变它的地方.

我没有找到任何有用的搜索MSDN或谷歌.

所以,

这有用吗?Windows是否提供日语,阿拉伯语和俄语的"确定"或"是/否"按钮?

如果没有,我可以指定更改这些内容?

编辑:我去了MessageBoxEx,写一个包装类,使其使用方便AfxMessageBox.它看起来MB_OK在英语和日语中都显示为"OK",但是其他按钮选项MB_YESNO被翻译成我认为正确的日语.这是一个相当小的翻译应用程序,我们可能希望对较大的应用程序使用自动化的东西.

mfc visual-c++

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