VC++开发的应用技巧三则放送

分类: VC.NET   出处:iocblog整理  更新时间:2008-11-30   添加到收藏  

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);
    }
}

 

[1] [2] 下一页


Tag: 对话框 ,csocket ,工具栏



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。