我将Visual Studio 2010与MFC结合使用,并且尝试使断开连接的设备显示为红色,而断开连接时显示为绿色的矩形。我用以下代码制作了矩形:

CRect lConnectStatus;
    GetDlgItem( IDC_CONNECT_STATUS ) -> GetClientRect( &lConnectStatus );
    GetDlgItem( IDC_CONNECT_STATUS ) -> ClientToScreen( &lConnectStatus );
    ScreenToClient( &lConnectStatus );
    mConnected.Create( GetSafeHwnd(), 10000 );
    mConnected.SetPosition( lConnectStatus.left, lConnectStatus.top, lConnectStatus.Width(), lConnectStatus.Height() );
    if( mDevice.IsConnected() ){
        mConnected.SetBackgroundColor(0, 255, 0);
    }
    else{mConnected.SetBackgroundColor(0, 0, 255);}

我将此代码段插入OnInitDlg方法中,并且确实出现了矩形,但是在连接设备后它不会变为绿色。无论如何,我可以刷新窗口以便再次执行代码并且颜色变为绿色吗?

最佳答案

IDC_CONNECT_STATUS是什么类型的控件?如果它是静态控件,则可以消除所有这些代码,并在父对话框中处理WM_CTLCOLOR_STATIC。该消息的消息处理程序将控制静态控件的颜色。要刷新静态控件,请对该控件调用Invalidate。这将导致它调用您的WM_CTLCOLOR_STATIC消息处理程序。

关于c++ - C++ MFC刷新窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31799520/

10-12 00:52