记录一些杂事(“图片”控件、CXlistCtrl 、CListCtrl、 略去空格、CBitmapButton)

1. 经常看到有网卡的计算机启动时,看到屏幕的左下方有一个“米形状”的字符在旋转,怎么实现的呢?

char sym1[4] = {'-', '\\', '|', '/'};//定义变量

//在定时器里显示上述各个下标值即可:

void CTestDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	if (nIDEvent == m_Timer)
	{
		k++;
		if (k%4 == 0)
		{
			k = 0;
		}
		str = sym1[k];
		SetDlgItemText(IDC_STATIC1, str);
	}
	CDialog::OnTimer(nIDEvent);
}


2. 在VC对话框程序里,如果在第一个界面上,假设摆放了几个按钮,但又需要此对话框铺满整张“图片”,上面的按钮就会被放置于其下而看不到,怎么让它们在运行起来,置于图片之上可见又可用呢?


a .最快的办法是:Ctrl+D设置控件显示Tab的顺序,让“图片”控件Tab值小于按钮控件即可实现(意义是先显示“图片”控件,后显示按钮控件)

b. 使用程序:(不推荐!)

//在定时器里面处理
void CTesterDlg::OnTimer(UINT nIDEvent) 
	{
		// TODO: Add your message handler code here and/or call default

		CRect rc;
		int i = 0;

		for (i = IDC_BUTTON1; i<=IDC_BUTTON5; i++)
		{
			GetDlgItem(i)->GetClientRect(&rc);
			GetDlgItem(i)->InvalidateRect(&rc, FALSE);
		}

		CDialog::OnTimer(nIDEvent);
	}

3. CXlistCtrl 扩展列表控件很好用,每个单元格可以轻松下拉选择内容,但有时觉得这种方式很麻烦,想点击某一个单元格时改变状态,就是要对每一个的位置进行定位:

//
//	处理OnClickList事件
//		m_ListCtlTest 是CXlistCtrl的控件变量
//
void CTestDlg::OnClickListTest(NMHDR* pNMHDR, LRESULT* pResult) 
{
	LPNMITEMACTIVATE pNMIA = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
	int i = -1, j = -1;
	if (pNMIA)
	{
		i = pNMIA->iItem;
		j = pNMIA->iSubItem;
	}
	
	if (i >= 0 && j >= 0)
	{
		//得到鼠标当前点
		CPoint pt;
		GetCursorPos(&pt);

		//得到单元格的坐标
		CRect rcSub;	//单元格的RC
		CRect rcTest;	//整个列表控件的RC
		m_ListCtlTest.GetSubItemRect(i, j, 0, rcSub);
		m_ListCtlTest.GetWindowRect(&rcTest);

		rcSub += rcTest;
		
		//鼠标落在单元格内
		if (rcSub.PtInRect(pt))
		{
			//在此处理......
		}
	}
	
	*pResult = 0;
}

4. CListCtrl列表框中内容很多项时,让某一行处于 可见选中状态:

m_ListCtrl.SetItem(index, 0, LVIF_STATE, NULL, 0, LVIS_SELECTED, LVIS_SELECTED, 0);//设置列表当前选择状态
m_ListCtrl.EnsureVisible(index, TRUE);//始终可见

5. 略去字符串中前面的一些空格字符:

//p指向处理的字符串
while (*p && isspace(*p))
		p++;

要是使用MFC,直接使用CString::Replace(" ", "")即可!

6. CBitmapButton使用时,要将ID资源:

记录一些杂事(“图片”控件、CXlistCtrl 、CListCtrl、 略去空格、CBitmapButton)_第1张图片

一般在对话框的初始化函数中:

	m_bt.AutoLoad(IDC_BUTTON1, this);
	m_bt.LoadBitmaps(IDB_BITMAP_UP, IDB_BITMAP_DN);//第一幅为正常显示的图片资源,第二幅为按下时的图片资源
	m_bt.SizeToContent();

如果实现像CToolBarCtrl一样的功能,可以在单击事件中:

void CTestDlg::OnButton1() 
{
	m_bt.SetState(m_bState);
	m_bState = !m_bState;	//m_bState是BOOL成员变量,初始化时为TRUE,每次翻转
}














你可能感兴趣的:(timer,null,扩展,button)