2010-05-04 18 views
6

Làm thế nào tôi có thể lập trình buộc cửa sổ mac là cửa sổ trước? Tôi có tay cầm cửa sổ và muốn đảm bảo rằng cửa sổ của tôi được hiển thị phía trên tất cả các cửa sổ khác. Tôi có thể sử dụng cả Carbon & Ca cao cho việc này.Làm thế nào để buộc cửa sổ Mac lên nền trước?

+0

Bạn đang nói về một cửa sổ trong chương trình của riêng mình? Hay bạn muốn đối phó với các cửa sổ ứng dụng khác? – Yuji

+2

Raymond Chen đã viết về vấn đề này rất nhiều, khi anh ta hỏi câu hỏi quan trọng: "Nếu hai chương trình làm điều này thì sao?" Khi bạn nhận ra điều đó, bạn sẽ hiểu rằng không bao giờ có thể _force_ điều này, chỉ _request_ điều này. – MSalters

Trả lời

12

Đối với Cocoa, bạn có thể thiết lập mức độ cửa sổ sử dụng:

[window setLevel:NSFloatingWindowLevel]; 

Một cửa sổ nổi sẽ hiển thị trên tất cả các cửa sổ thường xuyên khác, ngay cả khi ứng dụng của bạn không hoạt động.

Nếu bạn muốn làm cho ứng dụng của bạn hoạt động, bạn có thể sử dụng:

[NSApp activateIgnoringOtherApps:YES]; 

[window makeKeyAndOrderFront:nil]; 
0

Nếu bạn (32 bit) có thể sử dụng kOverlayWindowClass:

WindowRef carbon_window = NULL; 
CreateNewWindow(kOverlayWindowClass , ... , &carbon_window); 
// if you need cocoa: 
NSWindow *cocoa_window = [[NSWindow alloc] initWithWindowRef:carbon_window]; 

Nếu không, hãy tạo một NSWindow và đặt mức cửa sổ là kCGOverlayWindowLevel.

Lưu ý rằng điều này cũng sẽ ở trên trang tổng quan. Nếu bạn muốn dưới mức sử dụng dấu gạch ngang, hãy sử dụng kCGUtilityWindowLevel.

Các vấn đề liên quan