#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. 《Android传感器高级编程》

    <Android传感器高级编程> 基本信息 原书名:Professional Android Sensor Programming 原出版社: Wrox 作者: (美)米内特(Greg M ...

  2. DataColumn

    DataColumn 是用于创建 DataTable 的列.下面示例使用不同技巧创建.配置一个列,并把它添加到一个 DataTable 中. using System; using System.Da ...

  3. Ubuntu 14.04安装语言包后无法选择汉语问题解决

    如需转载请标明出处:http://blog.csdn.net/itas109 QQ技术交流群:129518033 安装完语言包后.尽管里面有了汉语.可是是灰色的.例如以下图所看到的: watermar ...

  4. angularjs中的数据绑定

    这是一个最简单的angularjs的例子,关于数据绑定的,大家可以执行一下,看看效果 <html ng-app> <head> <title>angularjs-i ...

  5. T-SQL 之 存储过程

    当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 一.存储过程的概念 存储过程Procedure是一组为了完成特定功能的SQL语句集合,经 ...

  6. octopress github 换电脑 使用

    octopress github 换电脑 使用

  7. es5 - array - push

    /** * 参数:arr.push(element1, ..., elementN) * 作用:被添加到数组末尾的元素. * 当调用该方法时,新的 length 属性值将被返回. * 描述:push ...

  8. 算法笔记_012:埃拉托色尼筛选法(Java)

    1 问题描述 Compute the Greatest Common Divisor of Two Integers using Sieve of Eratosthenes. 翻译:使用埃拉托色尼筛选 ...

  9. Python 访问dict

    访问dict 1:可以if判断元素是否存在 2:dict.get('key')我们已经能创建一个dict,用于表示名字和成绩的对应关系:d = { 'Adam': 95, 'Lisa': 85, 'B ...

  10. [Swift A] - Using Swift with Cocoa and Objective-C--Mix and Match

    Swift与Objective-C的兼容能力允许你在同一个工程中同时使用两种语言.你可以用这种叫做“mix and match”的特性来开发基于混合语言的应用.使用Swfit的最新特性--“mix a ...