亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? robotview.cpp

?? < VC++視頻音頻開發>> 這本書的源碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// robotView.cpp : implementation of the CRobotView class
//

#include "stdafx.h"
#include "robot.h"
#include"Label.h"

#include "robotDoc.h"
#include "robotView.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRobotView

IMPLEMENT_DYNCREATE(CRobotView, CFormView)

BEGIN_MESSAGE_MAP(CRobotView, CFormView)
	//{{AFX_MSG_MAP(CRobotView)
	ON_WM_CTLCOLOR()
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_COMMNOTIFY, OnCommNotify)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRobotView construction/destruction

CRobotView::CRobotView()
	: CFormView(CRobotView::IDD)
{
	//{{AFX_DATA_INIT(CRobotView)
	//}}AFX_DATA_INIT
	// TODO: add construction code here
	m_ncomand1=10;
	m_bflag=0;
	m_nsudu=1;
	m_ngzq=0;
	m_nguanjie;
	m_nfangxiang;
	m_nmsg[0]=0;
	m_njishu=0;
	m_nmsg[1]=0;
	m_nmsg[2]=0;
	m_nmsg[3]=0;
	m_nmsg[4]=0;
	m_nsum=0;
	m_ndelay=0;
	nLength=0;
	m_recflag=1;
	m_failflag=1;
	m_brush.CreateSolidBrush(RGB(40,98,122)); // 生成一綠色刷子 

}

CRobotView::~CRobotView()
{
}

void CRobotView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRobotView)
	//DDX_Control(pDX, IDC_EDIT1, m_edit1);
	DDX_Control(pDX, IDC_STATIC_LINK, m_link);
	DDX_Control(pDX, IDC_STATIC_1, m_ml);
	DDX_Control(pDX, IDC_STATIC_4, m_workpart);
	DDX_Control(pDX, IDC_STATIC_COMMAND, m_command);
	DDX_Control(pDX, IDC_STATIC_STATUS, m_static);
	DDX_Control(pDX, IDC_STATIC_BUCHANG, m_buchangshu);
	DDX_Control(pDX, IDC_STATIC_5, m_buchang);
	DDX_Control(pDX, IDC_STATIC_3, m_sudu);
	DDX_Control(pDX, IDC_STATIC_2, m_zhuangtai);
	//}}AFX_DATA_MAP
}

BOOL CRobotView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CFormView::PreCreateWindow(cs);
}



/////////////////////////////////////////////////////////////////////////////
// CRobotView diagnostics

#ifdef _DEBUG
void CRobotView::AssertValid() const
{
	CFormView::AssertValid();
}

void CRobotView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}

CRobotDoc* CRobotView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRobotDoc)));
	return (CRobotDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CRobotView message handlers

void CRobotView::OnDraw(CDC* pDC) 
{
	// TODO: Add your specialized code here and/or call the base class
	SuduDisplay(m_nsudu);
	GzqDisplay(m_ngzq);
}

void CRobotView::OnInitialUpdate() 
{
	CFormView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	m_link.SetLink(TRUE)
		.SetTextColor(RGB(0,0,255))
		.SetFontUnderline(TRUE)
		.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1));
	m_command.SetFontSize(24)
		.SetFontName("Terminal")
			  .SetTextColor(RGB(240,240,40));
	m_static.SetFontSize(24)
			  .SetTextColor(RGB(240,240,40));
	m_workpart.SetFontSize(24)
		.SetFontBold(TRUE)
			  .SetTextColor(RGB(0,240,0));
	m_buchangshu.SetFontSize(24)
			  .SetTextColor(RGB(240,240,40));
	m_buchang.SetFontSize(24)
			.SetFontBold(TRUE)
			  .SetTextColor(RGB(0,240,0));
	m_sudu.SetFontSize(24)
			.SetFontBold(TRUE)
			  .SetTextColor(RGB(0,240,0));
	m_zhuangtai.SetFontSize(24)
			.SetFontBold(TRUE)
			  .SetTextColor(RGB(0,240,0));
	m_ml.SetFontSize(24)
			.SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1))
			.SetFontBold(TRUE)
			 .SetTextColor(RGB(0,240,0));
	GetParentFrame()->RecalcLayout();
	ResizeParentToFit();
}

