我写了一个对话框的控制程序,可是运行的时候就像死了一样,在程序间切换也不行,对话框拖动也不行,等程序执行完又正常了这是什么原因啊?怎么改?
解决方案 »
- MFC 组合控件该如何实现
- 用EOF 还是用adoEOF?
- 怎样把MFC的ACTIVEX里的一个类让其他程序可以调用?
- 如何向菜单上添加位图?
- 模板小问题:template<class TYPE>,class CMatrix3D : public CObject
- 我要连接的ACCESS数据库有密码,我试过没密码的数据库我可以连上,有密码的怎么连?
- 那里有免费的mapinfo下载,包括注册码
- 用线程函数CreeateThread()如何同时传两个参数,一个是char[],一个是void *;
- 工具栏上有一个TBSTYLE_CHECK的按钮,如何在用户点击后不使它按下?
- PreSubclassWindow用法
- 关于利用CFile和CArchive对一个文件进行另存的初级问题 理论上的
- 标尺设计问题vc++
void CLHKONG_420Dlg::OnRun()
{
// TODO: Add your control notification handler code here
CString str_x,str_y,
str1,str4,str5,
str_step,
str_dx,str_dy,str_xunhuan,str_xunhuandanqian,
str_beizeng1,str_beizeng2,
str_pwm,str_pwmbeizeng;
str_x = "X+";
str_y = "Y+";
str_step = "1";
str1 = "\r\n";
double a,l1,l2,
l_stepnum,
l_beizeng1,l_beizeng2,
l_pwm,l_pwmup1,l_pwmup2;
a=0;
//l_step,
//循环设置
GetDlgItemText( IDC_EDIT_XUNHUAN , str_xunhuan );
l1 = atof ( str_xunhuan );
//步长设置
GetDlgItemText( IDC_EDIT_STEP , str_step );
l_stepnum = atof ( str_step );
//l_step = 0.0125 * l_stepnum;
str_dx = str_x + str_step + str1;
str_dy = str_y + str_step + str1;
//turn on lz
CByteArray sandArray_on;
sandArray_on.RemoveAll();
sandArray_on.SetSize(1);
sandArray_on.SetAt( 0, 0x75 );
//turn off lz
CByteArray sandArray_off;
sandArray_off.RemoveAll();
sandArray_off.SetSize(1);
sandArray_off.SetAt( 0 , 0x76 );
//turn up lz
CByteArray sandArray_up;
sandArray_up.RemoveAll();
sandArray_up.SetSize(2);
sandArray_up.SetAt( 0 , 0x7F );
//功率倍增点设置
GetDlgItemText( IDC_EDIT_BEIZENG1 , str_beizeng1 );
l_beizeng1 = atof ( str_beizeng1 );
GetDlgItemText( IDC_EDIT_BEIZENG2 , str_beizeng2 );
l_beizeng2 = atof ( str_beizeng2 );
//功率倍增点
GetDlgItemText( IDC_EDIT_PWM , str_pwm );
l_pwm = atof( str_pwm );
l_pwmup1 = 2*l_pwm;
//progress
m_progress.SetRange( 0 , l1 );
//turn on lz
m_mscom_jg.SetOutput( COleVariant ( sandArray_on ) );
//move
Sleep ( 10000 );
for ( l2=1 ; l2<=l1 ; l2++ )
{
str_xunhuandanqian.Format( "%0.0f" , l2 );
SetDlgItemText ( IDC_EDIT_XUNHUANDANQIAN , str_xunhuandanqian );
int nTemp = (int) (l2 * l_stepnum * 2); //总步数
if ( ( l2 * l_stepnum * 2 ) >= l_beizeng1 && ( l2 * l_stepnum * 2 ) < l_beizeng2 && nTemp%50 == 0 )//每50步递增0.5%功率
{
a++;
l_pwmup2 = l_pwmup1 + a;
sandArray_up.SetAt( 1 , l_pwmup2 );
m_mscom_jg.SetOutput( COleVariant ( sandArray_up ) );
str_pwmbeizeng.Format( "%0.2f" , l_pwmup2/2 );
SetDlgItemText ( IDC_EDIT_PWM , str_pwmbeizeng );
}
else if ( (l2 * l_stepnum * 2) >= l_beizeng2 && nTemp%25 == 0 )
{
a++;
l_pwmup2 = l_pwmup1 + a;
sandArray_up.SetAt( 1 , l_pwmup2 );
m_mscom_jg.SetOutput( COleVariant ( sandArray_up ) );
str_pwmbeizeng.Format( "%0.2f" , l_pwmup2/2 );
SetDlgItemText ( IDC_EDIT_PWM , str_pwmbeizeng );
}
//X
m_mscom_dj.SetOutput( COleVariant ( str_dx ) );
Sleep( 200 );
m_xzhou = m_xzhou + l_stepnum;
str4.Format( "%0.0f" , m_xzhou );
SetDlgItemText ( IDC_EDIT_XZHOU , str4 );
//Y
m_mscom_dj.SetOutput( COleVariant ( str_dy ) );
Sleep ( 200 );
m_yzhou = m_yzhou + l_stepnum;
str5.Format( "%0.0f" , m_yzhou );
SetDlgItemText ( IDC_EDIT_YZHOU , str5 );
//progress
m_progress.SetPos ( l2 );
UpdateWindow();
}
Sleep( 20 );
//turn off lz
m_mscom_jg.SetOutput( COleVariant ( sandArray_off ) );}