//OCX上绘4个Static控件,单击控件,修改边框颜色,好像就第一次管用,
//后面再单击都不起作用了。
//4个Static控件映射单击函数
ON_STN_DBLCLK(IDC_TestStatic_1, OnDoubleclickedButton1)
ON_STN_DBLCLK(IDC_TestStatic_2, OnDoubleclickedButton2)
ON_STN_DBLCLK(IDC_TestStatic_3, OnDoubleclickedButton3)
ON_STN_DBLCLK(IDC_TestStatic_4, OnDoubleclickedButton4)//创建Static控件
CTestOCXCtrl::CTestOCXCtrl()
{
InitializeIIDs(&IID_DTestOCX, &IID_DTestOCXEvents);
// TODO: Initialize your control's instance data here.
CRect rcSize;
GetClientRect(rcSize);
m_static_1.DestroyWindow();
m_static_2.DestroyWindow();
m_static_3.DestroyWindow();
m_static_4.DestroyWindow();
//1
CRect rcStatic_1(rcSize.left, //x
rcSize.top,
rcSize.left+(rcSize.Width()/2), //x
rcSize.top + (rcSize.Height() / 2));
//3
CRect rcStatic_3(rcSize.left, //x
rcSize.top + (rcSize.Height() / 2),
rcSize.left+(rcSize.Width()/2), //x
rcSize.top + (rcSize.Height()));
//2
CRect rcStatic_2(rcSize.left+rcSize.Width()/2, //x
rcSize.top ,
rcSize.left+ rcSize.Width(), //x
rcSize.top + rcSize.Height()/2);
//4
CRect rcStatic_4(rcSize.left+rcSize.Width()/2, //x
rcSize.top + rcSize.Height()/2,
rcSize.left+rcSize.Width(), //x
rcSize.top + rcSize.Height());
m_static_1.Create("Video-1", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_1, this, IDC_TestStatic_1);
m_static_2.Create("Video-2", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_2, this, IDC_TestStatic_2);
m_static_3.Create("Video-3", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_3, this, IDC_TestStatic_3);
m_static_4.Create("Video-4", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_4, this, IDC_TestStatic_4);
}//单击Static_1
void CTestOCXCtrl::OnStatic1()
{
// AfxMessageBox("单击Static-1");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //1
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_2
void CTestOCXCtrl::OnStatic2()
{
// AfxMessageBox("单击Static-2");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //2
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_3
void CTestOCXCtrl::OnStatic3()
{
// AfxMessageBox("单击Static-3");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //3
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_4
void CTestOCXCtrl::OnStatic4()
{
// AfxMessageBox("单击Static-4");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //4
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}
//后面再单击都不起作用了。
//4个Static控件映射单击函数
ON_STN_DBLCLK(IDC_TestStatic_1, OnDoubleclickedButton1)
ON_STN_DBLCLK(IDC_TestStatic_2, OnDoubleclickedButton2)
ON_STN_DBLCLK(IDC_TestStatic_3, OnDoubleclickedButton3)
ON_STN_DBLCLK(IDC_TestStatic_4, OnDoubleclickedButton4)//创建Static控件
CTestOCXCtrl::CTestOCXCtrl()
{
InitializeIIDs(&IID_DTestOCX, &IID_DTestOCXEvents);
// TODO: Initialize your control's instance data here.
CRect rcSize;
GetClientRect(rcSize);
m_static_1.DestroyWindow();
m_static_2.DestroyWindow();
m_static_3.DestroyWindow();
m_static_4.DestroyWindow();
//1
CRect rcStatic_1(rcSize.left, //x
rcSize.top,
rcSize.left+(rcSize.Width()/2), //x
rcSize.top + (rcSize.Height() / 2));
//3
CRect rcStatic_3(rcSize.left, //x
rcSize.top + (rcSize.Height() / 2),
rcSize.left+(rcSize.Width()/2), //x
rcSize.top + (rcSize.Height()));
//2
CRect rcStatic_2(rcSize.left+rcSize.Width()/2, //x
rcSize.top ,
rcSize.left+ rcSize.Width(), //x
rcSize.top + rcSize.Height()/2);
//4
CRect rcStatic_4(rcSize.left+rcSize.Width()/2, //x
rcSize.top + rcSize.Height()/2,
rcSize.left+rcSize.Width(), //x
rcSize.top + rcSize.Height());
m_static_1.Create("Video-1", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_1, this, IDC_TestStatic_1);
m_static_2.Create("Video-2", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_2, this, IDC_TestStatic_2);
m_static_3.Create("Video-3", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_3, this, IDC_TestStatic_3);
m_static_4.Create("Video-4", WS_CHILD|WS_VISIBLE|SS_NOTIFY, rcStatic_4, this, IDC_TestStatic_4);
}//单击Static_1
void CTestOCXCtrl::OnStatic1()
{
// AfxMessageBox("单击Static-1");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //1
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_2
void CTestOCXCtrl::OnStatic2()
{
// AfxMessageBox("单击Static-2");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //2
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_3
void CTestOCXCtrl::OnStatic3()
{
// AfxMessageBox("单击Static-3");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //3
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}//单击Static_4
void CTestOCXCtrl::OnStatic4()
{
// AfxMessageBox("单击Static-4");
CStatic* pStatic = NULL;
LONG style = 0;
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_1);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_2);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_3);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_WHITEFRAME; //白色边框
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
pStatic = (CStatic*)GetDlgItem(IDC_TestStatic_4);
//style = GetWindowLong(pStatic->GetSafeHwnd(), GWL_STYLE);
style |= WS_CHILD;
style |= WS_VISIBLE;
style |= SS_NOTIFY;
style |= SS_BLACKFRAME; //4
SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);
m_static_1.Invalidate(TRUE);
m_static_2.Invalidate(TRUE);
m_static_3.Invalidate(TRUE);
m_static_4.Invalidate(TRUE);
this->Invalidate(TRUE);
}
OCX上绘4个Static控件,单击控件,修改边框颜色,好像就第一次管用,
后面再单击都不起作用了。想要实现的功能,单击Static_1,2,3,4中一个控件时,单击选中的控件边框显示黑色,
其他三个边框显示白色。
直接用SetWindowLong(pStatic->GetSafeHwnd(),GWL_STYLE, style);来设置边框颜色,
感觉就第一次有效果,后面就看不到效果了。