发布于

Aiinone软件使用入门初体验

工程构建文件理解

理清楚主要工程构建文件是开始的第一步,如果工程文件目录都不清楚,也就不知道如何入手了,以下是个人理解,如有出入请多指教。


native,该本地文件,主要由 SDK 根据软件框架基于 inonegui 生成的本地文件,包含基础头文件 include 目录和 inonectrl 控件头文件目录。
userctrl 用户控件目录,该目录是我们使用者需要关注的,代码大部分也是在此文件修改。userctrl 目录下的。cpp 文件是在新建布局文件后编译生成的控件层文件
resource 资源文件,有字符集 charset,图片 drawable,布局 layout。字符集存放的是在文字控件中需要显示的花里胡哨的图片,我接触到的是在文本框中显示秒数,把图片添加到字符集,给图片写上对应的编号。图片存放的是在布局中所用到的图片。layout 是新建的布局。ino 文件。

tips:在 include 目录下的 xxxactivity.h 文件中,资源文件目录里的布局目录 layout 新建布局文件,布局文件名会在 xxxactivity.h 中生成宏定义对应 ID,供于调用,如在窗口页需要实现多窗口,则可调用窗口页的控件名对象,调用窗口页控件名对象里的具体方法打开到对应布局到窗口页。
例: mpWindowPage1->LoadPageById();

userctrl 控件层 main.cpp 文件主要函数

在 main.cpp 文件主要对应布局文件的 main.ino,布局 layout 文件和 userctrl 控件层里的。cpp 文件是相对应的。创建一个新布局 userctrl 就会生成一个与之对应的。cpp 文件,该文件主要包括控件函数的具体实现。

常用全局接口函数
启动应用:InoLaunchActivity(strAppName,iPageId)

  • strAppName : "应用名称"
  • iPageId :"应用内页面 ID",如不传此参数,启动应用默认页面;

发送消息:InoPostMessage(iMsg, wParam, lParam, hWnd)

  • iMsg:"消息 ID,自定义消息 MSG_USER 递增,如#define A (MSG_USER+x)"
  • wParam:可以传自定义参数
  • lParam:可以传自定义参数
  • hWnd:接收对象,默认为 NULL 传递给 ActivityManage

#define START_TIMER(X) (mpActivity->StartUserTimer(this,X))
#define STOP_TIMER(X) (mpActivity->StopUserTimer(this,X))
顾名思义这是时间定时器,设置时间的宏定义,都是以毫秒(ms)为单位,主要应用与当前文件的计时用于设置时间或在固定时间发生具体功能。

此函数在创建页面时调用
VOID UiCtrl::OnPageCreate()
{
CLog::LogU("[%s:%s] \n",FILE,FUNCTION);
}
FILE:这是一个预处理器宏,它会被替换为当前源文件的文件名。
FUNCTION:这是另一个预处理器宏,它会被替换为当前函数的名称。
也就是被调用时会打印当前函数在那个目录,哪个文件哪个函数
例:[INOGUI] [userctrl/settings.cpp:OnPageStart]

在页面销毁时调用,相当于析构函数
VOID UiCtrl::OnPageDestroy()
{
CLog::LogU("[%s:%s] \n",FILE,FUNCTION);
}

在页面启动时调用
VOID UiCtrl::OnPageStart()
{
CLog::LogU("[%s:%s] \n",FILE,FUNCTION);
}

页面停止时调用
VOID UiCtrl::OnPageStop()
{
CLog::LogU("[%s:%s] \n",FILE,FUNCTION);
}

启用定时器,定时时间到则调用,可以在页面启动函数的时候启动定时器
VOID UiCtrl::OnPageTimer(UINT32 iInterval)
{
CLog::LogU("[%s:%s] iInterval:%d\n",FILE,FUNCTION,iInterval);
}

此函数解释时键盘触摸时调用
LRESULT UiCtrl::OnPageTouchEvent(UINT iMsg, WPARAM wParam, LPARAM lParam, DWORD dwTime)
{
//CLog::LogU("[%s:%s] iMsg:%d\n",FILE,FUNCTION,iMsg);
return ERR_OK;
}

  • iMsg:这是函数的第一个参数,iMsg 可能代表消息类型或标识符。
  • WPARAM wParam 和 LPARAM lParam:这两个参数是 Windows 消息处理机制中的标准参数,用于传递消息的附加信息。
  • DWORD dwTime:DWORD 是一个双字(32 位)无符号整数类型,dwTime 可能表示事件发生的时间戳或其他与时间相关的信息。

处理页面或界面键盘事件,也可通过此函数接收另一个工程发送过来的信息
LRESULT UiCtrl::OnPageKeyEvent(UINT iMsg, WPARAM wParam, LPARAM lParam, DWORD dwTime)
{
//CLog::LogU("[%s:%s] iMsg:%d\n",FILE,FUNCTION,iMsg);
return ERR_OK;
}
例:if (iMsg == INO_USERMSG(2))
{
mpTitle->SetText((CHAR *)wParam);
}

在布局添加控件,编译之后,会对控件名生成对应控制函数如添加了按钮和文本
在点击按钮时调用
VOID UiCtrl::Button1_OnClick(InoControl *pControl, WPARAM wParam, LPARAM lParam)
{
CLog::LogU("[%s:%s] Name:%s \n",FILE,FUNCTION,pControl->GetName().c_str());
}

长按按钮时调用
VOID UiCtrl::Button1_OnLongClick(InoControl *pControl, WPARAM wParam, LPARAM lParam)
{
CLog::LogU("[%s:%s] Name:%s \n",FILE,FUNCTION,pControl->GetName().c_str());
}

  • InoControl *pControl:这是一个指向 InoControl 类型的指针,代表触发点击事件的控件对象。
  • WPARAM wParam 和 LPARAM lParam:这两个是标准的 Windows 消息处理参数,用于传递消息的附加信息

文本没有点击事件所以没有文本的具体函数,但是会在 include 中的的 uictrl.h 中生成对应的控件类指针对象
InoLabel *mpLabel1;
可以通过该对象调用 InoLabel 类中的具体方法。
例:mpLabel1->SetText();

仅做技术交流,如有不足之处,请大佬指点。

浏览 (721) 点赞 (1) 收藏 分享
评论