我的vc笔记心得

111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

位图

1.准备图片:下载好图片,另存为桌面,右击编辑,另存为

2.创建单文档项目:

     点击菜单项 插入-〉资源-〉Bitmap-〉引用 ,选择 全部文件,并选择创建好的 16位图

ondraw插入如下代码:

void CBitmaptestView::OnDraw(CDC* pDC)

{

         CBitmaptestDoc* pDoc = GetDocument();

         ASSERT_VALID(pDoc);

 

         CBitmap Bitmap;

         Bitmap.LoadBitmap (IDB_BITMAP1);

         CDC MemDC;

         MemDC.CreateCompatibleDC(pDC);

         CBitmap * OldBitmap = MemDC.SelectObject(&Bitmap);

         BITMAP bm;

         Bitmap.GetBitmap(&bm);

         pDC->BitBlt(0,0,bm.bmWidth,bm.bmHeight,&MemDC,0,0,SRCCOPY);

         pDC->SelectObject(OldBitmap);

         // TODO: add draw code for native data here

}

22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222

文字操作

1.创建单文档项目:

void CRrView::OnDraw(CDC* pDC)

{

       CRrDoc* pDoc = GetDocument();

       ASSERT_VALID(pDoc);

       // TODO: add draw code for native data here

       CFont font;  //定义一个字体对象

       font.CreatePointFont(120,"黑体",pDC); //创建字体

       CFont *po=NULL; //定义一个字体指针

       po=pDC->SelectObject(&font);//选中字体

       pDC->SetTextColor(RGB(0,255,0));//设置字体颜色

       pDC->TextOut(0,0,"hello,world");//输出文本(可只写这一个)

       pDC->SelectObject(po);//恢复之前的字体

       font.DeleteObject(); //释放字体对象

}

 3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333

绘制矩形和椭圆

一.新建一个单文档

二.第二个选项卡,点menu

三.

四.为菜单项添加快捷键,点击第二个选项卡,双击这个

双击下面空白行添加矩形的

回车

继续双击下面空白行添加椭圆的

回车

五.为CZypView添加私有数据成员

右击

六.在构造函数中将m设置为0

七.为矩形和椭圆添加消息处理函数

点击Addfuction,ok,,,,,,椭圆的和矩形一样

八.为消息处理函数添加代码

 

void CZypView::OnRectangle()

{

         // TODO: Add your command handler code here

        

         f++;

         m=51;

         Invalidate();

}

void CZypView::OnEllipse()

{

         // TODO: Add your command handler code here

         f++;

         m=52;

         Invalidate();

}

九.在视图类CZypView的OnDraw添加代码

void CZypView::OnDraw(CDC* pDC)

{

         CZypDoc* pDoc = GetDocument();

         ASSERT_VALID(pDoc);

         // TODO: add draw code for native data here

         CPen pen;

         pen.CreatePen(PS_DASHDOT,2,RGB(255,0,0));

         CPen* oldp=pDC->SelectObject(&pen);

         CClientDC dc(this);

         //CClientDC dc(this);

         if(m==51){

                   pDC->Rectangle(10,10,300,200);

         }

         else if(m==52){

                   pDC->Ellipse(10,10,300,300);

         }

}

十.此时运行可以出现图形

菜单项记号(变灰色)

一.为CZypView添加三个变量,右击添加BOOL m_enabl  BOOL m_checkr         BOOL m_checke

二.构造函数中将变量初始化

CZypView::CZypView()

{

         // TODO: add construction code here

         m=0;//标明图形的类别

        

         f=0;

}

三.为菜单项添加更新消息处理函数

点击addfuction 点击OK 再点击EditCode,添加如下代码

void CZypView::OnUpdateRectangle(CCmdUI* pCmdUI)

{

         // TODO: Add your command update UI handler code here

         if(f%2==0)

         pCmdUI->Enable(true);

         if(f%2==1)

         pCmdUI->Enable(false);

}

同样的方法添加椭圆更新消息处理函数,代码如下

