重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
自画按钮啊
察隅网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联从2013年创立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
一,新建一个基于对话框的工程Dlg。
二,增加两个按钮,ID分别为IDC_BUTTON1、IDC_BUTTON2,第一个选中“自画”属性。
三,在CDlgDlg类增加一个变量bool m_bStart ;并在构造函数中将它赋初值为false;
CDlgDlg::CDlgDlg(CWnd* pParent /*=NULL*/)
: CDialog(CDlgDlg::IDD, pParent)
{
m_bStart = false ;
//{{AFX_DATA_INIT(CDlgDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);
}
四,双击第二个按钮,为它增加响应函数,代码如下:
void CDlgDlg::OnButton2()
{
m_bStart = !m_bStart ;
Invalidate();
}
五,利用类向导在类为WM_DRAWITEM增加响应函数,代码如下:
void CDlgDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct)
{
if( IDC_BUTTON1 == nIDCtl )
{
CDC dc;
dc.Attach(lpDrawItemStruct-hDC);
CBrush brush(RGB(255,0,0));
if( m_bStart )
{
dc.SelectObject(brush);
}
CPoint pt(lpDrawItemStruct-rcItem.left,lpDrawItemStruct-rcItem.top);
dc.Ellipse(lpDrawItemStruct-rcItem);
}
else
CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}
主要是对SerialPort控件的编程和数据库的读取,
在数据库读取方面可以用 DataSet ,BindingSource , TableAdapter 等数据绑定控件,
SerialPort控件的具体读写方法建议你看MSDN,大概是:
Private Sub 关闭和启动串口()
Try
If 串口.IsOpen Then
串口.Close()
End If
串口.Open()
Catch ex As Exception
''''
End Try
End Sub
Private Sub 串口的读与写()
......
Dim 发送字节() As Byte, 返回字节 As Byte
Try
'例如要发送字节: 6D
发送字节 = BitConverter.GetBytes(CByte("H6D"))
串口.Write(发送字节, 0, 1)
......
'例如读串口返回的字节
返回字节 = 串口.ReadByte
Catch ex As Exception
''''
End Try
......
End Sub
'等等
在VC中,通常用MFC的CDC类进行绘图。
简单的原型绿色指示灯,使用绿色刷子画圆形即可:
CBrush br(RGB(0,255,0));//绿色刷子
CBrush* oldB = pDC-SelectObject(br);
pDC-Ellipse(CRect(50,50,100,100));//画圆
pDC-SelectObject(oldB);
但这样的“指示灯”比较简陋,如果希望有立体、光影等效果,不建议使用简单形状绘图,而是将指示灯在专业制图软件(如PS)中绘制好之后,做成BMP文件,在程序中通过TransparentBlt函数绘制出来,效果会更好。
用shape控件,把类型设置为圆形,程序里控制它的填充色来表示不同状态
SCON = 0x50; //REN=1允许串行接受状态,串口工作模式1 TMOD|= 0x20; 试下这个程序,PC发什么,它就回送什么,收到数据,点亮P2.0的LED。