写VC程序时,总是要查很多用法,甚至以前用过的也忘记怎么用了,还要再查一遍.所以从今天起在这里把每次用到的技巧都记下来.
1. 设置键盘精灵时学到的技巧
键盘精灵使用模态对话框,在DoModal之前把第一个字符赋给编辑框.
在键盘精灵中添加OnInitDialog函数,方法是在类向导的虚函数中找到它添加.
在OnInitDialog函数中写UpdateData(FALSE);将第一个字符给编辑框.
选中编辑框,在属性对话框中的闪电符号(控件事件)中找到EN_CHANGE点右边添加OnEnChangeEdit1函数,在该函数中写入((CEdit*)GetDlgItem(IDC_EDIT1))->SetSel(-1);来取消第一个字符被选中的状态.
再找到EN_SETFOCUS,添加OnEnSetfocusEdit1函数.此函数执行当编辑框内容更新的时候的处理.
先添加UpdateData(TRUE); //更新编辑框数据
再添加while (m_list.DeleteItem(0)); //删除列表中所有数据
再添加
//将符合的股票代码插入列表
int count = 0;
for (int i = 0; i < pTotal->number; i++)
{
if (CString(pTotal->stocks[i].code).Find(m_name) != -1)
m_list.InsertItem(count++, CString(pTotal->stocks[i].code));
}
再添加
if (m_list.GetItemCount()) //选中第0个
m_list.SetItemState(0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);
这里的参数不能是LVIS_SELECTED,否则按上下键,还是会先选中第0行.
选中listControl,在属性对话框的属性中作如下修改:Always Show Selection设为true,这样即使listControl失去焦点,也能被选中;View设为Report,否则内容将显示不全,这个很重要;No Column Header设为true,隐藏列标题.
键盘精灵中再添加PreTranslateMessage虚函数,拦截上下键和回车键.
VK_UP的响应为 GetDlgItem(IDC_LIST2)->SendMessage(WM_KEYDOWN, pMsg->wParam, pMsg->lParam);
VK_RETURN的响应为
pos = m_list.GetNextItem(-1, LVNI_SELECTED); //获取选中的行号
if (pos == -1) //没有选中
m_name = "";
else
m_name = m_list.GetItemText(pos, 0);
UpdateData(FALSE); //将m_name中的值更新到编辑框
查看别的窗口资源:
在VC中点菜单open,在open as中选Resources,打开要查看的exe程序即可.