求助!关于用API创建无边框窗口的问题
以下是我的代码:
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,NULL);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WndProc;
wndcls.lpszClassName="XPoptimize";
wndcls.lpszMenuName=NULL;
wndcls.style=NULL;
RegisterClass(&wndcls);
RECT WndRect;
WndRect.left=0;WndRect.top=0;
WndRect.right=650;WndRect.bottom=500;
AdjustWindowRectEx(&WndRect,0,false,NULL);
HWND hwnd=CreateWindow("XPoptimize",NULL,0,0,0,WndRect.right-WndRect.left,WndRect.bottom-WndRect.top,NULL,NULL,hInstance,NULL);
SetWindowLong(hwnd,GWL_STYLE,WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUP);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(NULL);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
这样是可以创建出一个无边框窗口来,可是效果不稳定,当我调用SetWindowPos改变它的位置时,边框就会显出边框来.
右建单击它在任务栏里的托盘边框也会显出来。
该怎样解决?
或有更好的方法创建无边框窗口吗?
求高手回答!
#include <windows.h>
#include <stdio.h>
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
WNDCLASS wndcls;
wndcls.cbClsExtra=0;
wndcls.cbWndExtra=0;
wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);
wndcls.hCursor=LoadCursor(NULL,IDC_ARROW);
wndcls.hIcon=LoadIcon(NULL,NULL);
wndcls.hInstance=hInstance;
wndcls.lpfnWndProc=WndProc;
wndcls.lpszClassName="XPoptimize";
wndcls.lpszMenuName=NULL;
wndcls.style=NULL;
RegisterClass(&wndcls);
RECT WndRect;
WndRect.left=0;WndRect.top=0;
WndRect.right=650;WndRect.bottom=500;
AdjustWindowRectEx(&WndRect,0,false,NULL);
HWND hwnd=CreateWindow("XPoptimize",NULL,0,0,0,WndRect.right-WndRect.left,WndRect.bottom-WndRect.top,NULL,NULL,hInstance,NULL);
SetWindowLong(hwnd,GWL_STYLE,WS_CLIPCHILDREN|WS_CLIPSIBLINGS|WS_POPUP);
ShowWindow(hwnd,SW_SHOWNORMAL);
UpdateWindow(hwnd);
MSG msg;
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
switch(uMsg)
{
case WM_DESTROY:
PostQuitMessage(NULL);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
return 0;
}
这样是可以创建出一个无边框窗口来,可是效果不稳定,当我调用SetWindowPos改变它的位置时,边框就会显出边框来.
右建单击它在任务栏里的托盘边框也会显出来。
该怎样解决?
或有更好的方法创建无边框窗口吗?
求高手回答!
...全文
相关推荐
Qt 实现无边框窗口,支持缩放窗口大小
Qt 实现无边框窗口,可以自由缩放窗口尺寸,QT5.8+MinGW编译通过,运行效果见博客分类“Qt实用技术”中关于无边框窗口的实现文章。
创建可拖动及伸缩的Qt无边框窗口
在图形用户界面设计中,无边框窗口是一种常见且实用的设计元素。它能够让界面更加简洁,专注于展示内容,而不被装饰性的框架所干扰。在Qt框架中,无边框窗口的创建及其特性是一系列深入探索GUI编程的起点。在Qt框架中,鼠标事件是GUI编程中不可或缺的一部分,它允许程序响应用户的鼠标操作。Qt中的鼠标事件主要包括以下几种类型::当鼠标按钮被按下时触发。:当鼠标按钮被释放时触发。:当鼠标在窗口中移动时触发。:当鼠标双击时触发。:当鼠标进入控件区域时触发。
python tk使用win32 api解决窗口无边框保留任务栏问题
python tkinter中自带一个取消边框方法overrideredirect(),但是这样有一个很大的问题:窗口无法保留任务栏。我在上网查找后发现网商的解决方法是再创建一个透明窗口作为任务栏图标,然后绑定事件,但这样有一些问题(如任务栏缩略图问题),于是我把目光放到了win32 api上。
无标题栏无边框窗口最简单的实现
无标题栏无边框窗口最简单的实现
QT无边框窗口,无边框弹出框,无边框MessageBox
QT无边框窗口,无边框弹出框,无边框MessageBox


