mfc 卡死_MFC 打开接受屏幕窗口就卡死,是资源没有释放吗? 求解惑

我写了一个传输屏幕的程序,被控端发送屏幕信息到主控端进行显示然而主控端一打开接受窗口就卡死,就不动了关闭这个窗口主窗口也会被关掉。另外如果我只传输一帧数据是可以正常接受的...

我写了一个传输屏幕的程序, 被控端发送屏幕信息到主控端进行显示

然而主控端一打开接受窗口就卡死,就不动了 关闭这个窗口 主窗口也会被关掉。

另外如果我只传输一帧数据是可以正常接受的

下面是主要代码 求大神指教

void CScreenDlg::GetScreen()

{

MsgHead MsgSend;

MsgSend.dwCmd = CMD_GETFIRST_SCREEN;

MsgSend.dwSize = 0;

if(!SendMsg(m_MainSocket, NULL, &MsgSend))//发出请求屏幕传输的要求

{

::MessageBox(NULL, "屏幕传输请求失败", "出错", MB_OK);

closesocket(m_MainSocket);

return ;

}

//以下为屏幕的获取, 一直获取并显示 直到接收不到

while(1)

{

MsgHead MsgRecv;

if(!RecvData(m_MainSocket, (char *)&MsgRecv, sizeof(MsgHead)))

{

::MessageBox(NULL, "屏幕数据接收,命令接收失败", "出错", MB_OK);

closesocket(m_MainSocket);

return ;

}

bmfHdr.bfType = 0x4D42; // "BM" // 设置位图文件头

bmfHdr.bfSize = MsgRecv.dwExtend1;

bmfHdr.bfReserved1 = 0;

bmfHdr.bfReserved2 = 0;

bmfHdr.bfOffBits = MsgRecv.dwExtend2;

if(!RecvData(m_MainSocket,(char *)pData,MsgRecv.dwSize))//pdata 全局变量 退出时释放

{

::MessageBox(NULL, "屏幕数据接收,数据接收失败", "出错", MB_OK);

closesocket(m_MainSocket);

return ;

}

Invalidate(TRUE);

}

}

void CScreenDlg::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: 在此处添加消息处理程序代码

//双缓存防止闪烁

CWnd* hwnd = GetDlgItem(IDC_PIC);

HDC hDesDC = hwnd->GetDC()->m_hDC;

HDC hSrcDC = CreateCompatibleDC(hDesDC);

HBITMAP hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), strFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION);

BITMAP bm;

GetObject(hBitmap, sizeof(BITMAP), &bm);

SelectObject(hSrcDC, hBitmap);

CRect rect;

hwnd->GetClientRect(&rect);

BitBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, SRCCOPY);

}

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值