#include "SectsInfomation.h"
#include "WidgetMgr.h"
#include "XButton.h"
#include "XSroll.h"
#include "Config.h"
#include "XCommon.h"
#include "XStatic.h"
#include "XImage.h" #if(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
#include "GameCenter.h"
#include "AppExtra.h"
#endif
/*******************************
*函数名称:CSectsInfomation
*函数功能:构造函数
*函数参数:void
*函数返回值:void
*备注:
*******************************/
CSectsInfomation::CSectsInfomation(void)
{
m_pBtnExit = NULL;
m_pSta = NULL;
m_PageNum = ;
m_FirstId = ;
m_PageTotal = ;
CCLabelTTF *pLabel = NULL;
memset(acPage,,);
} CSectsInfomation::~CSectsInfomation(void)
{
}
/*******************************
*函数名称:init
*函数功能:初始化函数
*函数参数:void
*函数返回值:true--初始化成功;false--初始化失败
*备注:
*******************************/
bool CSectsInfomation::init()
{
bool bRet = false; CWidgetMgr::getInstance()->loadWidget(this, _IDD_CSectsInfomation);
CWidgetMgr::getInstance()->addWnd(this); for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
//给按钮添加响应函数
if (UI_BUTTON == (*it)->getUIType())
{
(*it)->setClickListener(this, callfuncO_selector(CSectsInfomation::btnMsgCallback));
}
//通过id中的第三位映射到相应的图片,每个按钮的id都加上200就是对应要显示的图片
int iNum = (*it)->getId();
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
m_vecImage.push_back(*it);
}
//显示第一页
iNum = (*it)->getId();
iNum = (*it)->getId() / ;
if (iNum != )
{
(*it)->setVisible(false);
}
//保存最大页码
if (iNum > m_PageTotal)
{
m_PageTotal = iNum;
}
//第一张任务图片要显示
if ((*it)->getId() == )
{
(*it)->setVisible(true);
}
}
//显示页码
m_pSta = (CXStatic*)(this->getCtrl());
char acTemp[] = {};
strcpy(acPage,"1/");
itoa(m_PageTotal,acTemp,);
strcat(acPage,acTemp);
pLabel = CCLabelTTF::create(acPage,"Gautami",);
m_pSta->setLabel(pLabel);
m_pSta->setPosition(,);
m_pSta->setVisible(true);
//选中框的图片
m_pImg = (CXImage*)(this->getCtrl());
this->setVisible(false);
return true;
} /*******************************
*函数名称:btnMsgCallback
*函数功能:按钮的响应函数
*函数参数:CCObject* pSender--这里传进来的是this指针
*函数返回值:void
*备注:这里处理四种情况:
1.上一页
2.下一页
3.返回
4.点击任务列表中某项的响应
这里不做页面循环,当到最后一页时取消下一页按钮的响应
当到了第一页时取消上一页按钮的响应
*******************************/
void CSectsInfomation::btnMsgCallback(CCObject* pSender)
{
int iAddNum = ;
CXImage *pImage = NULL;
CXButton *pButton = (CXButton*)pSender;
if (pButton->getId() == )
{
this->setVisible(false);
}
else if (pButton->getId() == )
{
m_PageNum = m_PageNum - ; if ( > m_PageNum)
{
m_PageNum = ;
}
else
{
//上一页
for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
int iNum = ;
iNum = (*it)->getId() / ;
if (iNum != m_PageNum)
{
(*it)->setVisible(true);
}
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
}
if ((*it)->getId() == m_PageNum * + )
{ CCPoint point = (*it)->getPosition();
m_pImg->setPosition(point.x ,point.y);
}
int num = m_PageNum * + + ;
if ((*it)->getId() == num)
{
(*it)->setVisible(true);
}
}
memset(acPage,,);
char acTotal[] = {};
char acTemp[] = {};
itoa(m_PageNum,acTemp,);
itoa(m_PageTotal,acTotal,);
strcpy(acPage,acTemp);
strcat(acPage,"/");
strcat(acPage,acTotal);
pLabel->setString(acPage);
} }
else if (pButton->getId() == )
{
m_PageNum = m_PageNum + ; if (m_PageTotal < m_PageNum)
{
m_PageNum = m_PageTotal;
}
else
{
//下一页
for (deque<CXWindow*>::const_iterator it = this->getDequeWnd().begin(); it != this->getDequeWnd().end(); it++)
{
int iNum = ;
iNum = (*it)->getId() / ;
if (iNum != m_PageNum)
{
(*it)->setVisible(true);
}
iNum = (*it)->getId() / ;
iNum = iNum % ;
if (iNum >= )
{
(*it)->setVisible(false);
}
if ((*it)->getId() == m_PageNum * + )
{
CCPoint point = (*it)->getPosition();
m_pImg->setPosition(point.x ,point.y);
}
int num = m_PageNum * + + ;
if ((*it)->getId() == num)
{
(*it)->setVisible(true);
}
}
memset(acPage,,);
char acTotal[] = {};
char acTemp[] = {};
itoa(m_PageNum,acTemp,);
itoa(m_PageTotal,acTotal,);
strcpy(acPage,acTemp);
strcat(acPage,"/");
strcat(acPage,acTotal);
pLabel->setString(acPage);
} }
else
{
//获取当前选中按钮所在的坐标,然后通过这个坐标,边框显示在相应位置
CCPoint point = pButton->getPosition();
m_pImg->setPosition(point.x ,point.y); SectsNotVisible(); //通过id获取图片控件的指针
pImage = (CXImage*)(this->getCtrl(pButton->getId() + ));
pImage->setVisible(true);
}
} void CSectsInfomation::btnMsgSrollCallback(CCObject* pSender)
{ }
/*******************************
*函数名称:SectsNotVisible
*函数功能:屏蔽所有任务图片控件
*函数参数:void
*函数返回值:void
*备注:
*******************************/
void CSectsInfomation::SectsNotVisible()
{
for (deque<CXWindow*>::const_iterator it = m_vecImage.begin(); it != m_vecImage.end(); it++)
{
(*it)->setVisible(false);
}
}

