我的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.新建一个数据库,表,添加数据
- 搜索ODBC,添加,sqlserver
下一步,下一步,确定确定
- 新建一个多重文档,下一步,
(当前文档查询)
- 查询需要根据用户输入,添加一个编辑框,为其设置变量
查代码:(执行查询会成功)
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. 插入一个dialg,设计界面如图
- 2. 新建类,serch,确定,查看类向导
- 3.
- 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);
}
}
- 5. 查询运行成功
增
- 右击插入dialog,设计如图
- 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
上一条下一条
- 添加两个上一条下一条按钮
- 添加单机事件
3.为两个按钮添加变量分别为m_prebt,m_nextbt
- 代码:
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);
}
- 找到项目
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.
- 2. 设计界面如图:
- 3. 控件ID等
IDC_PORT 添加成员变量UNIT m_port
IDC_sendmsg 添加成员变量CString m_msg
IDC_msg 添加成员变量CString m_sendmsg
IDC_listen IDC_SEND
- 4. 查看类向导----〉ADDCLASS---〉new
- 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
- 6. 右击CMyServerSocket,添加成员变量
- 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);
}
- 8. 在MyServerSocket。H中添加头文件 #include "MySocket.h"
- 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);
}
}
}
- 10. 右击C。。Dlg,添加成员变量,
- 11. MySocket。h添加头文件#include "MyServerSocket.h"
- 12.