说明:基于对话框,一个ListCtrl控件(品名,单价),一个Button,OninitDialog()中将ListCtrl内容初始化
过程:OnButton()事件,触发ListCtrl内容变化(单价变化)
  我设Rand()函数写入ListCtrl内容,OnInitDialog()调用Rand(),使得ListCtrl初始化,
OnButton()事件仍然调用Rand()函数.编译通过.
问题:
   void CGameDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CGameDlg dlg;
dlg.Rand(); return;
}
void CGameDlg::OnButton1() 
{
// TODO: Add your control notification handler code here
CGameDlg dlg;
dlg.Rand(); return;
}
编译通过,执行失败.为什么啊.有没有更好的算法,来实现我说的功能呢

解决方案 »

  1.   

    void CGameDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code here Rand(); return;
    }
      

  2.   

    OnInitDialog()中仅仅能CMyDialog::Rand(); 而不能用m_myDialog.Rand();
    是不是因为Oninitdialog()执行时还没有创建m_myDialog成员变量的原因啊
      

  3.   

    我觉得
    将CGameDlg dlg;//这是不是错??
    dlg.Rand();改为
      
    Rand();
    就应该可以了,希望对你有帮助。
      

  4.   

    我觉得可能是:
    CGameDlg dlg;
    dlg.Rand();
    是不是错?
    因为dlg仅初始化,而Rand()函数写入ListCtrl内容,此时ListCtrl并不存在,故编译通过,执行失败。
      

  5.   

    我也觉得CGameDlg dlg;这句话有问题。有点多余
      

  6.   

    对DIALOG中资源的操作只有在资源LOAD后才能进行操作。
      

  7.   

    Rand()没有错,现在解决了,谢谢各位!我忘了将ListCtrl原有的东西删掉了,呵呵
    void CGameDlg::OnButton1() 
    {
    // TODO: Add your control notification handler code herem_ListCtrlLeft.DeleteAllItems();
    Rand(); return;
    }
    就可以了.再请教一个问题:
    关于随机函数的问题:srand((unsigned)time(NULL));//初始化种子,在程序的初始化阶段执行一次即可
    int t = rand()%255;
    如何能使得t能随机正负整数呢,谢谢
      

  8.   

    srand((unsigned)time(NULL));//初始化种子,在程序的初始化阶段执行一次即可
    int t = rand()%255-127;
    (-127,127)其他的同理