我有一些代码将窗口定位到屏幕象限.它适用于Windows XP,7和8/8.1.但是,在Windows 10上,窗口之间存在奇怪的差距.四面环绕窗户的额外空间.我认为它与窗口边界有关,但无法弄清楚如何纠正问题.任何意见都将受到高度赞赏.代码如下:
// Get monitor info
HMONITOR hm = MonitorFromWindow(hWnd, MONITOR_DEFAULTTONEAREST);
MONITORINFO mi;
mi.cbSize = sizeof(mi);
GetMonitorInfo(hm, &mi);
// Set screen coordinates and dimensions of monitor's work area
DWORD x = mi.rcWork.left;
DWORD y = mi.rcWork.top;
DWORD w = mi.rcWork.right - x;
DWORD h = mi.rcWork.bottom - y;
switch (corner) {
case 0: // Left top
SetWindowPos(hWnd, HWND_TOP, x, y, w / 2, h / 2, SWP_NOZORDER);
break;
case 1: // Right top
SetWindowPos(hWnd, HWND_TOP, x + w / …
Run Code Online (Sandbox Code Playgroud) 我有一个程序,在注册表中存储一些用户选项(约5个选项).选项是从内联函数中的注册表中获取的.在运行时需要多次检查选项.更具体地说,在一个例程中检查选项可以在一个例程中向上调用100次.
我的问题是哪个更有效:1)每次需要检查选项时,调用内联函数从注册表中获取选项; 或者2)调用内联函数一次,然后将结果存储在静态变量中,然后将其用于检查选项.
请注意,我不关心在运行时更改选项,因为它们很少更改,并且在下一次运行程序之前无需生效.
任何反馈都将受到高度赞赏.
我正在尝试实现一种简单安全的方法来修剪前后两个空格的char数组。它可以删除开头的空格,但不适用于另一侧。谁能看到我在做什么错?这是我的代码:
template<size_t charCount>
void strtrim_safe( char (&output)[charCount] ) {
char *ptr = output;
size_t n = charCount;
size_t start = 0;
size_t end = 0;
// Find the start and end position of trimmed string
while ( n-- != 0 && *ptr != 0 ) {
if ( *ptr == 32 ) {
if ( end == 0 ) {
start++;
} else {
break;
}
} else {
end++;
}
ptr++;
}
// Shift the char array
for ( …
Run Code Online (Sandbox Code Playgroud)