Archive for 3 月, 2008

WTL::CListViewCtrl动态显示Tooltip的实现

星期四, 13 3 月, 2008

在WTL::CListViewCtrl控件实现Tooltip显示的实例:

1. 从CListViewCtrl类重载,创建CTooltipCtrl控件,处理鼠标事件。

重载类头文件:
class CListViewCtrlTip : public CWindowImpl<CListViewCtrlTip, CListViewCtrl>
{
public:
 CListViewCtrlTip()
 {
  m_nCurItem = -1;
  m_dwCurItemData = 0;
 }

 BEGIN_MSG_MAP(CListViewCtrlTip)
  MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseMessage)
  MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
 END_MSG_MAP()

 LRESULT OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
 LRESULT OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

 void Attach(HWND hWnd);
 void Detach();
 void DeactivateTip();
 int GetCurItem()
 {
  return m_nCurItem;
 }

 DWORD GetCurItemData()
 {
  return m_dwCurItemData;
 }

private:
 CToolTipCtrl m_ctrlTip;
 int m_nCurItem;
 DWORD m_dwCurItemData;
};

重载类实现:
void CListViewCtrlTip::Attach(HWND hWnd)
{
 // Use subclass window to support message event instead of attach
 if (CWindowImpl<CListViewCtrlTip, CListViewCtrl>::SubclassWindow(hWnd))
 {
  m_ctrlTip.Create(m_hWnd);
  m_ctrlTip.Activate(FALSE);
  m_ctrlTip.AddTool(m_hWnd);
  m_ctrlTip.SetMaxTipWidth(260); // Set the max tip width to 260 characters
  m_ctrlTip.SetDelayTime(TTDT_AUTOPOP, 10000); // Set auto pop delay time to 10s
 }
}

void CListViewCtrlTip::Detach()
{
 if (::IsWindow(m_hWnd))
 {
  m_ctrlTip.Activate(FALSE);
  m_ctrlTip.DelTool(m_hWnd);
  CWindowImpl<CListViewCtrlTip, CListViewCtrl>::UnsubclassWindow(TRUE);
 }
}

void CListViewCtrlTip::DeactivateTip()
{
 m_nCurItem = -1;
 m_dwCurItemData = 0;
 m_ctrlTip.Activate(FALSE);
}

LRESULT CListViewCtrlTip::OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
 MSG msg = { m_hWnd, uMsg, wParam, lParam };

 if (m_ctrlTip.IsWindow())
 {
  m_ctrlTip.RelayEvent(&msg);
 }
 bHandled = FALSE; // Leave the message to next case

 return 0;
}

LRESULT CListViewCtrlTip::OnMouseMove(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
 int xPos = GET_X_LPARAM(lParam);
 int yPos = GET_Y_LPARAM(lParam);
 POINT pt = { xPos, yPos };
 int nCurItem = HitTest(pt, NULL);
 
 // Check and active the tool tip control
 if (nCurItem >= 0)
 {
  if (m_nCurItem != nCurItem)
  {
   m_ctrlTip.Activate(FALSE); // Deactivate first
   m_nCurItem = nCurItem;
   m_dwCurItemData = (ULONG)GetItemData(m_nCurItem);
   m_ctrlTip.Activate(TRUE);
  }
 }
 else
 {
  DeactivateTip();
 }
 bHandled = FALSE; // Leave the message to next case

 return 0;
}

2. 修改调用类中CListViewCtrl类型为重载的类型,在初始化函数中调用Attach方法,在OnDestroy调用Detach方法。

CListViewCtrlTip m_lvw;

m_lvw.Attach(GetDlgItem(IDC_IST));

m_lvw.Detach();

3. 调用类处理TTN_GETDISPINFO通知,更新Tooltip的数据。

char m_szCurToolTip[MAX_TOOLTIP_LEN];

LRESULT CTestDlg::OnNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam,
          BOOL& /*bHandled*/)
{
 switch (((LPNMHDR)lParam)->code)
 {
 case TTN_GETDISPINFO: // Notify event from list view control to get the tool tip string
  LPNMTTDISPINFO pInfo = (LPNMTTDISPINFO)lParam;
  // Make dynamic tool tip string here
  pInfo->lpszText = m_szCurToolTip;

  break;
 }

 return 0;
}

常用时区简称

星期三, 12 3 月, 2008