void CZypView::OnUpdateEllipse(CCmdUI* pCmdUI)

{

         // TODO: Add your command update UI handler code here

         if(f%2==1)

         pCmdUI->Enable(true);

         if(f%2==0)

         pCmdUI->Enable(false);

}

4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444

ODBC

1.新建一个数据库,表,添加数据

  1. 搜索ODBC,添加,sqlserver

         下一步,下一步,确定确定

  1. 新建一个多重文档,下一步,
  2.  
  1.  
  1.  

当前文档查询

  1. 查询需要根据用户输入,添加一个编辑框,为其设置变量

查代码:(执行查询会成功)

void CSdfView::OnButton4()

{

// TODO: Add your control notification handler code here

UpdateData(true);

CString col="name";

m_pSet->Close();

m_pSet->m_strFilter=col + "='" +m_input + "'";

m_pSet->Open();

UpdateData(false);

}

弹窗查询

  1. 1.     插入一个dialg,设计界面如图
  1. 2.     新建类,serch,确定,查看类向导
  1. 3.      
  1. 4.     查询内添加代码:

void COdbctView::OnButton4()

{

// TODO: Add your control notification handler code here

search f;

this->UpdateData(true);

if(f.DoModal()==IDOK)

{   CString s="name";

          m_pSet->Close();

          m_pSet->m_strFilter=s+"='"+f.m_value+"'";

          m_pSet->Open();

          this->UpdateData(false);

}

}

  1. 5.     查询运行成功

  1. 右击插入dialog,设计如图
  1. 2.  新建一个类

3. 添加变量

4.

5

void COdbctView::OnAdd()

{

         // TODO: Add your control notification handler code here    

         insert d;

         if(d.DoModal()==IDOK){

                   m_pSet->AddNew();

                   m_pSet->m_name=d.m_name;

                   m_pSet->m_sex =d.m_sex;

                   m_pSet->m_age =d.m_age;

                   m_pSet->Update();

                   m_pSet->Requery();

         }}.

void COdbctView::OnDel()

{

       // TODO: Add your control notification handler code here

       m_pSet->Delete();

       m_pSet->MoveNext();

       if(m_pSet->IsEOF())

       {

              m_pSet->MoveLast();

       }

       if(m_pSet->IsBOF())

       {

              m_pSet->SetFieldNull(NULL);

       }

       m_pSet->Requery();

       this->UpdateData(false);

}

void COdbctView::OnAdj()

{

         // TODO: Add your control notification handler code here

         insert d;

         d.m_name=m_pSet->m_name;

         d.m_sex=m_pSet->m_sex;

         d.m_age=m_pSet->m_age;

         if(d.DoModal()==IDOK)

         {

                   m_pSet->Edit();

                   m_pSet->m_name=d.m_name;

                   m_pSet->m_sex=d.m_sex;

                   m_pSet->m_age=d.m_age;

                   m_pSet->Update();

                   this->UpdateData(false);

         }

}

 5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555

上一条下一条

  1. 添加两个上一条下一条按钮
  2. 添加单机事件

3.为两个按钮添加变量分别为m_prebt,m_nextbt

  1. 代码:

void COdbctView::OnPre()

{

       // TODO: Add your control notification handler code here

       if (m_pSet->IsBOF())

       {

              m_prebt.EnableWindow(false);     

              return ;

       }

              m_nextbt.EnableWindow(true);    

       m_pSet->MovePrev();

       this->UpdateData(false);

}

void COdbctView::OnNext()

{

       // TODO: Add your control notification handler code here

       m_pSet->MoveNext();

       if (m_pSet->IsEOF())

       {

              m_nextbt.EnableWindow(false);

              return ;

       }

       m_prebt.EnableWindow(true);      

 

       this->UpdateData(false);

}

  1. 找到项目

zuyangpu.h右击属性

 666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666

客户端

一.创建一个基于对话框的程序,设置如下界面

二.为控件添加变量

