我想知道如何使用具有特定客户区大小的 Win32 API创建窗口.
当尝试使用以下代码创建窗口时,整个窗口为640x480,窗口的chrome占用了一些客户区域:
HWND hWnd;
WNDCLASSEX WndClsEx;
ZeroMemory(&WndClsEx, sizeof(WNDCLASSEX));
WndClsEx.cbSize = sizeof(WNDCLASSEX);
WndClsEx.style = CS_HREDRAW | CS_VREDRAW;
WndClsEx.lpfnWndProc = DefWindowProc;
WndClsEx.cbClsExtra = 0;
WndClsEx.cbWndExtra = 0;
WndClsEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
WndClsEx.hCursor = LoadCursor(NULL, IDC_ARROW);
WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
WndClsEx.lpszMenuName = NULL;
WndClsEx.lpszClassName = TEXT("Title");
WndClsEx.hInstance = hInstance;
WndClsEx.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
RegisterClassEx(&WndClsEx);
hWnd = CreateWindowEx( NULL,
TEXT("Title"),
TEXT("Title"),
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
640,
480,
NULL,
NULL,
hInstance,
NULL);
Run Code Online (Sandbox Code Playgroud)
假设简单的数学不能解决问题,我该如何考虑铬尺寸?
注意:我在创建窗口后使用SDL,但我猜它与窗口大小绑定并且与其大小没有区别.
在WPF窗口中,我如何知道它是否已打开?
我的目标是当时只打开一个窗口实例.
所以,父窗口中的伪代码是:
if (this.m_myWindow != null)
{
if (this.m_myWindow.ISOPENED) return;
}
this.m_myWindow = new MyWindow();
this.m_myWindow.Show();
Run Code Online (Sandbox Code Playgroud)
编辑:
我找到了解决我最初问题的解决方案.window.ShowDialog();
它阻止用户打开任何其他窗口,就像模式弹出窗口一样.使用此命令,无需检查窗口是否已打开.
我刚刚开始使用Visual Studio 2015 Community Edition在Windows 10 Pro上学习UWP应用程序开发.我尝试通过在MainPage.xaml中设置Page标签的Width和Height属性来修改官方"Hello,world"示例的C#版本.有趣的是,当我启动应用程序时,它的大小会有所不同.此外,如果我调整窗口大小然后重新启动它,应用程序似乎记住它以前的窗口大小.
是否可以强制UWP应用程序具有预定义的窗口大小,至少在桌面PC上?
我试图在用户点击按钮时打开一个新窗口,如下所示:
protected assignActity(type: string): void {
var window = window.open('/#/link');
this.Service.assignActivity(type).subscribe(res => {
window.location = '/#/link/' + res;
console.log(res);
})
}
Run Code Online (Sandbox Code Playgroud)
但是它引发了一个错误:
core.umd.js:3468 TypeError: Cannot read property 'open' of undefined
Run Code Online (Sandbox Code Playgroud)
如何纠正它让它工作?
=========================
更新:经过几天的谷歌搜索和实验,我找到了大多数这些愚蠢问题的答案.查看我提交的答案.
=========
Android Window的责任是什么?
以下是一些问题:
编辑:添加更多问题:
各种类的职责是什么,例如Window,View,Canvas,Surface以及它们如何相互协作?
通常一个Activity有多少个窗口?
3.一个活动中的所有视图都将附加到Window吗?附加是什么意思?
每个窗口都有表面?每个画布都有表面?
View负责focus/keyEvent/manager,而Cavus只负责"绘图"操作.
WindowManager负责Window堆叠?这与SurfaceFlinger有什么关系?
View不拥有Surface,视图包含的Window拥有?
使用canvas通过调用surface.lockCanvas()得到View.
何时调用onDraw(Canvas)?如何以及谁传递画布参数?
Canvas有尺寸吗?Window的表面总是全屏吗?
再次编辑:
看完Romain Guy http://www.youtube.com/watch?v=duefsFTJXzc&feature=feedwll&list=WL提供的精彩演示后,几个问题得到解决并添加了几个问题:)
我有一个页面显示消息,我希望它像Facebook一样工作,但没有懒惰的加载器.消息按时间顺序显示,最近一次显示.
我的消息列表最初填充了x个最新消息,窗口滚动到底部.当用户开始阅读该帖子时,他们会从下到上阅读.如果他们到达顶部,他们可以加载更多消息...我让他们点击一个按钮... facebook有一个懒惰的加载器.新消息将添加到列表中.
问题:由于新消息被添加,现有消息被推下,导致用户失去"查看"位置.在添加新消息时,如何保持用户当前的视图位置?例如,在Facebook中打开一个长消息线程,滚动到顶部导致添加新消息...即使滚动位置确实如此,您的视图位置也不会改变.
我知道以前似乎已经问过,但是我需要一个批处理在新窗口中打开另一个批处理.我试过了:
start abc.bat
cmd abc.bat
run abc.bat
Run Code Online (Sandbox Code Playgroud)
和别的.他们都在同一个窗口打开,或者只是在新窗口中打开命令提示符,忽略我的批处理.是否有批处理命令在新窗口中打开批处理文件?
当我试图通过window.close()Javascript 的方法关闭窗口时,我总是遇到问题,而浏览器在控制台上显示以下消息:
"Scripts may close only the windows that were opened by it."
Run Code Online (Sandbox Code Playgroud)
这发生在页面的每个部分.我可以直接使用链接,按钮或脚本运行此命令,但始终显示此消息.
我试图替换window.close();下面的函数(或其变体)的方法,但没有发生任何事情:
window.open('', '_self', '');
window.close();
Run Code Online (Sandbox Code Playgroud) 我需要以递归方式删除PowerShell中特定文件夹的所有空文件夹(任何级别的checing文件夹和子文件夹).
目前我使用这个脚本没有成功.
你能告诉我怎么解决吗?
$tdc='C:\a\c\d\'
$a = Get-ChildItem $tdc -recurse | Where-Object {$_.PSIsContainer -eq $True}
$a | Where-Object {$_.GetFiles().Count -eq 0} | Select-Object FullName
Run Code Online (Sandbox Code Playgroud)
我在Win 8.1上使用PowerShell
window ×10
c# ×2
android ×1
angular ×1
batch-file ×1
c++ ×1
command ×1
directfb ×1
frameworks ×1
javascript ×1
jquery ×1
list ×1
plot ×1
powershell ×1
prepend ×1
r ×1
scroll ×1
shortcut ×1
tabs ×1
typescript ×1
uwp ×1
view ×1
winapi ×1
windows-10 ×1
windows-8.1 ×1
wpf ×1