一、在VC++中如何响应static控件的单击消息?
使用了“notify”风格(即是控件的SS_NOTIFY风格)后,当你点击该控件时,其父窗口会收到下列消息:消息名为:
WM_COMMAND
消息的参数:
wParam: LOWORD(wParam)存放的是控件的ID,HIWORD(wParam)放的是STN_CLICKED(这是静态控件被 点击的标志)
lParam: 该控件的句柄。
代码为:
case WM_COMMAND:
{
if(HIWORD(wParam) == STN_CLICKED)
{
if(LOWORD(wParam) == 某个控件)
{
处理之.
}
}
}
二、VC动态创建的标签(CStatic)怎么改变颜色
第一,将CStatic关联一个新类继承自CStatic,第二,将此CStatic风格设置成Notify也就是响应消息
第三,Button是将消息发送给CStatic的,自己去处理去
三、我动态创建的CSTATIC控件,为什么不能设置显
方法一:本例只讲关于响应WM_MOUSEMOVE消息的处理,其它的消息以此类推.
可以通过在对话框的WM_MOUSEMOVE消息里检查是否鼠标移进Static控件,若是,就PostMessage()给Static控件.
void CDlgDlg::OnMouseMove(UINT nFlags, CPoint point)
{
LPRECT lpRect=new RECT;
m_Static.GetWindowRect(lpRect);
ScreenToClient(lpRect);
if(point.x
{
POINTS points;
::PostMessage(m_Static.m_hWnd,WM_MOUSEMOVE,NULL,(LPARAM)&points);
}
CDialog::OnMouseMove(nFlags, point);
}
方法二:
设置static控件的属性为notify
static控件就可以获取消息了
void CXXStatic::PreSubclassWindow()
{
// TODO: Add your specialized code here and/or call the base class
DWORD dwStyle = GetStyle();
::SetWindowLong(GetSafeHwnd(), GWL_STYLE, dwStyle | SS_NOTIFY);
CStatic::PreSubclassWindow();
}