VC++开发的应用技巧三则放送
2007-03-15 21:46:51 来源:WEB开发网核心提示: 以下是引用片段:/*服务器方在端口6802上等待连接,当连接建立后关闭监听套接口客户方向服务器端口6802发起连接请求*/BOOL CMy63_s1_serverDlg::OnInitDialog(){CDialog::OnInitDialog();CSocket sockListen;/
以下是引用片段:
/*
服务器方在端口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);
}
更多精彩
赞助商链接