我需要显示一个对话框,这个对话框里也只是一些普通控件:Static、Button、CtrlList、ComboBox控件。
对话框在加载时需要从网络读取相关数据,我把读取到的数据放设置成各个控件的文本,但是在800 * 600分辨率下(1024 * 800 效果不错)界面的显示给人的感觉就是“很卡”,有些控件显示的会比较慢,因此整个界面初始化时效果比较难看。不知道这是什么原因,该如何解决?我个人觉得可能与读取网络数据有关。没有读取数据前按照流程会显示一部分控件,然后读取网络数据,然后更新控件内容(这些就是卡的地方了)。我想大家也可能会遇到类似的问题,请问该如何解决这个问题?谢谢!!
BOOL CExChange::OnInitDialog()
{
CDialog::OnInitDialog(); // 会员卡
SetDlgItemText( IDC_EDIT_CARD_NO, cardNO ); // 兑换日期
CTime time = CTime::GetCurrentTime();
SetDlgItemText( IDC_EDIT_DATE, time.Format( "%Y-%m-%d" ) ); // 设置组合框高度
m_cmbStock.SendMessage( CB_SETITEMHEIGHT, 0, 25 );
m_cmbCurrentPage.SendMessage( CB_SETITEMHEIGHT, 0, 25 ); // 创建占位图像列表 [ 改变CListCtrl行高度用 ]
CSyxPosApp *pApp = (CSyxPosApp *)AfxGetApp();
m_imagelist.Create( 30, 30, ILC_COLOR, 2, 2 );
m_imagelist.Add( pApp->LoadIcon(IDI_ICON_UNCHECKED) );
m_imagelist.Add( pApp->LoadIcon(IDI_ICON_CHECKED) ); // 修改ListCtrl控件样式
DWORD OldStyle = m_listExchange.GetExtendedStyle();
m_listExchange.SetExtendedStyle( OldStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | WS_EX_STATICEDGE );
m_listExchange.SetImageList( &m_imagelist, LVSIL_SMALL );
// 设置ListCtrl头内容
m_listExchange.InsertColumn( 0, _T("序号"), LVCFMT_LEFT | LVCFMT_IMAGE, 80 );
m_listExchange.InsertColumn( 1, _T("商品名称"), LVCFMT_LEFT, 195 );
m_listExchange.InsertColumn( 2, _T("单件积分"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 3, _T("数量"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 4, _T("库存"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 5, _T("兑换积分"), LVCFMT_CENTER, 125 );
// 获取卡信息
int ret = 0, len = 0;
CStringArray cardInfoTerms;
char* cardInfoResult = getCardInfo( carddata1, carddata2, carddata3, &ret );
{
...
// 用户名
SetDlgItemText( IDC_EDIT_USERNAME, cardInfoTerms[6] ); // 所属店铺
SetDlgItemText( IDC_EDIT_SHOP_NAME, cardShopName );
}
// 刷新ListCtrl控件内容
Refresh(); // 初始化记录数文本框
sprintf( szBuffer, "共有 %d 条记录", m_totalRecords );
SetDlgItemText( IDC_STATIC_RECORDS, szBuffer );
// 初始化页面跳转组合框
m_cmbCurrentPage.ResetContent();
for( int i = 1; i <= m_totalPage; i++ )
{
sprintf( szBuffer, "第%d页", i );
m_cmbCurrentPage.AddString( szBuffer );
}
m_cmbCurrentPage.SetCurSel( 0 ); return TRUE;
}
对话框在加载时需要从网络读取相关数据,我把读取到的数据放设置成各个控件的文本,但是在800 * 600分辨率下(1024 * 800 效果不错)界面的显示给人的感觉就是“很卡”,有些控件显示的会比较慢,因此整个界面初始化时效果比较难看。不知道这是什么原因,该如何解决?我个人觉得可能与读取网络数据有关。没有读取数据前按照流程会显示一部分控件,然后读取网络数据,然后更新控件内容(这些就是卡的地方了)。我想大家也可能会遇到类似的问题,请问该如何解决这个问题?谢谢!!
BOOL CExChange::OnInitDialog()
{
CDialog::OnInitDialog(); // 会员卡
SetDlgItemText( IDC_EDIT_CARD_NO, cardNO ); // 兑换日期
CTime time = CTime::GetCurrentTime();
SetDlgItemText( IDC_EDIT_DATE, time.Format( "%Y-%m-%d" ) ); // 设置组合框高度
m_cmbStock.SendMessage( CB_SETITEMHEIGHT, 0, 25 );
m_cmbCurrentPage.SendMessage( CB_SETITEMHEIGHT, 0, 25 ); // 创建占位图像列表 [ 改变CListCtrl行高度用 ]
CSyxPosApp *pApp = (CSyxPosApp *)AfxGetApp();
m_imagelist.Create( 30, 30, ILC_COLOR, 2, 2 );
m_imagelist.Add( pApp->LoadIcon(IDI_ICON_UNCHECKED) );
m_imagelist.Add( pApp->LoadIcon(IDI_ICON_CHECKED) ); // 修改ListCtrl控件样式
DWORD OldStyle = m_listExchange.GetExtendedStyle();
m_listExchange.SetExtendedStyle( OldStyle | LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES | WS_EX_STATICEDGE );
m_listExchange.SetImageList( &m_imagelist, LVSIL_SMALL );
// 设置ListCtrl头内容
m_listExchange.InsertColumn( 0, _T("序号"), LVCFMT_LEFT | LVCFMT_IMAGE, 80 );
m_listExchange.InsertColumn( 1, _T("商品名称"), LVCFMT_LEFT, 195 );
m_listExchange.InsertColumn( 2, _T("单件积分"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 3, _T("数量"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 4, _T("库存"), LVCFMT_CENTER, 125 );
m_listExchange.InsertColumn( 5, _T("兑换积分"), LVCFMT_CENTER, 125 );
// 获取卡信息
int ret = 0, len = 0;
CStringArray cardInfoTerms;
char* cardInfoResult = getCardInfo( carddata1, carddata2, carddata3, &ret );
{
...
// 用户名
SetDlgItemText( IDC_EDIT_USERNAME, cardInfoTerms[6] ); // 所属店铺
SetDlgItemText( IDC_EDIT_SHOP_NAME, cardShopName );
}
// 刷新ListCtrl控件内容
Refresh(); // 初始化记录数文本框
sprintf( szBuffer, "共有 %d 条记录", m_totalRecords );
SetDlgItemText( IDC_STATIC_RECORDS, szBuffer );
// 初始化页面跳转组合框
m_cmbCurrentPage.ResetContent();
for( int i = 1; i <= m_totalPage; i++ )
{
sprintf( szBuffer, "第%d页", i );
m_cmbCurrentPage.AddString( szBuffer );
}
m_cmbCurrentPage.SetCurSel( 0 ); return TRUE;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货