⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ttl_inverterdlg.cpp

📁 辅助数字电路课程学习
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					rect.bottom = rect.top + block[step+sub_step].bottom*zoom;
					InvalidateRect( &rect,false );
				}
				cnt++;
				if( rect.right > (block[step].left +  block[step].right)*zoom ){
					if( step != 3 ) 
						step++;
					else
						step += 3;
					cnt = 0;
				}
			break;
			case 4:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( byhand ){
						step++;
						cnt = 0;
				}
				else{
					if( cnt > cnt_total[step] ){
						step++;
						cnt = 0;
					}
				}
			case 5:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				if( times == 1 ){
					temp = show_which;
					show_which = 0;
					SendMessage( WM_PAINT );
					show_which = temp;
				}
				cnt++;
				if( byhand ){
					if( times > 2 ){
						step++;
						cnt = 0;
					}
				}
				else{
					if( cnt > cnt_total[step] ){
						cnt = 0;
						times++;
						if( times > 2 ){
							times = 0;
							step++;
						}
					}
				}

		}

}

void Cttl_inverterDlg::ShowOneStep3()
{
	int temp;
	static int times = 0;
	/*
	int block_count[] = 
	{
	};*/
		CRect block[] = { //输入信号
			CRect(432,28,246,22),//1
			CRect( 92,20,29,17),CRect( 120,47,40,24),//2
			CRect( 578,82,31,19),//3
			CRect(308,8,41,276),//4
		};
		//动态显示方向:上0下1左2右3,整体4,整体闪烁5(闪1次)
		int dir[] = { 
			5,//1--1
			5,5,//5,5,//2--4
			5,//3--5
			5//5,5,5//4--8
		};
/*		int cnt_total[] = {
			5,//1
			5,5,//2
			5,//3
			5,5,5//4
		};
*/
			int cnt_total[] = {
			1,//1
			1,1,//2
			1,//3
			1,1,1//4
		};
		CRect rect;
		float zoom = 580./679;

		if( dir[step] != 5 ) times = 0;
		switch( dir[step] ){
			case 0:  break;
			case 1:
				//向下
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + (block[step].bottom*cnt/cnt_total[step])*zoom;
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.bottom > (block[step].top + block[step].bottom)*zoom ){
					step ++;
					cnt = 0;
				}
			break;
			case 2:
				//向左
				rect.right = ( block[step].left + block[step].right )*zoom;
				rect.top = block[step].top*zoom;
				rect.left = rect.right - (block[step].right*cnt/cnt_total[step])*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.left < block[step].left*zoom ){
					step++;
					cnt = 0;
				}
			break;
			case 3:
				//右3
				rect.left = block[step].left/2;
				rect.right = rect.left + (block[step].right*cnt/cnt_total[step])/2;
				rect.top = block[step].top/2;
				rect.bottom = rect.top + block[step].bottom/2;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.right > (block[step].left +  block[step].right)/2 ){
					step++;
					cnt = 0;
				}
			break;
			case 4:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( byhand ){
						step++;
						cnt = 0;
				}
				else{
					if( cnt > cnt_total[step] ){
						step++;
						cnt = 0;
					}
				}
			case 5:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				if( times == 1 ){
					temp = show_which;
					show_which = 0;
					SendMessage( WM_PAINT );
					show_which = temp;
				}
				cnt++;
				if( byhand ){
					if( times > 2 ){
						step++;
						cnt = 0;
					}
				}
				else{
					if( cnt > cnt_total[step] ){
						cnt = 0;
						times++;
						if( times > 2 ){
							times = 0;
							step++;
						}
					}
				}

		}

}

void Cttl_inverterDlg::OnBnClickedButton5()
{
	if( 1 != show_which ){
		//如果以前不是显示本图
		show_which = 0;//显示原图
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );

		show_which = 1;//显示本图
		dis_step = 0;//
		byhand = true;
		cnt = 0;
		step = 0;
		timer_on = true;
		timer_ID = SetTimer(1,10,NULL);
	}
	else{
		dis_step++;
		if( dis_step > 6 ){
			dis_step = 6;
			return;
		}
		byhand = true;
		if( dis_step < 1 ){
			cnt = 0;
			step = 0;
		}
		timer_on = true;
		timer_ID = SetTimer(1,10,NULL);
	}

}

void Cttl_inverterDlg::OnBnClickedButton6()
{
	int t_step[] = { 1,15,19,20,21,22,23,24 };

	if( 1 != show_which ){
		//如果以前不是显示本图
		show_which = 0;//显示原图
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );

		show_which = 1;//显示本图
		byhand = true;
		dis_step = -1;
	}
	else{
		dis_step--;

		show_which = 0;//显示原图
		cnt = 0;
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );
		if( dis_step < 0 ){
			dis_step = -1;
			return;
		}
		//显示
		show_which = 1;
		step = 0;
		while(  step < t_step[dis_step] )
			ShowOneStep();
		//SendMessage( WM_PAINT );
	}

}
//〈〈〈〈〈〈〈〈〈
void Cttl_inverterDlg::OnBnClickedButton7()
{
		int t_step[] = { 1,7,8,11,17,18 };

	if( 2 != show_which ){
		//如果以前不是显示本图
		show_which = 0;//显示原图
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );

		show_which = 2;//显示本图
		byhand = true;
		dis_step = -1;
	}
	else{
		dis_step--;

		show_which = 0;//显示原图
		cnt = 0;
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );
		if( dis_step < 0 ){
			dis_step = -1;
			return;
		}
		//显示
		show_which = 2;
		step = 0;
		while(  step < t_step[dis_step] )
			ShowOneStep2();
		//SendMessage( WM_PAINT );
	}
}

