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实现。 展开
相关代码如下:
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实现。 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询