大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

DXライブラリをiOSで使うー C++からObj-Cへ 

著者:川上洋
公開日:2020/06/05
最終更新日:2020/06/05
カテゴリー:技術情報 雑記

こんにちは、川上です。

この頃、投稿する間があまりにも、ゆっくり過ぎますwね。m(_ _)m
まず、コレでしたwね。

ーー DxCarMain.cppーー

    
// MARK: === Screen Frameの縦横サイズを取得する 
    stSCREEN_SIZE frm;
    SubView::callObjc_GetScreenSize(&frm);

SubViewクラスに、まず、お約束のプロトタイプを書いといて・・

ーー SubView.h ーー

#ifndef SubView_h
#define SubView_h

// MARK: ---- Screen Size Struct
struct stSCREEN_SIZE
{
    int width;
    int height;
};

//  MARK: ---- C++ から呼ばれるクラスを宣言する
class SubView
{
    public:
      // MARK: --  Screen Frameの縦横サイズを取得する Bool Portrait:TRUE  / Landspace:FALSE
        static BOOL callObjc_GetScreenSize(stSCREEN_SIZE* pFrm);
 };

#endif /* SubView_h */

で、本体を書いとく
ーー SubView.m ーー

// MARK: --  Screen Frameの縦横サイズを取得する Bool b_gPortrait:TRUE  / Landspace:FALSE
BOOL SubView::callObjc_GetScreenSize(stSCREEN_SIZE* pFrm)
{
    [ClassObjC objC_GetFrmSize:pFrm];
    
    return pFrm->width < pFrm->height ? TRUE : FALSE;
}

戻り値の(Bool b_gPortrait:TRUE / Landspace:FALSE)は、蛇足かもね。

ここから、Objective-Cの世界へと繋いで行くんですw。
SubView.m に、ズラズラと#import置いといて、関数のプロトタイプと実装を書いていく。
ーー SubView.m ーー

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

#include "DxLib.h"
#import "SubView.h"

// ヘッダファイルではなく、ソースファイルで Objective-C クラスを宣言する
@interface ClassObjC : NSObject
// MARK:-- Get Frame size
+ (void)objC_GetFrmSize:(stSCREEN_SIZE*)pFrmSize;

@end

//MARK: - #### 通常通りソースファイルで Objective-C クラスを実装する
@implementation ClassObjC
// MARK: -- [Objective-C]
// ---  Screen Frameの縦横サイズを取得する
+ (void)    objC_GetFrmSize:(stSCREEN_SIZE*)pFrmSize
{
    CGRect r1 = [[UIScreen mainScreen] bounds];
    printf("w:%f, h:%f\n", r1.size.width, r1.size.height);
    
    pFrmSize->width = (int)r1.size.width;
    pFrmSize->height = (int)r1.size.height;

}
@end

こうして、DX側にScreenの縦横サイズが取れれば、後はなんとかなりそうですw。

ではでは。

    上に戻る