三.Ip地址初始化

      SetDlgItemText(IDC_IPADDRESS1,"127.0.0.1");

四.构造函数中设置m_port为7788

 m_port = 7788; 

四.点击类向导,第一个选项卡,sasa,sasadlg,create,点击新建类

继续点,生成如下三个函数.

六.Cpp和h中添加头文件

七.添加代码

void MySocket::OnReceive(int nErrorCode)

{

         // TODO: Add your specialized code here and/or call the base class

         //获取对话框指针

         CSasaApp *pApp=(CSasaApp*)AfxGetApp();

         CSasaDlg *pDlg=(CSasaDlg*)pApp->m_pMainWnd;

         //王编辑框中插入消息

         char *pbuf=new char[4096];

         int ibufsize=4096;

         int ircvd;

         CString strrecvd;

         //接收数据

         ircvd=Receive(pbuf,ibufsize);

         if(ircvd==SOCKET_ERROR){

                   pDlg->MessageBox("SOCKET_ERROR");

         }else{

                   pbuf[ircvd]=NULL;

                   pDlg->m_recmsg+="服务器:";

                   pDlg->m_recmsg+=pbuf;

                   pDlg->m_recmsg+="\r\n";

                   pDlg->RefreshScreen();

         }

         delete pbuf;

         CAsyncSocket::OnReceive(nErrorCode);

}

void MySocket::OnConnect(int nErrorCode)

{

         // TODO: Add your specialized code here and/or call the base class

         CSasaApp *pApp=(CSasaApp*)AfxGetApp();

         CSasaDlg *pDlg=(CSasaDlg*)pApp->m_pMainWnd;

         int iResult=nErrorCode;

         CString buffer;

         int namelen;

         if(iResult!=0){

                   buffer.Format("连接服务器失败。\r\n");

                   pDlg->m_recmsg+=buffer;

         }else{

                   namelen=sizeof(sockaddr_in);

                  buffer.Format("成功连接到服务器。%s:%d.\r\n",pDlg->m_ipstr,pDlg->m_port);

                   pDlg->m_recmsg+=buffer;

                   pDlg->GetDlgItem(IDC_SEND)->EnableWindow(TRUE);

                   pDlg->GetDlgItem(IDOK)->EnableWindow(TRUE);

         }

         pDlg->RefreshScreen();//刷新窗口

         CAsyncSocket::OnConnect(nErrorCode);

}

八.右击dlg添加成员函数

九.添加

十.在CSasaDlg中添加变量:

右击添加变量

十一.双击连接按钮,添加连接按钮的消息映射OnConnect()函数

void CSasaDlg::OnConnect()

{

         // TODO: Add your control notification handler code here

         if(!AfxSocketInit()){

                   AfxMessageBox("IDP_SOCKETS_INIT_FAILED");

                   return ;

         }

         GetDlgItemText(IDC_IPADDRESS1,m_ipstr);

         m_socket.m_hSocket=INVALID_SOCKET;

         UpdateData(true);

 

         BOOL flag=m_socket.Create();

         if(!flag){

                   AfxMessageBox("SCOKET ERROR");      

                   return ;

         }

         m_socket.Connect(m_ipstr,m_port);

}

十二. 双击发送按钮,添加发送按钮的消息映射OnSend ()函数

void CSasaDlg::OnSend()

{

         // TODO: Add your control notification handler code here

         int ilen;

         int isent;

         UpdateData(TRUE);

         if(m_msg!=""){

                   ilen=m_msg.GetLength();

                   isent=m_socket.Send(LPCTSTR(m_msg),ilen);

                   if(isent==SOCKET_ERROR){

                            MessageBox("连接失败,请重试!");

                   }else{

                            m_recmsg+="客户机:"+m_msg;

                            m_recmsg+="\r\n";

                            UpdateData(FALSE);

                   }

         }

}

77777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777

服务器

  1. 1.     
  2. 2.      设计界面如图:
  1. 3.      控件ID