目前存在的时区有:
GMT 格林威治标准时间 GMT
UTC 全球标准时间 GMT
ECT 欧洲中部时间 GMT+1:00
EET 东欧时间 GMT+2:00
ART (阿拉伯)埃及标准时间 GMT+2:00
EAT 东非时间 GMT+3:00
MET 中东时间 GMT+3:30
NET 近东时间 GMT+4:00
PLT 巴基斯坦拉合尔时间 GMT+5:00
IST 印度标准时间 GMT+5:30
BST 孟加拉国标准时间 GMT+6:00
VST 越南标准时间 GMT+7:00
CTT 中国台湾时间 GMT+8:00
JST 日本标准时间 GMT+9:00
ACT 澳大利亚中部时间 GMT+9:30
AET 澳大利亚东部时间 GMT+10:00
SST 所罗门标准时间 GMT+11:00
NST 新西兰标准时间 GMT+12:00
MIT 中途岛时间 GMT-11:00
HST 夏威夷标准时间 GMT-10:00
AST 阿拉斯加标准时间 GMT-9:00
PST 太平洋标准时间 GMT-8:00
PNT 菲尼克斯标准时间 GMT-7:00
MST 西部山脉标准时间 GMT-7:00
CST 中部标准时间 GMT-6:00
EST 东部标准时间 GMT-5:00
IET 印第安那东部标准时间 GMT-5:00
PRT 波多黎各和美属维尔京群岛时间 GMT-4:00
CNT 加拿大纽芬兰时间 GMT-3:30
AGT 阿根廷标准时间 GMT-3:00
BET 巴西东部时间 GMT-3:00
CAT 中非时间 GMT-1:00

新生儿购物篇(实惠又经济又实用购物心得)

星期一, 10 3 月, 2008

1、奶瓶
儿子半岁以前是母乳喂养,所以半岁以前奶瓶败得不多。后来国产爱得利、日本的贝亲、英国的新安怡都试过,得出的结论,几款奶瓶的差别不大,只是宝宝有先入为主的问题,儿子半岁前是用国产爱得利喝水,儿子就还是偏爱爱得利的奶瓶,最反感贝亲,估计是因为贝亲的那款天然橡胶的仿母乳奶嘴,烫过以后,有股味道。但侄儿生下来用的贝亲,1岁以前就只接受贝亲。所以我的结论是众妈妈没有必要在这上面多花银子,国产的就可以了。后来国内有了布朗博士奶瓶,据老妹讲,还不错,发现国内有买的时候,儿子已经不用奶瓶了,没有来得及败。

2、衣物
现在一般品牌的宝宝衣服都是3个月一个码,根据我的实际经验是因该有0-1月码的衣服才对。宝宝在月子里面长得很快,基本上是一天一两,出月子的时候就已经比出生的时候大多了。儿子出生前衣服买了一大堆,结果最实用的还是我外婆帮我在小店里面买的很没有看相的和尚服。而丽婴房的那几套最好看,却也最不实用。

0-1月的宝宝,我的建议是上身穿和尚衣,就是那种腰上一根带子的,有扣子的和套头的都不适合。实际上,如果有别人宝宝的旧衣裳接,0-3个月的宝宝,内衣完全可以穿旧衣裳。各位妈妈不要有心理障碍,以来省钱,关键宝宝肌肤嫩,旧衣裳更舒服。

关于0-1月宝宝的裤子问题,我是建议不穿。因为给月子里的宝宝穿裤子是一件很困难的事情。而宝宝又经常尿湿,老要换裤子。有条件的可以做几个像小睡袋的东西,就是和尚衣做长一点,像一个袍子,可以遮住宝宝的脚,下面在像信封一样封口,做这样的衣衣同样最好别用扣子,都用布带系。不方便做的妈妈,最简单的办法就是有一条大一点的毛巾围在宝宝腰上,用布带系着。下面用布带收一下口。儿子月子里就常这样,他外婆称那毛巾是鱼尾巴。

当然,如果妈妈接受尿不湿,打算月子里就全程尿不湿,那一岁以前宝宝衣服的最佳选择就是爬爬衣,儿子晚上睡觉就是用尿布湿,2岁以前的睡衣全部都是爬爬衣。爬爬衣的最大好处就是宝宝活动很自如,又不用担心宝宝肚子着凉。

准妈妈给宝宝准备衣物要注意每个尺码不要买得太多,宝宝长得很快。而且要考虑宝宝是什么季节出生,对应每个季节宝宝是多大而准备衣物,我当时就犯了这种错误,怀儿子的时候买的太多,又有的没有考虑季节的问题,结果有的衣物甚至没有开封。现在发现身边不少准妈妈也容易犯这个错误。

另外新妈妈要注意的就是不要过分的迷信品牌衣服,更多相信自己的手感。宝宝衣服关键是质地,关于甲醛超标的问题,我看是众多大品牌每次都榜上有名,所以相信品牌,不如坚持新衣裳洗上两遍再给宝宝穿。我现在给儿子买衣服的策略是不看品牌,注意质地和做工,钱要花在刀刃上。

3、奶粉
儿子半岁以前是100%的母乳,半岁以后因为做妈妈上班了,奶水质量和数量都直线下降(产后上班的妈妈注意了,我当时没有注意,想象上班的第一个月,没有及时意识自己的奶水不行,儿子是挨了饿的,一个月几乎没有长,写到这里自己又心疼起来)。奶粉儿子吃过国产的伊利、南山、完达山,进口的美赞臣和雅培。最后长期吃雅培到3岁。感觉上国产的奶粉糖份高一点,进口奶粉的奶瓶难得洗一点。营养上的差别,说实话从儿子的发育来看没有什么差别,之所以最后选了雅培,主要是儿子喜欢他的口味,而且儿子就喝他家的奶粉不便秘。后来侄儿在美国首先按医生推荐吃美赞臣,也是便秘,听我建议该喝雅培以后倒是也不便秘了。据我美国喝加拿大的朋友讲,美赞臣和雅培确实是当地的知名奶粉,建议选进口奶粉的妈妈就选这两个品牌了。

