2
我有一个NSWindow的实例,我通过编程方式调整大小(使用setFrame)。在创建时,它的默认大小为50x50。然后我调用setFrame将其大小调整为350x450:一切都很好,我可以拖动我的窗口。然后,在程序的后面,我将其大小调整为1024x768。在这一点上,我可以拖动的标题栏的唯一部分是前350个像素:左侧部分。如果我拖动正确的部分没有任何反应。就好像标题栏仍然认为窗口具有以前的大小。NSWindow标题栏不可拖动在其右半部分
更新(添加,设置框架的代码):
void CGLWindowMac::_setSize(int width, int height)
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSRect sFrame;
sFrame = [NSWindow contentRectForFrameRect:[mObjcImp frame] styleMask:[mObjcImp styleMask]];
sFrame.origin.y += sFrame.size.height;
sFrame.origin.y -= height;
sFrame.size.height = height;
sFrame.size.width = width;
sFrame = [NSWindow frameRectForContentRect:sFrame
styleMask:[mObjcImp styleMask]];
NSLog(@"Frame Before setsize: cur Size(%f, %f) ", [mObjcImp frame].size.width, [mObjcImp frame].size.height);
[mObjcImp setFrame:sFrame display:YES animate:NO];
NSLog(@"Frame After setsize: cur Size(%f, %f) new val(%d, %d)", [mObjcImp frame].size.width, [mObjcImp frame].size.height, width, height);
// Tell the application that the window size has change.
onSize(width, height);
[pool release];
}
这里是输出:
2011-05-04 08:50:47.313 ClientProMac[2461:a0f] Frame Before setsize: cur Size(50.000000, 72.000000)
2011-05-04 08:50:47.340 ClientProMac[2461:a0f] Frame After setsize: cur Size(350.000000, 472.000000) new val(350, 450)
2011-05-04 08:50:49.148 ClientProMac[2461:7003] Frame Before setsize: cur Size(350.000000, 472.000000)
2011-05-04 08:50:49.160 ClientProMac[2461:7003] Frame After setsize: cur Size(1024.000000, 790.000000) new val(1024, 768)
奇怪的是,如果我再通过拖动其角调整窗口的大小,完整的标题栏会再次拖动:错误消失。
以前有人看到过这种行为吗?是什么导致它,我该如何解决它。
谢谢。
你的屏幕尺寸是多少? – 2011-05-02 21:37:39
您应该包含调整窗口大小以及调用窗口的代码。也许这个窗口正在一个导致这个bug的地方重新调整大小。 – 2011-05-03 03:11:43
乔希:屏幕的大小似乎没有影响到这一点。我有双显示器(均为1280x1024)和单显示器(1280x1024和1024x768)的错误。 – jslap 2011-05-04 12:49:00