IDC_PORT  添加成员变量UNIT m_port

IDC_sendmsg  添加成员变量CString  m_msg

IDC_msg   添加成员变量CString  m_sendmsg

IDC_listen  IDC_SEND

  1. 4.      查看类向导----ADDCLASS---new
  1. 5.       

         void MySocket::OnReceive(int nErrorCode)

{

         // TODO: Add your specialized code here and/or call the base class

         CFuwuqiApp* pApp=(CFuwuqiApp*)AfxGetApp();

         CFuwuqiDlg* pDlg=(CFuwuqiDlg*)pApp->m_pMainWnd;

         //王编辑框中插入消息

         char *pbuf=new char[4096];

         int ibufsize=4096;

         int ircvd;

         CString strrecvd;

         ircvd=Receive(pbuf,ibufsize);

         if(ircvd==SOCKET_ERROR){

                   pDlg->MessageBox("SOCKET_ERROR");

         }else{

                   pbuf[ircvd]=NULL;

                   pDlg->m_msg+="客户机:";

                   pDlg->m_msg+=pbuf;

                   pDlg->m_msg+="\r\n";

                   pDlg->RefreshScreen();

         }

         delete pbuf;

         CAsyncSocket::OnReceive(nErrorCode);

}

6.查看类向导----ADDCLASS---new

  1. 6.      右击CMyServerSocket,添加成员变量
  1. 7.      查看类向导-

void CMyServerSocket::OnAccept(int nErrorCode)

{

       // TODO: Add your specialized code here and/or call the base class

       CFuwuqiApp* pApp=(CFuwuqiApp*)AfxGetApp();

       CFuwuqiDlg* pDlg=(CFuwuqiDlg*)pApp->m_pMainWnd;

       //显示连接消息

       pDlg->m_msg="客户机连接到服务器";

       pDlg->m_msg="\r\n";

       pDlg->RefreshScreen();

       pDlg->GetDlgItem(IDC_SEND)->EnableWindow(true);

       pDlg->GetDlgItem(IDOK)->EnableWindow(true);

       MySocket* psocket=new MySocket();

       if(Accept(*psocket)){

              psocket->AsyncSelect(FD_READ);

              m_socket=psocket;

       }else{

              delete psocket;

       }

       CAsyncSocket::OnAccept(nErrorCode);

}

  1. 8.      MyServerSocketH中添加头文件  #include "MySocket.h"
  2. 9.      双击正在监听按钮,创建函数

void CFuwuqiDlg::OnListen()

{

       // TODO: Add your control notification handler code here

       UpdateData(true);

       if(!AfxSocketInit()){

              AfxMessageBox("IDP_SOCKETS_INIT_FAILED");

              return ;

       }

       BOOL flag=m_serversocket.Create(m_port);

       if(!flag){

              AfxMessageBox("SOCKET ERROR");

              return ;

       }

       flag=m_serversocket.Listen(1);

       if(!flag){

              AfxMessageBox("SOCKET ERROR");

              return ;

       }

       SetDlgItemText(IDC_LISTEN,"正在监听");

}

10. 双击发送按钮,创建函数

 void CFuwuqi3Dlg::OnSend()

{

       // TODO: Add your control notification handler code here

       int ilen;

       int isent;

       UpdateData(true);

       if(m_sendmsg!=""){

              ilen=m_sendmsg.GetLength();

              isent=m_serversocket.m_socket->Send(LPCTSTR(m_sendmsg),ilen);

              if(isent==SOCKET_ERROR){

                     MessageBox("连接失败,请重试");

              }else{

                     m_msg+="服务器"+m_sendmsg;

                     m_msg+="\r\n";

                     UpdateData(false);

              }

       }

}

  1. 10.  右击C。。Dlg,添加成员变量,
  1. 11.  MySocketh添加头文件#include "MyServerSocket.h"
  2. 12.       

 

posted @ 2019-11-13 09:01  munds  阅读(228)  评论(0编辑  收藏  举报