vc2008的点点滴滴之窗体

/*
 QQ来信息时的闪烁效果

*/
 利用SetTimer(1,200,NULL)触发OnTimer;
 void CGuiTestDlg::OnTimer(UINT_PTR nIDEvent)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 FlashWindow(TRUE);
 //MessageBox(_T("kao!"));
 CDialog::OnTimer(nIDEvent);
}

 

/*
 让窗体没有标题栏

GetWindowLong

  函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。
  函数原型:LONG GetWindowLong(HWND hWnd,int nlndex);
  参数:
  hWnd:窗口句柄及间接给出的窗口所属的窗口类。
  nlndex:指定要检索的基于0的的偏移量。有效值的范围从0到窗口额外内存空间的字节数,最小为4。例如,若指定了12位或多于12位的窗体类的额外存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一:
  GWL_EXSTYLE;获得扩展窗口风格。
  GWL_STYLE:获得窗口风格。
  GWL_WNDPROC:获得窗口过程的地址,或代表窗口过程的地址的句柄。必须使用GWL_WNDPROC函数调用窗口过程。
  GWL_HINSTANCE:获得应用事例的句柄。
  GWL_HWNDPAAENT:如果父窗口存在,获得父窗口句柄。
  GWL_ID:获得窗口标识。
  GWL_USERDATA:获得与窗口有关的32位值。每一个窗口均有一个与这个窗口相关的给用户使用的32位的数据。具体用途自定义。
  在hWnd参数标识了一个对话框时也可用下列值:
  DWL_DLGPROC:获得对话框过程的地址,或一个代表对话框过程的地址的句柄。必须使用函数CallWindowProc来调用对话框过程。
  DWL_MSGRESULT:获得在对话框过程中一个消息处理的返回值。
  DWL_USER:获得应用程序私有的额外信息,例如一个句柄或指针。
  返回值:如果函数成功,返回值是所需的32位值;如果函数失败,返回值是0。若想获得更多错误信息请调用 GetLastError函数。

SetWindowLong

  函数功能:该函数改变指定窗口的 属性函数也将指定的一个32位值设置在窗口的额外存储空间的指定偏移位置。
  函数原型:LONG SetWindowLong(HWND hWnd,int nlndex,LONG dwNewLong);
  参数:
  hWnd:窗口句柄及间接给出的窗口所属的类。
  nlndex:指定将设定的大于等于0的偏移值。 有效值范围从0到额外类的存储空间的字节数-4:例如若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要设置其他任何值,可以指定下面值之一:
  GWL_EXSTYLE:设定一个新的扩展 风格。GWL_STYLE:设定一个新的窗口风格。
  GWL_WNDPROC:为窗口过程设定一个新的 地址。GWL_ID:设置一个新的窗口标识符。
  GWL_HINSTANCE:设置一个新的 应用程序事例句柄。
  GWL_USERDATA:设置与 窗口有关的32位值。每一个窗口均有一个由创建该窗口的应用程序使用的32位值。
  当hWnd参数标识了一个 对话框时,也可使用下列值:
  DWL_DLGPROC: 设置对话框过程的新地址。
  DWL_MSGRESULT:设置在对话框过程中处理的消息的返回值。
  DWL_USER:设置的应用程序私有的新的额外信息,例如一个句柄或指针。
  dwNewLong:指定的替换值。
  返回值:如果函数成功,返回值是指定的32位整数的原来的值。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。

SetWindowPos

  函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。
  函数原型:BOOL SetWindowPos(HWN hWnd,HWND hWndlnsertAfter,int X,int Y,int cx,int cy,UNIT.Flags);
  参数:
  hWnd:窗口句柄。
  hWndlnsertAfter:在z序中的位于被置位的窗口前的窗口句柄。该参数必须为一个窗口句柄,或下列值之一:
  HWND_BOTTOM:将窗口置于Z序的底部。如果参数hWnd标识了一个顶层窗口,则窗口失去顶级位置,并且被置在其他窗口的底部。
  HWND_NOTOPMOST:将窗口置于所有非顶层窗口之上(即在所有顶层窗口之后)。如果窗口已经是非顶层窗口则该标志不起作用。
  HWND_TOP:将窗口置于Z序的顶部。
  HWND_TOPMOST:将窗口置于所有非顶层窗口之上。即使窗口未被激活窗口也将保持顶级位置。
  查看该参数的使用方法,请看说明部分。
  x:以客户坐标指定窗口新位置的左边界。
  Y:以客户坐标指定窗口新位置的顶边界。
  cx:以像素指定窗口的新的宽度。
  cy:以像素指定窗口的新的高度。
  uFlags:窗口尺寸和定位的标志。该参数可以是下列值的组合:
  SWP_ASNCWINDOWPOS:如果调用进程不拥有窗口,系统会向拥有窗口的线程发出需求。这就防止调用线程在其他线程处理需求的时候发生死锁。
  SWP_DEFERERASE:防止产生WM_SYNCPAINT消息。
  SWP_DRAWFRAME:在窗口周围画一个边框(定义在窗口类描述中)。
  SWP_FRAMECHANGED:给窗口发送WM_NCCALCSIZE消息,即使窗口尺寸没有改变也会发送该消息。如果未指定这个标志,只有在改变了窗口尺寸时才发送WM_NCCALCSIZE。
  SWP_HIDEWINDOW;隐藏窗口。
  SWP_NOACTIVATE:不激活窗口。如果未设置标志,则窗口被激活,并被设置到其他最高级窗口或非最高级组的顶部(根据参数hWndlnsertAfter设置)。
  SWP_NOCOPYBITS:清除客户区的所有内容。如果未设置该标志,客户区的有效内容被保存并且在窗口尺寸更新和重定位后拷贝回客户区。
  SWP_NOMOVE:维持当前位置(忽略X和Y参数)。
  SWP_NOOWNERZORDER:不改变z序中的所有者窗口的位置。
  SWP_NOREDRAW:不重画改变的内容。如果设置了这个标志,则不发生任何重画动作。适用于客户区和非客户区(包括标题栏和滚动条)和任何由于窗回移动而露出的父窗口的所有部分。如果设置了这个标志,应用程序必须明确地使窗口无效并区重画窗口的任何部分和父窗口需要重画的部分。
  SWP_NOREPOSITION;与SWP_NOOWNERZORDER标志相同。
  SWP_NOSENDCHANGING:防止窗口接收WM_WINDOWPOSCHANGING消息。
  SWP_NOSIZE:维持当前尺寸(忽略cx和Cy参数)。
  SWP_NOZORDER:维持当前Z序(忽略hWndlnsertAfter参数)。
  SWP_SHOWWINDOW:显示窗口。
  返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。

*/

void CGuiTestDlg::OnBnClickedOk()
{
 // TODO: 在此添加控件通知处理程序代码
 LONG lStyle=::GetWindowLong(this->m_hWnd,GWL_STYLE);
 ::SetWindowLong(this->m_hWnd,GWL_STYLE,lStyle &~ WS_CAPTION);
 ::SetWindowPos(this->m_hWnd,NULL,0,0,0,0,SWP_NOSIZE|SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE|SWP_FRAMECHANGED);
 //OnOK();
}

/*

始终在最上面

*/

void CGuiTestDlg::OnBnClickedButton1()
{
 // TODO: 在此添加控件通知处理程序代码
 CRect Lrect;
 GetWindowRect(&Lrect);
 ::SetWindowPos(AfxGetMainWnd()->m_hWnd,HWND_TOPMOST,Lrect.left,Lrect.top,Lrect.Width(),Lrect.Height(),SWP_NOMOVE);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值