dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>C/C++>C/C++技术资料>文章内容
VC++开发的应用技巧三则放送
来源: builder 作者: 帷幄

  1、创建向导对话框

  在使用具体某个软件的时候,我们常常会在该中使用向导模式来建立新的文件,最典型的例子就是在Frontpage2000中或者Word2000中使用向导方式来新建一个网页文件或者Word文档。那么看到别的程序都能提供人性化的向导对话框后,不知您有没有什么冲动?如果有的话,不妨使用下面的代码来创建一个向导对话框:

以下是引用片段:
void CMy56_s1Dlg::OnWiz()
{
    CSheet sheet;
    sheet.SetWizardMode();
    int iRet=sheet.DoModal();//返回ID_WIZFINISH或IDCANCEL
}
//重载BOOL CPropertyPage::OnSetActive( )来控制显示的按钮

BOOL CPage1::OnSetActive()
{
    ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_NEXT);
    return CPropertyPage::OnSetActive();
}

BOOL CPage2::OnSetActive()
{
    ((CPropertySheet*)GetParent())->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
    return CPropertyPage::OnSetActive();
}

  2、在计算机之间实现收发数据

  大家知道,计算机之间相互通信时,一般都是通过TCP协议来与指定IP地址的主机来建立联系,并进行相互通信的,在这个过程中,必需有一方扮演的角色等待另一方(客户端)的连接请求,所以服务器端需要建立一个监听套接口,然后在此套接口上等待连接。当连接建立后会产生一个新的套接口用于通信。而客户端在创建套接口后只需要简单的调用连接函数就可以创建连接。对于有连接的通信不论是数据的发送还是发送与接收的顺序都是有保证的。下面的代码就是利用VC++提供的CSocket来实现数据收发功能的:

以下是引用片段:
/*
服务器方在端口6802上等待连接,当连接建立后关闭监听套接口
客户方向服务器端口6802发起连接请求
*/

BOOL CMy63_s1_serverDlg::OnInitDialog()
{
    CDialog::OnInitDialog();

    CSocket sockListen;
    //创建本地套接口
    sockListen.Create(6802,SOCK_STREAM,"127.0.0.1");
    //绑定参数
    sockListen.Bind(6802,"127.0.0.1");
    sockListen.Listen(5);
    //等待连接请求,m_sockSend为成员变量,用于通信
    sockListen.Accept(m_sockSend);
    //关闭监听套接口
    sockListen.Close();
    //启动定时器,定时发送数据
   
    SetTimer(1,3000,NULL);
}


void CMy63_s1_serverDlg::OnTimer(UINT nIDEvent)
{
    static iIndex=0;
    char szSend[20];
    sprintf(szSend,"%010d",iIndex++);
    //发送TCP数据
    int iSend= m_sockSend.Send(szSend,10,0);
}

BOOL CMy63_s1_clientDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
    //创建本地套接口
    m_sockRecv.Create();
    //发起连接请求
    BOOL fC=m_sockRecv.Connect("127.0.0.1",6802);
    TRACE("connect is %s ",(fC)?"OK":"Error");
    //启动定时器,定时接收数据
    SetTimer(1,3000,NULL);
}

void CMy63_s1_clientDlg::OnTimer(UINT nIDEvent)
{
    char szRecv[20];
    //接收TCP数据
    int iRecv =m_sockRecv.Receive(szRecv,10,0);
    TRACE("received %d byte ",iRecv);
    if(iRecv>=0)
    {
        szRecv[iRecv]='';
        m_szRecv=szRecv;
        UpdateData(FALSE);
    }
}

  3、让工具栏并列显示

  假设在Windows程序窗口中有几个工具栏,现在我们希望让这些多个工具栏并列显示,该怎么实现呢?在这里,我们可以使用下面的函数来实现该功能,此函数是从CJ60Lib函数库弄下来的。笔者在下面的程序中实现的功能是,让LeftOf工具栏显示在Bar工具栏的左侧,同时还要并列显示在一起,下面就是实现其功能的主要代码:

以下是引用片段:
void CCJMDIFrameWnd::DockControlBarLeftOf(CControlBar* Bar,
CControlBar* LeftOf)
{
    CRect rect;
    DWORD dw;
    UINT n;
    // 使用MFC来调整所有工具栏的尺寸
    // 确保GetWindowRec准确
    RecalcLayout(TRUE);

    LeftOf->GetWindowRect(&rect);
    rect.OffsetRect(1,0);
    dw=LeftOf->GetBarStyle();
    n = 0;
    n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP: n;
    n = (dw&CBRS_ALIGN_BOTTOM&& n==0) ? AFX_IDW_DOCKBAR_BOTTOM:n;
    n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT:n;
    n = (dw&CBRS_ALIGN_RIGHT&& n==0) ? AFX_IDW_DOCKBAR_RIGHT:n;
    DockControlBar(Bar,n,&rect);
}



上一篇:基于OpenGL的三维曲面数据场动态显示   下一篇:OpenGL编程轻松入门之动画制作
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·C语言数组排序小结
·Python 与 C++ 程序的简单实例对
·c++ 数组与指针
·C++中的内存管理(new、delete、
·如何用C语言开发DSP嵌入式系统
·如何用C语言开发DSP嵌入式系统
·Linux下C语言编程
·学习arm的话先看哪本书?
·C++初学者应该关心的优秀图书一
·利用C语言小程序来解决大问题
·用C语言写PHP扩展的步骤
·用C语言扩展PHP功能
  相关文章
·OpenGL编程轻松入门之动画制作
·OpenGL编程轻松入门之菜单管理
·VC++实现非窗口类中使用定时器的
·用Visual C++设计“精灵”窗体
·VC++实现工具栏上添加平面组合框
·VC++实现Windows回收站的文件存
·Visual C++程序设计中的API和SDK
·在应用程序中播放声音资源文件
·VC++中利用/GS开关防止缓冲区溢
·VC++设计基于ODBC的数据库管理系
·用Visual C++实现PDF文件的显示
·在VC中添加响应自定义的消息的代
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763