void CMyDialog::OnEndLabelEdit (NMHDR* pNMHDR, LRESULT* pResult)
{
LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR;// The text is maintained by the application, so first update it// Set up the item, to reset its text
LV_ITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem=pLvdi->item.iItem;
lvi.iSubItem = 0;
lvi.pszText = LPSTR_TEXTCALLBACK;// Call CListCtrl::SetItem, to force recalculation of the text length
m_ListCtl.SetItem ( &lvi ); *pResult = 0;
}
{
LV_DISPINFO* pLvdi = (LV_DISPINFO*)pNMHDR;// The text is maintained by the application, so first update it// Set up the item, to reset its text
LV_ITEM lvi;
lvi.mask = LVIF_TEXT;
lvi.iItem=pLvdi->item.iItem;
lvi.iSubItem = 0;
lvi.pszText = LPSTR_TEXTCALLBACK;// Call CListCtrl::SetItem, to force recalculation of the text length
m_ListCtl.SetItem ( &lvi ); *pResult = 0;
}
解决方案 »
- debug没有问题而release出现问题(在线等)
- VC 如何把文本文件中的内容读取出来并与对话框输入的ID比较?(还需要帮助~)
- 郁闷死了,在CSDN上发了3个帖子(共220分)都没有解决,唉,不知道是不是太简单了还是分不够,分不够可以在加,要是问题太简单了,就指导一下吧
- recvfrom()最后一个参数是什么意思?
- 什么类型的文件是不可能打开的?
- 请各位高手帮忙!!
- 两个datetime类型值相减得不到int(或numeric)类型值,怎么办?
- 100分求救!! 怎么照CString str=“IDB_SOME_BITMAP" 来 。。。。
- VC2010加载问题
- 很菜的问题:如何区分vs6.0是中文版还是英文版?
- VC中如何在CListCtrl中使用什么方法可以在程序运行时,当我做选择各行的同时可以得到选择了多少行?
- 请问如何把JPG格式的扫描文档转换成WORD文档
{
CYourFrame::RecalcLayout(bNotify);
CYourFrame::RecalcLayout(bNotify);
}
加多一次 CYourFrame::RecalcLayout(bNotify) 试试
在OnSelchangeTab1里不要用pNMHDR->idFrom,用GetCurSel你再试试BOOL CTestDlg::OnInitDialog()
{
........
// TODO: Add extra initialization here
m_tab.InsertItem(0,"Tab1");
m_tab.InsertItem(1,"Tab2");
m_tab.SetCurSel(0);
m_list1.ShowWindow(SW_SHOW);
m_list2.ShowWindow(SW_HIDE); return TRUE; // return TRUE unless you set the focus to a control
}
void CTestDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)
{
if(pNMHDR->hwndFrom ==m_tab.GetSafeHwnd() && pNMHDR->code==TCN_SELCHANGE){ int i=m_tab.GetCurSel();
if( i == 0){
m_list1.ShowWindow(SW_SHOW);
m_list2.ShowWindow(SW_HIDE);
}
if( i == 1){
m_list2.ShowWindow(SW_SHOW);
m_list1.ShowWindow(SW_HIDE);
} }
*pResult = 0;
}
{
// TODO: Add your control notification handler code here
pNMHDR; ChangeTabReport(m_Tab_Report.GetCurSel());
*pResult = 0;
}BOOL CAnyTableDlg::ChangeTabReport(int nSel)
{
int i; ASSERT(nSel<TAB_NUM);
for(i=0;i<TAB_NUM;i++)
{
if(NULL!=m_preportarray[i] && IsWindow(m_preportarray[i]->m_hWnd))
m_preportarray[i]->ShowWindow(SW_HIDE);
}
if(NULL!=m_preportarray[nSel] || IsWindow(m_preportarray[nSel]->m_hWnd))
m_preportarray[nSel]->ShowWindow(SW_SHOW); return TRUE;
}
m_preportarray[nSel]->Invalidate(TRUE);
你在鼠标单击的时候重画一下ListCtrl不就得了
当窗口切换---从另一个程序窗口切换到这个程序的窗口或本程序的模式对话框关闭,本窗口成为活动窗口时,列表框"有时"不显示.
把这两行代码加上去,加到处理CLISTCTRL的变化的代码里,
。
InvalidateRect(hList,NULL,true);
UpdateWindow(hList);
。不止是CListCtrl,还有CTreeCtrl在和CTab结合的时候,
也出这个问题,到时候注意就是了。
估计是WINDOWS系统本身在“刷新”这些“通用控件”是有BUG。
所以,只能使用强制“刷新”的办法。你可以试试
建立此类窗口时,大多会将tab和tree都作为对话框或框架窗口的子窗口
这就会有这样的问题,由于他们的地位是平等的,系统在绘制时,不知道他们的前后关系。
会产生绘制上的瑕疵 解决方法是,将tree等作为tab的子窗口,(子窗口会画在父窗口的上面)
m_tab.Create(WS_CHILD|WS_,CRect(0,0,0,0),this,IDW_TAB);
-----------------------------------------^^^^---------
m_list.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),&m_tab,IDW_LIST); //以list为例
-------------------------------------------------^^^^^^-----------
并设置好几个相关的风格位
WS_CLIPCHILDREN
WS_CLIPSIBLINGS
VC编程时,很多问题需要自己想清楚来龙去脉,否则,用VB算了
BOOL RedrawWindow(
HWND hWnd, // handle to window
CONST RECT *lprcUpdate, // update rectangle
HRGN hrgnUpdate, // handle to update region
UINT flags // array of redraw flags
);
如果你是使用占位符方式动态创建的话,只需将占位符的控件(如CStatic)的"Visible"属性选项取消就可以了。
m_list1.SetParent(&m_tab);
这样,可解决list窗口激活时,不绘制的问题
对通知消息的相应也没有影响。
使用了SetParent方法
pthislc是CListCtrl指针,预先创建或动态创建的.
m_Tab_Report.GetClientRect(&rect);
//m_Tab_Report.GetWindowRect(&rect);
m_Tab_Report.SendMessage(TCM_ADJUSTRECT,(WPARAM)FALSE,(LPARAM)&rect);
//ScreenToClient(&rect);
pthislc->MoveWindow(&rect);