点在折线上

本文介绍了一种基于C++的图形界面中实现选择功能的方法。通过定义矩形区域并检查鼠标点击位置是否位于这些区域内来确定选择状态。此外,还展示了如何在不同矩形之间进行切换,并更新相关字段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	
CRect rect,rect1;
		CPoint pt;
		int k,dx,dy;
		pt.x = X;
		pt.y = Y;
		TCHAR service_id[TRAIN_ORDER_LEN];//
		TCHAR local_sub_id[LOCAL_SUB_ID_LEN];
		TCHAR destcode[DESTCODE_LEN];



	/*
		for(int j=0;j<ln.rec_cn;j++)
		{
			rec = &ln.psta[j];
			if(rec == NULL) return;
			k = j+1;					
			while(k<ln.rec_cn)
			{
				if(!ln.psta[k].notShow)
				{
					rec1 = &ln.psta[k];
					break;
				}
				k++;
			}			
			rect.left = rec->pt_a.x-4;
			rect.right = rec->pt_d.x+4;
			rect.top = rec->pt_a.y-4;
			rect.bottom = rect.top+8;
			if(PtInRect(rect,pt))//select
			{
				_tcsncpy(service_id,&rec->train_order_id[max(0,TRAIN_ORDER_LEN-pDoc->m_display_trainWidth-1)], min(TRAIN_ORDER_LEN, pDoc->m_display_trainWidth+1));
				_tcsncpy(local_sub_id,&rec->local_sub_id[max(0,LOCAL_SUB_ID_LEN-pDoc->m_display_localSubIdWidth-1)], min(LOCAL_SUB_ID_LEN, pDoc->m_display_localSubIdWidth+1));
				_tcsncpy(destcode,&rec->destcode[max(0,DESTCODE_LEN-pDoc->m_display_destcodeWidth-1)], min(DESTCODE_LEN, pDoc->m_display_destcodeWidth+1));
				pCopyTrip->m_strService.Format("%s",service_id);
				pCopyTrip->m_strSubid.Format("%s",local_sub_id);
				pCopyTrip->m_strDestcode.Format("%s",destcode);
				pCopyTrip->UpdateData(FALSE);
				return ;
			}
			else
			{
				dx = rec1->pt_a.x-rec->pt_d.x;
				dy = rec1->pt_a.y-rec->pt_d.y;
				rect1.left = rect.right-8;
				rect1.right = rect.right;
				for(k=0;k<dx;k++)
				{
					rect1.left++;
					rect1.right++;
					rect1.top = rect.top+(rect1.right-rect.right)*dy/dx-4;
					rect1.bottom = rect.top+(rect1.right-rect.right)*dy/dx+4;
					if(PtInRect(rect1,pt))//select
					{
						_tcsncpy(service_id,&rec->train_order_id[max(0,TRAIN_ORDER_LEN-pDoc->m_display_trainWidth-1)], min(TRAIN_ORDER_LEN, pDoc->m_display_trainWidth+1));
						_tcsncpy(local_sub_id,&rec->local_sub_id[max(0,LOCAL_SUB_ID_LEN-pDoc->m_display_localSubIdWidth-1)], min(LOCAL_SUB_ID_LEN, pDoc->m_display_localSubIdWidth+1));
						_tcsncpy(destcode,&rec->destcode[max(0,DESTCODE_LEN-pDoc->m_display_destcodeWidth-1)], min(DESTCODE_LEN, pDoc->m_display_destcodeWidth+1));
						pCopyTrip->m_strService.Format("%s",service_id);
						pCopyTrip->m_strSubid.Format("%s",local_sub_id);
						pCopyTrip->m_strDestcode.Format("%s",destcode);
						pCopyTrip->UpdateData(FALSE);
						return;
					}
				}
			}
		}*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值