有时候,我们需要包装窗口的标题栏,同时又不想让窗口的非客户区全部由自己来控制刷新,比如边框,菜单。
从WM_NCPAINT中的参数wParam可以得到需要刷新的区域:
hrgn = (HRGN) wParam // handle of update region
因此,可以重载WndProc函数,对此区域中剔除标题栏所占的区域,代码如下:
case WM_NCPAINT:
{
HRGN hrgnSrc // handle to Src WindowDC update region
HRGN hRgnCaption // handle to Combine region
HRGN hRgnNew // handle to New WindowDC update region
hrgnSrc = (HRGN) Msg.WParam
TRect *winrect =new TRect()
GetWindowRect(ParentForm->Handle,winrect)
TRect rc
rc= TRect(winrect->left,winrect->top,winrect->right,winrect->top+ GetSystemMetrics(SM_CYCAPTION)+3)
hRgnCaption = CreateRectRgnIndirect(&rc)
hRgnNew = CreateRectRgnIndirect(&rc)
if ((WORD)hrgnSrc > 1 && !RectInRegion(hrgnSrc, &rc))
{
DeleteObject(hRgnNew )
DeleteObject(hRgnCaption)
DeleteObject(hrgnSrc)
delete winrect
break
}
if ((WORD)hrgnSrc>1)
{
CombineRgn(hRgnNew ,hrgnSrc,hRgnCaption,RGN_DIFF)
}
else
{
HRGN hRgnAll = ::CreateRectRgnIndirect(winrect)
CombineRgn(hRgnNew, hRgnAll, hRgnCaption, RGN_DIFF)
DeleteObject(hRgnAll)
}
Msg.Result = DefWindowProc( ParentForm->Handle, Msg.Msg,(int)hRgnNew, Msg.LParam)
DrawCaption()// custom draw caption
DeleteObject(hRgnNew )
DeleteObject(hRgnCaption)
DeleteObject(hrgnSrc)
delete winrect
return
}
1、C语言可以通过system函数实现调用系统命令(shell 命令)。
system函数声明于stdlib.h, 形式为
int system(const char *cmd)
功能为执行cmd中的shell指令。
2、在windows中,关机命令为shutdown. 具体说明如图:
更多信息,可以命令行下输入shutdown /?查看。
3、从命令说明上可以得知,shutdown /s 即可实现关机效果。
4、参考代码:
#include <stdlib.h>int main()
{
system("shutdown /s")//调用关机命令。
while(1)
}
5、注意事项:
该命令仅用于windows,如果要移植到其它 *** 作系统,则需要适配目标系统的关机命令,如Linux的halt或shutdown -h。
ctrl+W关闭当前窗口。也可以使用Alt+F4。
快捷键,又叫快速键或热键,指通过某些特定的按键、按键顺序或按键组合来完成一个 *** 作,很多快捷键往往与如Ctrl键、Shift键、Alt键、Fn键以及Windows平台下的Windows键和Mac机上的Meta键等配合使用。
快捷键使用注意:
整体移动物体要使用对象模式,会带着物质坐标一起动。若采用点或边模式,全选所有点和边移动可以移动物体,但不会移动坐标系。
找到如下路径Maya\Mayaxxxx\resources\l10n,会出现“zh_CN”或“en_US”的文件夹,里面的就是语言包,"zh_CN"改成"en_US",再次打开软件就是英文的,"en_US"就改成"zh_CN",再次打开软件就是中文的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)