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