4、儿童车

儿童车我全部选用的好孩子,这个牌子的车质量不错,价格也适中。这里我想讲一下该买什么样的车。

首先很多妈妈在孩子出生以前就买好了婴儿推车,我也不例外,还是买的当时好孩子最豪华的一款,结果在众多车子里面的利用率最低。所以结论是,最好别买,尤其有祖辈帮着带人的,更是不需要买。因为做爷爷奶奶的更喜欢把小不点揣在怀里,只要宝宝出去尝到了抱抱的甜头,自然不会要小推车的。现在我在院子还经常看见奶奶在前面抱着小宝宝,妈妈在后面推着个小推车。所以硬是想过一过推车的瘾,最好从亲朋好友有旧的婴儿推车,不妨弄一辆来推,因为一般推车都很新。儿子的那辆就除了落了一点灰,基本上是8成新。实在要买,就买一辆轻便式样的,豪华型的别管多漂亮,都别动心。

第二款要呼吁各位妈妈别买的就是学步车。当然是自己在儿子7个月的时候败了一辆(同时败了一条皇家宝贝得学步带),才会在这里提醒各位可能步我的后尘的妈妈。买完学步车后不到一周,就看到一个儿童专家写的关于学步车和学步带的相关论文,大抵是讲直立行走是人类的天性,学步车和学步带反而会影响幼儿平衡感的建立。于是有查询了大量资料,再观察了儿子使用学步车的时候确实是垫着脚周,于是再学步车购买了10天之后就和学步带一起被打入了冷宫,没有再让儿子用过。后来看见同院子的使用学步车冲进冲出的小女孩一直到2岁走路都一跳一跳的,就愈发觉得那个专家讲得对。儿子学走路是1岁2个月,虽然不早,但是一开始走路就走得很稳当了。之所以学步车没有成为家里利用率最低的车,那是在儿子1岁半以后,我又把学步车拆了里面的座椅,给儿子当火车开。

反对了两款车子后,还要向各位妈妈推荐一款车。当宝宝7个月的时候,可以买好孩子的一款带脚托和推手柄的小三轮车。基本型的不到200元,豪华型200多元,实际买基本型就可以了,这看各位妈妈的爱好了。推荐这款车子,是因为7个月以后宝宝就座稳了,而且宝宝也重了,出去玩老是抱着走会很辛苦,需要一辆车子,尔这款小三轮车,宝宝可以一直用到2岁多,等宝宝脚够长了就可以自己踩在车的踏脚上,而且可以自己控制方向。而且车子不重,住高楼的妈妈也不用太发愁。(住高楼的妈妈,还是建议买基本型的,轻一些)喜欢带宝宝去户外的妈妈一定要买。

5、尿裤
不管现在的妈妈是否完全纸尿裤,城里宝宝纸尿裤已经成为宝宝的必备品。以我的经验,晚上睡觉的时候还是给宝宝系上纸尿裤好,一来大人没有那么辛苦,二来宝宝的睡眠质量更好,要知道睡得好的宝宝才长得好。至于什么男孩子用纸尿裤不好,在查阅了大量的医学资料以后,觉得是没有科学根据的。

儿子使用过的纸尿裤主要有菲比超薄干爽、妈妈宝贝、皇牌好奇超薄干爽、帮宝适超薄干爽、安而乐超薄棉柔、贝亲超薄干爽。这些在国内应该算是纸尿裤的高端产品,比一般的纸尿裤价格都会贵一点,不过这个钱花出来的效果是看得见的,儿子也用过一包普通的纸尿裤,但是用普通的纸尿裤在给儿子换的时候就会发现小屁股潮潮的,但是这几款产品就都没有这个问题,虽然整体效果是各有千秋。我个人推荐使用皇牌好奇超薄干爽和帮宝适超薄干爽(就是超市里面较贵,绿色包装的那一种)。下面仔细说

给粥粥买了老鼠背米袋的储钱罐

星期日, 9 3 月, 2008

前面的贴子《给宝宝起了小名——粥粥》提到还欠宝宝一老鼠背米袋的储钱罐,当时主要是没有黄色的。昨天三八节陪粥妈去正大广场逛街,想起这事就去上次的店看看,店名是“玩具反斗城”,货品换了个地方摆放,但依然是没有黄色。问了店员,都说其它的颜色买完工。差别是多出了几样与“鼠”相关的储钱罐,但感觉到还是上回看到的老鼠背米袋的储钱罐好看,这应该是传说中的第一印象吧。

花了19.9大洋买了一个绿色的,在麦当劳喝饮料时找得一个一元的硬件,第一时间就给储钱罐喂了,呵呵。晚上听粥妈说她挪用家里的零钱也喂了几块一元的硬币,咱这就开始了培养粥粥理财的第一步吧。

储钱罐前面:

正面:

背面: