如何使用CreateWindowEx()创建没有标题和边框的窗口?我为什么要用'|' OR运算符组合样式而不是'&'和
答案 0 :(得分:6)
int WINAPI WinMain(....)
{
MSG msg;
WNDCLASS wc={0};
wc.lpszClassName="MyClass";
wc.lpfnWndProc=DefWindowProc;//You MUST use your own wndproc here
wc.hInstance=hInstance;
wc.hbrBackground=(HBRUSH)(COLOR_3DFACE+1);
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
if (!RegisterClass(&wc)) {/*Handle Error*/}
HWND hwnd;
hwnd=CreateWindowEx(0,wc.lpszClassName,0,WS_POPUP|WS_VISIBLE|WS_SYSMENU,9,9,99,99,0,0,0,0);
if (!hwnd) {/*Handle Error*/}
while(GetMessage(&msg,0,0,0)>0)DispatchMessage(&msg);
return 0;
}
如果需要边框,可以添加WS_BORDER或WS_DLGFRAME(不是两者)。如果您不想在任务栏中显示该窗口,请添加WS_EX_TOOLWINDOW扩展样式。
至于为什么你需要按位OR样式; OR将组合所有样式值,使用AND(通过窗口)来检查设置的样式。 假设我们有两种样式(WS_FOO = 1,WS_BAR = 2):
有关详细信息,请参阅wikipedia。