//〉〉〉〉〉〉〉〉
void Cttl_inverterDlg::OnBnClickedButton8()
{
	if( 2 != show_which ){
		//如果以前不是显示本图
		show_which = 0;//显示原图
		InvalidateRect(NULL,false);
		SendMessage( WM_PAINT );

		show_which = 2;//显示本图
		dis_step = 0;//
		byhand = true;
		cnt = 0;
		step = 0;
		timer_on = true;
		timer_ID = SetTimer(1,10,NULL);
	}
	else{
		dis_step++;
		if( dis_step > 5 ){
			dis_step = 5;
			return;
		}
		byhand = true;
		if( dis_step < 1 ){
			cnt = 0;
			step = 0;
		}
		timer_on = true;
		timer_ID = SetTimer(1,10,NULL);
	}
}

void Cttl_inverterDlg::OnBnClickedButton9()
{
	if( timer_on )
		KillTimer(timer_ID);
	
	show_which = 0;//显示原图
    byhand = false;//自动显示一气合成
	InvalidateRect(NULL,false);
	SendMessage( WM_PAINT );

	cnt = 0;
	show_which = 3;//概念图
	step = 0;
	timer_on = true;
	timer_ID = SetTimer(1,10,NULL);
}

void Cttl_inverterDlg::OnBnClickedButton10()
{
if( timer_on )
		KillTimer(timer_ID);
	
	show_which = 0;//显示原图
    byhand = false;//自动显示一气合成
	InvalidateRect(NULL,false);
	SendMessage( WM_PAINT );

	cnt = 0;
	show_which = 4;//概念图
	step = 0;
	timer_on = true;
	timer_ID = SetTimer(1,10,NULL);
}

void Cttl_inverterDlg::ShowOneStep4(void)
{
		int temp;
	static int times = 0;

		CRect block[] = { //输入信号
			CRect(434,51,236,26),//1
			CRect( 91,49,27,19),CRect( 126,17,40,24),//2
			CRect( 434,103,180,20),//3
			CRect(248,5,59,298)//4
		};
		//动态显示方向:上0下1左2右3,整体4,整体闪烁5(闪1次)
		int dir[] = { 
			5,//1--1
			5,5,//5,5,//2--4
			5,//3--5
			5//5,5,5//4--8
		};
		int cnt_total[] = {
			5,//1
			5,5,//2
			5,//3
			5,5,5//4
		};

		CRect rect;
		float zoom = 580./679;

		if( dir[step] != 5 ) times = 0;
		switch( dir[step] ){
			case 0:  break;
			case 1:
				//向下
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + (block[step].bottom*cnt/cnt_total[step])*zoom;
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.bottom > (block[step].top + block[step].bottom)*zoom ){
					step ++;
					cnt = 0;
				}
			break;
			case 2:
				//向左
				rect.right = ( block[step].left + block[step].right )*zoom;
				rect.top = block[step].top*zoom;
				rect.left = rect.right - (block[step].right*cnt/cnt_total[step])*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.left < block[step].left*zoom ){
					step++;
					cnt = 0;
				}
			break;
			case 3:
				//右3
				rect.left = block[step].left/2;
				rect.right = rect.left + (block[step].right*cnt/cnt_total[step])/2;
				rect.top = block[step].top/2;
				rect.bottom = rect.top + block[step].bottom/2;
				InvalidateRect( &rect,false );
				cnt++;
				if( rect.right > (block[step].left +  block[step].right)/2 ){
					step++;
					cnt = 0;
				}
			break;
			case 4:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				cnt++;
				if( byhand ){
						step++;
						cnt = 0;
				}
				else{
					if( cnt > cnt_total[step] ){
						step++;
						cnt = 0;
					}
				}
			case 5:
				rect.left = block[step].left*zoom;
				rect.right = rect.left + block[step].right*zoom;
				rect.top = block[step].top*zoom;
				rect.bottom = rect.top + block[step].bottom*zoom;
				InvalidateRect( &rect,false );
				if( times == 1 ){
					temp = show_which;
					show_which = 0;
					SendMessage( WM_PAINT );
					show_which = temp;
				}
				cnt++;
				if( byhand ){
					if( times > 2 ){
						step++;
						cnt = 0;
					}
				}
				else{
					if( cnt > cnt_total[step] ){
						cnt = 0;
						times++;
						if( times > 2 ){
							times = 0;
							step++;
						}
					}
				}

		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -