set link for CAknMessageQueryDialog

要给CAknMessageQueryDialog 加两个link, 一个是Url的, 一个是MailBox的

 

这就有一个问题,  直接用CAknMessageQueryDialog的Setlink功能的时候, 不管你是哪种type, 只要聚焦到link上面的时候总会是view的softkey

 

正常情况下, 我们需要在link是在mailbox的时候菜单显示成"Mailo" or something.

 

这个情况下, 以前的功能就不够用了

 

尝试着访问CAknMessageQueryControl, 但是能用的几个函数都没有IMPORT出来

 

所以还是只能从UI下手

 

首先, 得检验当前的focus是不是在link上面

control里面有一个IsHighLighted, 但是用不了(呵呵, 废话),  所以用笨办法

 

监控按键事件, 然后在里面判断当前的cba里面有没有CAknSoftKeyView, 有的话说明当前肯定是聚焦的

 

 

好了, 第一部分的任务解决了, 下面的重点 怎么样确定当前的type是哪种类型的呢

 

分三步走:

1。 在setlink 和setcallback的时候把type 带进去:

struct LinkStr
{
    CFindItemEngine::TFindItemSearchCase iLinkType;
    TBuf<KMaxServerNameLength>      iLinkText;
};

 

 

2。定义一个静态变量来保存当前的typa值:

static CFindItemEngine::TFindItemSearchCase iCurrentType;

 

 

3。 当每次检测出当前focus的时候, 调用一下callback,  这个是用:

ProcessCommandL(EAknSoftkeyView);

 

然后在callback中获得当前的type值

 

TInt HandleLinkL( TAny* aPtr )
    {           
    LinkStr * aLink = (LinkStr *)aPtr;
    iCurrentType = aLink->iLinkType;
      return 0;

}

 

4。 得到这个值以后, cba->SetCommandL(EAknSoftkeyView, _L("MailTo"));

 

 

好了, 大概步骤就是这么多了

 

看得很纠结阿

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值