DXライブラリをiOSで使うー C++からObj-Cへ
こんにちは、川上です。
この頃、投稿する間があまりにも、ゆっくり過ぎますwね。m(_ _)m
まず、コレでしたwね。
ーー DxCarMain.cppーー
1 2 3 | // MARK: === Screen Frameの縦横サイズを取得する stSCREEN_SIZE frm; SubView::callObjc_GetScreenSize(&frm); |
SubViewクラスに、まず、お約束のプロトタイプを書いといて・・
ーー SubView.h ーー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #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 ーー
1 2 3 4 5 6 7 | // 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 ーー
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | #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。
ではでは。