CSectsInfomation.cpp文件的更多相关文章

  1. atom 调用g++编译cpp文件

    atom 有script插件可以直接调用很多编译器,试了很多次一直出问题找不到文件,查了文档之后发现script只支持OSX和linux. 所以,还是使用gpp-compiler比较靠谱 gpp-co ...

  2. C++链接两个cpp 文件

    我们在编程中,有没有想过,分别写代码,然后把两个cpp,文件合并,两个自身本不能运行的文件,在一起却可以运行(主要牵扯函数调用,一个有声明和调用,另一个定义).那么具体如何实现呢? 跟着我的步骤: 1 ...

  3. ios工程中加入.c/.cpp文件

    如果你在工程里拉入.c/.cpp文件就会导致工程报错, 现在有两种解决方式 1. 把.c文件的后缀全部改成.m的后缀 把.cpp文件的后缀改成.mm的后缀 2. 使用 工程名-Prefix.pch 并 ...

  4. C中头文件在cpp文件中引用和.h文件引用

    1.编译器会单独编译每个cpp文件.头文件会复制到cpp文件中. 2.有时会遇到这样的一个问题a.cpp要调用b.cpp中的函数,而b.cpp又要调用a.cpp中的函数.这就牵扯到相互调用.这时如果我 ...

  5. [vim配置]windows下在vim中使用gcc/g++编译调试c/cpp文件

    在Linux里面混了一个多月,vim编程用得甚爽.无奈前天将Linux里面的编程文件夹误删,而技术不精无法找回,悲痛欲绝.再者,无限怀念windows里面的游戏,并觉得现在在Linux里面也学不到什么 ...

  6. C++学了这么多年,你也许不知道为什么类定义要放在.h文件,类实现放在cpp文件。它们如何关联?

    原文  http://blog.csdn.net/ithzhang/article/details/8119286 主题 C++  C++学了这么多年你知道为什么定义类时,类的定义放在.h文件中,而类 ...

  7. QT-- MainWindow外的cpp文件调用ui

    这几天在学习QT,想写一个类似VIM的小软件,刚开始不注重代码结构,全部实现都写在MainWindow文件中,导致MianWindow文件十分的长而且很难去阅读,就想着把函数按照功能分到不同的cpp文 ...

  8. WIN10 64位下VS2015 MFC直接添加 halcon 12的CPP文件实现视觉检测

    近段时间开始接触halcon,但是在VS2015里面使用,无论是配置还是生产EXE文件,都不如意. 加上网上的教程很多,经过多次测试,其实有很多地方无需修改,如果修改的太多也失去了直接添加封装的意义. ...

  9. 一个简单的makefile,一次性编译本文件夹下所有的cpp文件

    代码: CXX := g++ CFLAGS := -g TARGET := xxx.exe SRCS := $(wildcard *.cpp) OBJS := $(patsubst %cpp,%o,$ ...

随机推荐

  1. SpEL笔记

    SpEL使用示例 <bean id="chineseA" class="com.xxx.bean.Chinese" scope="prototy ...

  2. OpenCV学习(3) OpenCV框架

          OpenCV是一个开源的视觉库,其中包括很多计算机视觉的算法实现.在版本2.2以后,OpenCV采用C++特征的API,在1.x版本中,OpenCV函数都是传统的C语言形式.       ...

  3. _vsnprintf在可变参数打印中的用法

    _vsnprintf,C语言库函数之一,属于可变参数.用于向字符串中打印数据.数据格式用户自定义. 函数简介 编辑 头文件: #include <stdarg.h> 函数声明: int _ ...

  4. 怎么删除桌面右键"打开好桌道壁纸"

    “好桌道”是一款优秀的桌面美化工具,其中的子程序“好桌道壁纸”是其重要的组成部分,但是在卸载其子程序“好桌道壁纸”时,往往会在桌面的鼠标右键中残留下“打开好桌道壁纸”项,下面解密通过修改注册表的方式彻 ...

  5. IOS中的XML解析之DOM和SAX

    一.介绍 dom是w3c指定的一套规范标准,核心是按树形结构处理数据,dom解析器读入xml文件并在内存中建立一个结构一模一样的“树”,这树各节点和xml各标记对应,通过操纵此“树”来处理xml中的文 ...

  6. mysql创建、删除用户与授权(linux測试)

    注:我的执行环境是SUSE Linux + mysql5.6 一.创建用户:  命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';  ...

  7. Linux统计/监控工具SAR详细介绍

    转载:http://www.ctohome.com/FuWuQi/1b/688.html sysstat 工具简介 sysstat 是 Linux 系统中的常用工具包.它的主要用途是观察服务负载,比如 ...

  8. 【Python】http.client库的用法

    代码: # http.client测试,该库较底层,不常用 import http.client conn=None try: conn=http.client.HTTPSConnection(&qu ...

  9. js看起来比较怪异的写法 (综合)

    1.$(function() {}中$是什么意思? <script type="text/javascript"> $(function(){ $("#tre ...

  10. Android 使用ORMLite 操作数据库

    参考:http://blog.csdn.net/cjjky/article/details/7096987 ormlite 方法查询:http://ormlite.com/javadoc/ormlit ...