小编efo*_*nis的帖子

Win32 WM_SETCURSOR、WM_MOUSEMOVE 总是成对的?

我正在处理 Win32 控件。此控件上可能有数百个“项目”。这些不是窗口,而是内部对象(例如:矩形)。根据鼠标位置,我想更改鼠标光标。没关系,我可以使用 WM_SETCURSOR。

同时基于鼠标移动,我想显示一个状态栏,显示当前鼠标下对象的详细信息。为此,我可以使用 WM_MOUSEMOVE。

因为可能有数百个项目,移动所有项目在鼠标下找到一个,效率不高,尤其是两次(一次用于设置光标,一次用于鼠标移动)。

简而言之,您知道 WM_SETCURSOR 和 WM_MOUSEMOVE 是否总是成对的吗?在这种情况下,我可以在 WM_SETCURSOR 期间计算我想要的。另一种选择是在 WM_MOUSEMOVE 期间设置鼠标光标,但据我所知,这不是一个好的解决方案(会闪烁)。

谢谢

winapi controls

5
推荐指数
1
解决办法
5291
查看次数

如何将子控件放置在组框中?

当我启用通用控件视觉样式支持 (InitCommonControls()) 并且使用除 Windows 经典主题之外的任何主题时,组框中的按钮会显示带有方角的黑色边框。

Windows 经典主题显示正常,当我关闭视觉样式时也是如此。

我正在使用以下代码:

group_box = CreateWindow(TEXT("BUTTON"), TEXT("BS_GROUPBOX"), 
    WS_CHILD | WS_VISIBLE | BS_GROUPBOX | WS_GROUP,
    10, 10, 200, 300,
    hwnd, NULL, hInstance, 0);

push_button = CreateWindow(TEXT("BUTTON"), TEXT("BS_PUSHBUTTON"),
    WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
    40, 40, 100, 22,
    group_box, NULL, hInstance, 0);
Run Code Online (Sandbox Code Playgroud)

编辑:单选按钮也会出现此问题

编辑:我没有使用任何对话框/资源,仅使用 CreateWindow/Ex。

我正在 Visual C++ 2008 Express SP1 下使用通用清单文件进行编译

截图http://img.ispankcode.com/black_border_issue.png

c user-interface winapi

4
推荐指数
1
解决办法
8132
查看次数

Win32:计算多核/多处理器系统中的线程CPU利用率

我目前正在研究一个需要了解CPU利用率的MFC应用程序.它可能在不同的时间点有多个线程,但大部分工作是由主线程完成的.

我试图找到一种方法来计算这个主线程使用的CPU百分比.但是,我遇到了一些问题,如何在多CPU /多核环境中实现这一目标.问题是大多数系统调用似乎提供系统信息,而我需要特定于我的主线程正在执行的处理器的信息.

我看过WMI,但这对任务来说似乎太过分了.GetThreadTimes()能否满足我的需求?

cpu winapi multicore

4
推荐指数
1
解决办法
3512
查看次数

WS_VSCROLL,CreateWindow样式有效,SetWindowLong不行

当我做

wnd = CreateWindow("EDIT", 0,
    WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE | 
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN,
    x, y, w, h,
    parentWnd,
    NULL, NULL, NULL);
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是如果我删除WS_VSCROLL和WS_HSCROLL然后执行以下操作,我不会得到它们因此有不正确的窗口.为什么?如果WS_VSCROLL和WS_HSCROLL都缺失,我不仅会得到一个不正确的窗口,而且它也无法使用

style = WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_HSCROLL | ES_MULTILINE |
    ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN;
SetWindowLong(wnd, GWL_STYLE, style);
Run Code Online (Sandbox Code Playgroud)

winapi controls styles scrollbar

4
推荐指数
1
解决办法
4552
查看次数

Python - 装饰器 - 试图访问方法的父类

这不起作用:

def register_method(name=None):
    def decorator(method):
        # The next line assumes the decorated method is bound (which of course it isn't at this point)
        cls = method.im_class
        cls.my_attr = 'FOO BAR'
        def wrapper(*args, **kwargs):
            method(*args, **kwargs)
        return wrapper
    return decorator
Run Code Online (Sandbox Code Playgroud)

装饰者就像电影Inception; 你去的级别越多,它们就越混乱.我正在尝试访问定义方法的类(在定义时),以便我可以设置类的属性(或更改属性).

版本2也不起作用:

def register_method(name=None):
    def decorator(method):
        # The next line assumes the decorated method is bound (of course it isn't bound at this point).
        cls = method.__class__  # I don't really understand this.
        cls.my_attr = 'FOO BAR'
        def wrapper(*args, **kwargs): …
Run Code Online (Sandbox Code Playgroud)

python decorator

4
推荐指数
1
解决办法
1939
查看次数

来自Python服务的警报弹出窗口

我一直在使用win32api.MessageBox来做警报,这适用于从交互式提示和正常执行的代码运行的应用程序,但是当我在触发MessageBox时构建Python服务时,我可以听到'嘟嘟声'但是框没有显示.是否可以显示来自服务的警报?

python service winapi alerts

3
推荐指数
1
解决办法
787
查看次数

如何实时处理麦克风输入?

我开始为我的想法创建一个概念证明,在这一点上,我需要一些关于如何开始的指导.

我需要对麦克风输入进行采样,并实时处理该信号(想想Auto-Tune,但是现场工作),而不是"录音"一段时间.

我正在做的是"一种""MIDI转换器的麦克风输入",所以它需要非常快速地响应.

我在线调查了一下,显然要走的路是DirectSound或WaveIn*API函数.现在,根据我读到的内容,WaveIn API将让我填充一定大小的缓冲区,这对于录制和后期处理来说很好,但我想知道......我该如何进行实时处理?

我是否使用10ms缓冲区并自己保留一个50ms或100ms的圆形阵列,并且我得到一个每10ms触发一次分析的功能?(可以访问最新的100毫秒输入,其中只有10毫秒是新的)

我在这里错过了什么吗?

另外,DirectSound是如何完成的?它是否比常规的Win32 API提供了任何改进的功能?

audio winapi signal-processing microphone directsound

3
推荐指数
1
解决办法
1万
查看次数

如何使用C更改Windows中文件的上次修改日期?

是否有可以更改Windows中文件或目录的上次修改日期的C函数调用?

windows winapi file

1
推荐指数
1
解决办法
1950
查看次数

如果在python中替换elif块

事实证明,这个条件块在我的代码中不断重复.还有其他方法让我的生活更轻松吗?当然,对于一个条件要执行的身体是不同的.

if self.datatype == "string":
    t = "z"
elif self.datatype == "double":
    t = "d"
elif self.datatype == "number":
    t = "i"
elif self.datatype == "blob":
    t = "z"
else:
    raise EntParEx("Unknown datatype" + self.datatype)
Run Code Online (Sandbox Code Playgroud)

......更多代码使用相同的条件

def emit_cpp_def(self):
    s = ""
    e = ""
    if self.datatype == "string":
        s += "static const int " + self.lenvar + " = " + self.length + ";"
        s += "\nchar"
        e += "[" + self.lenvar + " + 2" + "]"
    elif self.datatype …
Run Code Online (Sandbox Code Playgroud)

python conditional

1
推荐指数
1
解决办法
2450
查看次数