VC技巧记录

写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程序即可.

原文地址:https://www.cnblogs.com/saieuler/p/3511209.html