VC++去掉标题栏的问题

如题,我已经会在MFC下去掉应用程序的标题栏,现在想让最基本的VC++程序中去掉标题栏。相关代码如下:BOOLInitInstance(HINSTANCEhInstanc... 如题,我已经会在MFC下去掉应用程序的标题栏,现在想让最基本的VC++程序中去掉标题栏。
相关代码如下:
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;

hInst = hInstance; // 将实例句柄存储在全局变量中

hWnd = CreateWindow(szWindowClass, szTitle,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
long MyStyle = GetWindowLong(hWnd, GWL_STYLE);//这三句是自己加的
MyStyle &= (~WS_CAPTION); //这三句是自己加的
SetWindowLong(hWnd, GWL_STYLE, MyStyle); //这三句是自己加的
if (!hWnd)
{
return FALSE;
}

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);

return TRUE;
}
----------------------------------------------------------------------------------------------------------------------------------
其中这三句是自己加的,不起作用。
long MyStyle = GetWindowLong(hWnd, GWL_STYLE);
MyStyle &= (~WS_CAPTION);
SetWindowLong(hWnd, GWL_STYLE, MyStyle);
但是将第二句改为MyStyle &= (!WS_CAPTION); 后就起作用了,请问怎么回事。
对style变量进行操作不是应该用按位取反符号~吗?
这是我在网上找的相关解释。

窗口的style变量
在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一种特性。当该变量的某位为1时,表示有该位对应的那种特性,当该位为0时,即没有该位所对应的特性。当变量中的某几位同时为1时,就表示同时具有几种特性的组合。一个变量中的哪一位代表哪种意义,不容易记忆,所以我们经常根据特征的英文拼写的大写去定义一些宏,该宏所对应的数值中仅有与该特征相对应的那一位(bit)为1,其余的bit都为0。
例如如果我们希望某一变量的数值既有CS_VREDRAW特性,又有CS_HREDRAW特性,我们只需使用二进制OR(|)操作符将他们进行或运算相组合,如style=CS_VREDRAW | CS_HREDRAW | CS_NOCLOSE。如果我们希望在某一变量原有的几个特征上去掉其中一个特征,用取反(~)之后再进行与(&)运算,就能够实现,如在刚才的style的基础上去掉CS_NOCLOSE特征,可以用style & ~CS_NOCLOSE实现。
展开
 我来答
intehel
2014-02-12 · TA获得超过1292个赞
知道大有可为答主
回答量:1601
采纳率:100%
帮助的人:1745万
展开全部
改成!肯定也不行的,你应该是出现错觉了。

在SetWindowLong下面加上如下代码即可完美解决问题:
SetWindowPos(hWnd,NULL,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOZORDER|SWP_FRAMECHANGED);
更多追问追答
追问
行的,不信你试试
能给我说下你那行代码的意思吗?为什么还要加这行代码?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式