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

VC++开发的应用技巧三则放送,第1张

VC++开发的应用技巧三则放送,第2张

1.创建向导对话框

当使用一个特定的软件时,我们经常使用向导模式在程序中创建新文件。最典型的例子是在Frontpage2000或Word2000中使用向导模式创建新的网页文件或Word文档。那么,看到其他程序可以提供人性化的向导对话框后,你有没有什么冲动呢?如果是这样,您不妨使用下面的代码来创建一个向导对话框:

以下是引用的片段:
void cmy 56 _ s1dlg::on wiz()
{
c sheet sheet;
表。SetWizardMode();
int iRet=sheet。DoModal();//返回ID_WIZFINISH或ID cancel
}
/overload BOOL CPropertyPage::on setactive()控制显示的按钮。

BOOL cpage 1::on setactive()
{
((CPropertySheet *)get parent())--> SetWizardButtons(PSWIZB _ BACK | PSWIZB _ NEXT);
return CPropertyPage::on setactive();
}

BOOL cpage 2::on setactive()
{
((CPropertySheet *)get parent())--> SetWizardButtons(PSWIZB _ BACK | PSWIZB _ FINISH);
return CPropertyPage::on setactive();
}


2。在计算机之间发送和接收数据

众所周知,计算机在相互通信时,通常是通过TCP协议与指定IP地址的主机建立联系,相互通信。在这个过程中,一方必须扮演服务器的角色并等待另一方(客户端)的连接请求,所以服务器需要建立一个监控windows套接字,然后在这个windows套接字上等待连接。当连接建立后,将为通信生成一个新的windows套接字。然而,在创建windows套接字之后,客户端可以简单地通过调用连接函数来创建连接。对于连接的通信,数据传输以及传输和接收的顺序都得到保证。下面的代码使用VC++提供的CSocket来实现数据发送和接收的功能:

以下是引用:
/*
服务器端等待6802端口的连接,当连接建立后,关闭监听windows套接字
客户端向服务器端口6802发送连接请求
*/

BOOL cmy 63 _ S1 _ server DLG::OnInitDialog()
{
CDialog::OnInitDialog();

CSocket sockListen
//创建一个本地windows sockets
sock listen . Create(6802,sock _ stream," 127 . 0 . 0 . 1 ");
//绑定参数
socklisten.bind (6802," 127 . 0 . 0 . 1 ");sockListen。听(5);
//等待连接请求,m_sockSend是成员变量,用于通信
sock listen . accept(m _ sock send);
//关闭侦听windows套接字
sockListen。close();
//启动定时器,定时发送数据

SetTimer(13000,null);
}


void cmy 63 _ S1 _ server DLG::on time(UINT nIDEvent)
{
static iIndex = 0;
char szSend[20];
sprintf(szSend," %010d ",iindex++);
//发送TCP数据
int Send = m _ socks end . Send(szsend,10,0);
}

BOOL cmy 63 _ S1 _ client DLG::OnInitDialog()
{
CDialog::OnInitDialog();
//创建一个本地windows套接字
m_sockRecv。create();
//发起连接请求
bool fc = m _ sock recv . connect(" 127 . 0 . 0 . 1 ",6802);
TRACE("connect is %s ",(fC)?“OK”:“Error”);
//启动定时器,定时接收数据
SetTimer(13000,NULL);
}

void cmy 63 _ S1 _ client DLG::on time(UINT nIDEvent)
{
char szRecv[20];
//接收TCP数据
inti recv = m _ sock recv . Receive(szrecv,10,0);
TRACE("已接收%d字节",iRecv);
if(iRecv > = 0)
{
SZ recv[iRecv]= ' ';
m _ SZ recv = SZ recv;
update data(FALSE);
}
}

3.让工具栏并排显示。


假设Windows程序窗口中有几个工具栏。现在我们希望这些工具栏并排显示。如何才能实现这一点?这里我们可以用下面的函数来实现这个功能,这个函数是从CJ60Lib函数库中获取的。作者在下面的程序中实现的功能是:LeftOf toolBar显示在Bar工具栏的左侧,而且要并排显示。下面是实现其功能的主要代码:

下面是引用的片段:
void ccjmdiframewnd::DockControlBarleftof(ccontrolbar * bar,
ccontrolbar * left of)
{
crectrect;
DWORD dw;
UINT n;
//使用MFC调整所有工具栏的大小
//确保GetWindowRec准确
RecalcLayout(TRUE);

left of-> GetWindowRect(& rect);
rect。OffsetRect(1,0);
dw = left of-> getbar style();
n = 0;
n = (dw&CBRS_ALIGN_)?AFX _ IDW _ dock bar _: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 _ dock bar _ RIGHT:n;
DockControlBar(Bar,n,& rect);
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » VC++开发的应用技巧三则放送

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情