#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. 解决kylin报错:java.lang.ArrayIndexOutOfBoundsException: -1

    报错信息: -- ::, INFO [pool--thread-] cli.DictionaryGeneratorCLI: : Building snapshot of ENERGON_DM.DM_D ...

  2. 更改Thunderbird的默认语言

    使用的Thunderbird Poratable版本是英文的,可以用以下方式修改为中文界面: 1.下载中文语言包 在官方网站的https://addons.mozilla.org/en-US/thun ...

  3. (转)SQL查询案例:多行转换为一行

    原文:http://www.cnblogs.com/sammon/archive/2012/05/10/2494362.html 测试表与测试数据 CREATE TABLE TestTitle ( n ...

  4. iOS开源项目:UIDevice-with-UniqueIdentifier-for-iOS-5

    用于替代系统UDID的方法. https://github.com/gekitz/UIDevice-with-UniqueIdentifier-for-iOS-5 1.使用方法: UILabel *l ...

  5. AndroidStudio如何引入so包

    转自:http://blog.csdn.net/aplixy/article/details/51592035 先说前提条件,我的AndroidStudio版本是2.2 Preview 3,版本是2. ...

  6. C#创建word,操作、读写

    要使用C#操作word,首先要添加引用: 1.添加引用->COM->Microsoft Word 11.0 Object Library 2.在.cs文件中添加 using Word;下面 ...

  7. 【Linux】linux bash shell之变量替换::=句法、=句法、:-句法、-句法、=?句法、?句法、:+句法、+句法

    linux bash shell之变量替换::=句法.=句法.:-句法.-句法.=?句法.?句法.:+句法.+句法   linux bash shell之变量替换::=句法.=句法.:-句法.-句法. ...

  8. Ubuntu挂载samba共享目录

    Ubuntu中现在没有smbfs了,所以smbmount命令也用不了了,现在可以使用mount.cifs命令来挂载. Usage:  mount.cifs <remotetarget> & ...

  9. 《深入浅出数据分析》-利用Excel的Solver求橡皮玩具的最大利润

    背景:一玩具厂可以生产两种浴盆玩具,分别是橡皮鸭和橡皮鱼,并且原材料和生产时间都有所限制,求如何才分配生产两种玩具的数量才可以让厂商达到最大利润. 假设条件如下: 产品名称 数量   duck a   ...

  10. ASP站点无法访问怎么办

    确保启用了目录浏览功能