Win32 API为窗口创建提供了许多样式,我正在寻找一种样式,可以从我使用此代码创建的窗口中删除一个像素的边框:
DWORD dwExtStyle = 0;
DWORD dwStyle = WS_POPUPWINDOW;
m_hWnd = CreateWindowEx(
dwExtStyle,
className,
windowName,
dwStyle,
300,
300,
100,
100,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(m_hWnd, SW_SHOW);
Run Code Online (Sandbox Code Playgroud)
我得到了结果:

标志的组合可以从窗口中删除黑色边框.
就像EnumChildWindowsAPI一样,想知道是否可能相反......即,如果有一种技术或API来枚举子窗口的所有父窗口,并最终到达主应用程序窗口.
我的问题是我有多个不同的应用程序具有相同的子窗口(可通过窗口类和标题识别).我想一次检测哪个特定于应用程序的子窗口处于活动状态,或者两者是否处于活动状态是否可以与任何一个一起使用?
例如,我有两个运行的应用程序,名为"XYZ"和"ABC",两个都有一个具有相同注册的子窗口/对话框.类和标题说 - "配置".现在我想从"XYZ"应用程序中获取"配置"对话框的窗口详细信息?
希望我能够正确地呈现问题详情.
谢谢,
我正在创建Windows上下文菜单的模仿.
显示对话框执行以下操作:
CreateDialogIndirectParam运行消息循环:
while ( ContinueModal() && GetMessage(&msg, NULL, 0, 0) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
Run Code Online (Sandbox Code Playgroud)我在新窗口中寻找丢失焦点事件的对话框,我将ContinueModel标志设置为false并调用EndDialog/ DestroyWindow.
EndDialog不会杀死我的对话框DestroyWindow.这没关系,任何人都可以解释原因吗?谢谢!D.
我用该CreateWindowEx()函数创建了一个列表视图控件.我在创建期间指定的扩展样式不适用于列表视图控件.
这是我的代码:
INITCOMMONCONTROLSEX iccx;
iccx.dwSize = sizeof(INITCOMMONCONTROLSEX);
iccx.dwICC = ICC_LISTVIEW_CLASSES;
InitCommonControlsEx(&iccx);
hWnd = CreateWindowExW( LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES, // Extended Styles
WC_LISTVIEWW, // Class Name
L"", // Title
LVS_REPORT | WS_VISIBLE | WS_CHILD, // Styles
10, // x
320, // y
480, // w
200, // h
hWndParent,
NULL,
hInstance,
NULL);
Run Code Online (Sandbox Code Playgroud)
向其添加一些内容后,列表视图的外观如下图所示.

如您所见,我既不能选择完整行,也不会显示网格线.
我错过了什么?如何使扩展样式显示效果?
我是win32和C++的新手,我刚刚开始学习在线教程并编写了这段代码:
#include <windows.h>
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(NULL, (LPCWSTR) "Yes, I remember Adlestrop", (LPCWSTR) "A minimal windows program", MB_OK);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是当编译并运行代码时,在消息框中文本是中文...我知道如果我不提及正确的类型,输出可能是二进制或ASCCI或十六进制....但第一次它原来是中国人..谁能告诉我我做错了什么??
我正在开发一个使用自绘标题栏的应用程序,它需要模仿系统默认标题栏.
那么如何才能获得Windows中超载窗口的默认标题栏高度?
我有一个列表框,其中有多个列表项.我希望实现类似于单击列表项的内容,它将折叠并显示所单击项的摘要:
我已经在网上搜索了很长一段时间,但没有得到任何好的解决方案.我是Win32的新手.有关如何处理此问题的任何建议,我应该使用哪种控件.任何帮助将不胜感激.
我使用下面的代码打开osk.exe
HINSTANCE Dlg::ExecuteOSK()
{
typedef BOOL (WINAPI * LPFN_IsWow64Process)(HANDLE, PBOOL);
typedef BOOL (WINAPI * LPFN_Wow64DisableWow64FsRedirection)(PVOID *);
typedef BOOL (WINAPI * LPFN_Wow64RevertWow64FsRedirection)(PVOID);
LPFN_IsWow64Process fnIsWow64Process = NULL;
LPFN_Wow64DisableWow64FsRedirection fnWow64DisableWow64FsRedirection = NULL;
LPFN_Wow64RevertWow64FsRedirection fnWow64RevertWow64FsRedirection = NULL;
fnIsWow64Process = (LPFN_IsWow64Process) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "IsWow64Process");
fnWow64DisableWow64FsRedirection = (LPFN_Wow64DisableWow64FsRedirection) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "Wow64DisableWow64FsRedirection");
fnWow64RevertWow64FsRedirection = (LPFN_Wow64RevertWow64FsRedirection) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "Wow64RevertWow64FsRedirection");
BOOL bIsWow64 = FALSE;
PVOID OldValue = NULL;
HINSTANCE handle;
if (NULL == fnIsWow64Process || NULL == fnWow64DisableWow64FsRedirection || NULL == fnWow64RevertWow64FsRedirection)
{
handle = ::ShellExecute(NULL, "open", "OSK", NULL, NULL, SW_SHOW);
} …Run Code Online (Sandbox Code Playgroud) 我希望能够检测是否存在专门命名的窗口(在任何进程中)以用作“if”变量
经过一番研究,我得出的结论是我必须使用该win32gui库(有些帖子也建议ctypes),但我发现的大多数帖子都是关于制作流程列表的,唯一与该主题相关的帖子没有回答正确提问。也许我太新手无法理解它,但最后我无法让它工作(问题是这个)
为了举例说明我想要的,我将分享一个简单的.vbs代码来实现这一点:它搜索特定的名称(在我们的例子中是 steve jobs),如果它在任何地方找到它,它就会触发(在这个示例中,它会关闭所述进程)
do
WindowTitle = "steve jobs"
set shell = createObject("wscript.shell")
success = shell.appactivate(WindowTitle)
if success then shell.sendkeys "%{F4}"
loop
Run Code Online (Sandbox Code Playgroud) 我想在程序运行时更改光标图像(屏幕上的任何位置)。
我尝试使用 win32gui 加载图像,然后使用 win32api 更改光标图像,但是出了问题,我的光标没有显示 我的光标图像是 map.cur
import win32api
import time
import win32gui
import win32con
x = win32gui.LoadImage(0,'map.cur',win32con.IMAGE_CURSOR,0,0,win32con.LR_LOADFROMFILE)
win32api.SetCursor(x)
time.sleep(5)
Run Code Online (Sandbox Code Playgroud)