LRESULT CRobotView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
{
	// TODO: Add your specialized code here and/or call the base class
	if(message == (WM_USER + 1002))
		ProcessMessage(wParam, lParam);
	else if(message==(WM_USER+1003))
		ProcessMyMessage();
	return CFormView::WindowProc(message, wParam, lParam);
}
void CRobotView::ProcessMessage(WPARAM wParam, LPARAM lParam)
{
	
	CRobotDoc* pDoc=GetDocument();
	char* l[57] = {"零","一","二",///012
		"三","四","五","六","七","八","九","執行","各關節歸零","大臂正轉",///12
		"大臂反轉","小臂正轉","小臂反轉","手腕正轉","手腕反轉","手爪張開","手爪閉合","上升","下降","大臂運行",///13--22
		"大臂負運行","小臂運行","小臂負運行","手腕運行","手腕負運行","手爪運行","手爪負運行","升降運行",////23---30
		"升降負運行","大臂歸零","小臂歸零","手腕歸零","手爪歸零","升降歸零","速度加","原點記憶",///31---38
		"系統復位","示教盒","","","回原點","速度減","區號加","區號減","單步再現","周期再現",///39---48
		"連續再現","返回","繼續","數據記憶","讀取數據","設置串口","打開串口","關閉串口"};	
	CString    strcomand;
	CString    strstatus;
	m_recflag=1;
	if(!pDoc->m_bConnected)
	{
		KillTimer(1);
		MessageBox("請先打開串口");
		return;
	}
	if(wParam==100)
	{
		KillTimer(1);
		if(!m_failflag)
			{
					CWnd* pWnd=GetDlgItem(IDC_STATIC_5);
					pWnd->SetWindowText("");
			        pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
		            pWnd->SetWindowText("");
			        pWnd=GetDlgItem(IDC_STATIC_COMMAND);
			        pWnd->SetWindowText("請輸入新的命令");
			        pWnd=GetDlgItem(IDC_STATIC_STATUS);
			        pWnd->SetWindowText("執行完畢");
			        m_ncomand1=0;
					
				}
				else
					MessageBox("請檢查連線是否正確或下位機是否打開","通信失敗",MB_ICONWARNING);
				}
	else if(wParam>=11&&wParam<=56)
	{
		m_bflag=0;
		m_ncomand1=wParam;
		strcomand=l[m_ncomand1];
		CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND);
		pWnd->SetWindowText(strcomand);
		pWnd=GetDlgItem(IDC_STATIC_STATUS);
		pWnd->SetWindowText("");
		pWnd=GetDlgItem(IDC_STATIC_5);
		pWnd->SetWindowText("");
		pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
		pWnd->SetWindowText("");
		m_nsum=0;
		m_njishu=0;
	}
	else if(wParam>=0&&wParam<=9)
	{	
		if(m_ncomand1>=12&&m_ncomand1<=21)		
		{
			m_bflag=1;
			m_nmsg[m_njishu]=wParam;
		   //pWnd=GetDlgItem(IDC_STATIC_COMMAND);
	        //pWnd->SetWindowText(strcomand);
			CWnd* pWnd=GetDlgItem(IDC_STATIC_5);
			pWnd->SetWindowText("步長:");
			++m_njishu;
			if(m_njishu==1)
			{
				CString m_stemp;
				m_nsum=m_nmsg[0];
				m_stemp.Format("%d",m_nsum);
				pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
				pWnd->SetWindowText(m_stemp);
			}
			if(m_njishu==2)
			{
				CString m_stemp;
				m_nsum=m_nmsg[0]*10+m_nmsg[1];
				m_stemp.Format("%d",m_nsum);
				pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
				pWnd->SetWindowText(m_stemp);
			}
			if(m_njishu==3)
			{
				CString m_stemp;
				m_nsum=m_nmsg[0]*100+m_nmsg[1]*10+m_nmsg[2];
				//m_nmsg[0]=0;
				//m_nmsg[1]=0
				//	m_nmsg[2]=0;
				//	m_njishu=0;
				m_stemp.Format("%d",m_nsum);
				pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
				pWnd->SetWindowText(m_stemp);
			}
			if(m_njishu==4)
			{
				CString m_stemp;
				m_nsum=m_nmsg[0]*1000+m_nmsg[1]*100+m_nmsg[2]*10+m_nmsg[3];
				m_stemp.Format("%d",m_nsum);
				pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
				pWnd->SetWindowText(m_stemp);
			}
			if(m_njishu>4)
			{
				m_njishu=1;
				m_nmsg[0]=m_nmsg[4];
				CString m_stemp;
				m_nsum=m_nmsg[0];
				m_stemp.Format("%d",m_nsum);
				pWnd=GetDlgItem(IDC_STATIC_BUCHANG);
				pWnd->SetWindowText(m_stemp);
				m_nmsg[1]=0;
				m_nmsg[2]=0;
				m_nmsg[3]=0;
			}
		}		
		else
			;	//MessageBox("清先輸入運動步數命令");
	}
	else if(wParam=10)
	{    SetTimer(1,500,NULL);
		if(m_ncomand1>=11&&m_ncomand1<=56)
		{
			if(!m_bflag)
			{
				strstatus="正在執行命令,請稍后.....";
				CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS);
				pWnd->SetWindowText(strstatus);
				Execute(m_ncomand1);
			
			}	
			else //if(m_ncomand1>=12&&m_ncomand1<=21)
			{
				unsigned char m_uhi,m_ulo;
				m_nmsg[0]=0;
	        	m_nmsg[1]=0;
				m_nmsg[2]=0;
				m_nmsg[3]=0;
				m_njishu=0;
			///	CWnd* pWnd=GetDlgItem(IDC_STATIC_STATUS);
			   /// pWnd->SetWindowText("正在執行命令,請稍后.....");
				switch(m_ncomand1)
				{
				case(12):
					m_nguanjie=01;
					m_nfangxiang=00;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(13):
					m_nguanjie=0x01;
					m_nfangxiang=0xff;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(14):
					m_nguanjie=0x02;
					m_nfangxiang=0x00;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum)/(m_nsudu*3);
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(15):
					m_nguanjie=0x02;
					m_nfangxiang=0xff;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum)/(m_nsudu*3);
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(16):
					m_nguanjie=0x04;
					m_nfangxiang=0x00;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(17):
					m_nguanjie=0x04;
					m_nfangxiang=0xff;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(18):
					m_nguanjie=0x05;
					m_nfangxiang=0x00;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(19):
					m_nguanjie=0x05;
					m_nfangxiang=0xff;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/m_nsudu;
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(20):
					m_nguanjie=0x03;
					m_nfangxiang=0x00;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/(m_nsudu*2);
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
					case(21):
					m_nguanjie=0x03;
					m_nfangxiang=0xff;
					m_uhi=(unsigned char)(m_nsum/256);
					m_ulo=(unsigned char)(m_nsum-m_uhi*256);
					m_ndelay=(m_nsum+500)/(m_nsudu*2);
					Execute_1(m_nguanjie,m_nfangxiang,m_uhi,m_ulo,m_ndelay);
					break;
				}
				
           }
			m_failflag=1;}
	   else
		   MessageBox("清先輸入命令");
     }
	 else
		 MessageBox("不能識別,請重新輸入命令");
}
void CRobotView::ProcessMyMessage()
{
	CDC *PDc=GetDC();
	m_failflag=0;
		switch(m_ncomand1)
		{
		case(37):
			{
				m_nsudu++;
				if(m_nsudu==6)
					m_nsudu=1;
				OnDraw(PDc);
			}
			break;
		case(44):
			{
				m_nsudu--;
				if(m_nsudu==0)
					m_nsudu=5;
				OnDraw(PDc);
			}
			break;
		case(45):
			{
				m_ngzq++;
				if(m_ngzq==8)
					m_ngzq=0;
				OnDraw(PDc);
			}
			break;
		case(46):
			{
				m_ngzq--;
				if(m_ngzq==-1)
					m_ngzq=7;
				OnDraw(PDc);
			}
			break;
		}
		CWnd* pWnd=GetDlgItem(IDC_STATIC_COMMAND);
		pWnd->SetWindowText("請輸入新的命令");
		pWnd=GetDlgItem(IDC_STATIC_STATUS);
		pWnd->SetWindowText("執行完畢");
		m_ncomand1=0;
	//}
	//else
	//	MessageBox("請檢查連線是否正確或下位機是否打開","通信失敗",MB_ICONWARNING);
}
void CRobotView::SuduDisplay(int n)
{
	CWnd* pWnd=GetDlgItem(IDC_STATIC_SUDU);
	CDC* pControlDC=pWnd->GetDC();
	pWnd->Invalidate();
	pWnd->UpdateWindow();
	pControlDC->SelectStockObject(BLACK_BRUSH);
	CBitmap mBit;
	CDC MemDC;
	MemDC.CreateCompatibleDC(NULL);
	switch(n)
	{
	case 0:
	mBit.LoadBitmap(IDB_BMP10);
	break;
	case 1:
	mBit.LoadBitmap(IDB_BMP11);
	break;
	case 2:
	mBit.LoadBitmap(IDB_BMP12);
	break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品欧美综合在线| 美女性感视频久久| 精品一区二区久久久| 成人18精品视频| 日韩欧美成人一区| 亚洲第一二三四区| 99久久婷婷国产综合精品电影| 在线电影国产精品| 亚洲天堂精品视频| 高清不卡一区二区| 日韩视频不卡中文| 亚洲18女电影在线观看| 色综合久久久久| 欧美激情艳妇裸体舞| 久久精品国产第一区二区三区| 欧美日精品一区视频| 自拍偷拍国产亚洲| av亚洲精华国产精华精| 久久精品无码一区二区三区| 久久国产精品第一页| 日韩亚洲欧美高清| 日韩—二三区免费观看av| 欧美日韩另类国产亚洲欧美一级| 中文字幕不卡三区| 高清不卡一区二区| 中文字幕第一页久久| 国产大陆精品国产| 久久久三级国产网站| 久久99精品国产| 亚洲精品一区二区三区福利| 狠狠狠色丁香婷婷综合久久五月| 日韩欧美在线123| 蜜桃视频在线观看一区| 日韩欧美一区中文| 久久 天天综合| 久久久精品蜜桃| 国产成人三级在线观看| 中文字幕精品在线不卡| 成人小视频在线观看| 国产精品毛片大码女人| 91亚洲精品久久久蜜桃网站| 亚洲综合色噜噜狠狠| 欧美日韩一区在线| 日日摸夜夜添夜夜添亚洲女人| 日韩一区二区在线观看视频播放| 日本免费在线视频不卡一不卡二| 日韩视频123| 国产精品99精品久久免费| 国产精品女上位| 在线精品视频一区二区| 奇米色一区二区三区四区| 精品国产髙清在线看国产毛片| 国产精品中文欧美| 国产精品嫩草影院com| 91福利精品视频| 免费观看久久久4p| 国产欧美日韩精品一区| 欧美亚洲国产一区在线观看网站| 日本不卡一区二区三区| 精品1区2区在线观看| www.亚洲色图.com| 亚洲成a人片综合在线| 日韩精品一区二区三区在线观看| 国产成人无遮挡在线视频| 亚洲乱码中文字幕| 日韩美女视频在线| 成人国产精品免费观看| 天堂va蜜桃一区二区三区| 欧美精品一区二区三区在线播放| 91丨九色丨蝌蚪丨老版| 免费成人深夜小野草| 中文字幕在线一区| 欧美一区二区三区免费大片 | 亚洲激情图片小说视频| 香蕉影视欧美成人| 久久久久国产免费免费 | 日本乱人伦一区| 麻豆精品久久精品色综合| 国产精品国产自产拍高清av| 欧美日韩一区二区三区免费看| 国产资源在线一区| 亚洲国产日韩a在线播放| 久久久蜜桃精品| 欧美精品一卡两卡| 国产aⅴ综合色| 亚洲r级在线视频| 国产视频亚洲色图| 日韩女优av电影| 在线视频一区二区三| 国产凹凸在线观看一区二区| 日韩精品一级中文字幕精品视频免费观看| 欧美激情在线看| 精品三级在线看| 在线精品视频免费播放| 粉嫩av一区二区三区在线播放 | 亚洲你懂的在线视频| 久久婷婷综合激情| 日韩欧美精品三级| 56国语精品自产拍在线观看| 一本色道久久加勒比精品 | 久久99精品视频| 亚洲午夜激情网站| 亚洲精品视频一区| 国产午夜精品久久久久久久| 久久久欧美精品sm网站| 精品欧美一区二区久久| 日韩一区二区三区视频在线| 欧美日韩成人高清| 在线播放91灌醉迷j高跟美女 | 国产欧美一区二区精品仙草咪| 91精品国产一区二区三区蜜臀| 欧美高清视频在线高清观看mv色露露十八| 欧洲一区二区av| 欧美久久久一区| 91麻豆精品国产自产在线| 欧美日韩国产电影| 欧美一卡在线观看| 欧美一区二区三区影视| 宅男在线国产精品| 日韩午夜激情电影| 久久精品亚洲麻豆av一区二区| 久久久久久电影| 亚洲欧洲性图库| 午夜精品爽啪视频| 麻豆精品久久久| 国产麻豆精品久久一二三| 国产很黄免费观看久久| hitomi一区二区三区精品| 91浏览器打开| 欧美美女一区二区三区| 欧美一区二区在线播放| 精品久久国产老人久久综合| 国产亚洲1区2区3区| 日本一区二区动态图| 亚洲日本va午夜在线影院| 一个色妞综合视频在线观看| 日日嗨av一区二区三区四区| 激情深爱一区二区| 成人午夜免费电影| 欧洲日韩一区二区三区| 日韩精品一区二区在线| 亚洲国产高清在线| 亚洲日本韩国一区| 麻豆免费看一区二区三区| 成人午夜碰碰视频| 欧美日韩一区二区三区在线| 亚洲精品一区二区三区蜜桃下载| 亚洲丝袜精品丝袜在线| 日本在线不卡一区| 成人理论电影网| 欧美乱妇15p| 伊人性伊人情综合网| 日日骚欧美日韩| 高清成人在线观看| 欧美人伦禁忌dvd放荡欲情| 久久久久久一级片| 一区二区三区四区不卡在线 | 色综合久久综合网97色综合 | 免费观看在线色综合| 成人免费精品视频| 欧美一级艳片视频免费观看| 中文一区二区在线观看| 三级影片在线观看欧美日韩一区二区| 粉嫩aⅴ一区二区三区四区五区| 欧美怡红院视频| 国产精品国产三级国产普通话99| 日本怡春院一区二区| 色悠久久久久综合欧美99| 久久久久久久综合色一本| 亚洲一区二区三区中文字幕在线| 国产精品一区二区久久精品爱涩| 欧美无砖专区一中文字| 中文字幕二三区不卡| 麻豆精品一区二区av白丝在线| 91久久香蕉国产日韩欧美9色| 久久综合九色综合欧美就去吻| 亚洲一二三区不卡| 97精品久久久久中文字幕 | 成人动漫视频在线| 久久一留热品黄| 水野朝阳av一区二区三区| 99国产精品国产精品毛片| 国产婷婷一区二区| 久久电影国产免费久久电影| 欧美日韩国产综合视频在线观看| 亚洲欧美国产高清| 99久久久精品免费观看国产蜜| 久久久精品影视| 国产毛片精品视频| 精品国产亚洲在线| 美腿丝袜在线亚洲一区| 欧美日韩1234| 青娱乐精品在线视频| 日韩一区二区影院| 免费在线看成人av| 日韩免费一区二区| 激情欧美一区二区| 国产三级精品视频| 成人av网址在线| 亚洲男人的天堂在线观看|