Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 极简主义可可应用程序未出现在dock中_C++_Objective C_Macos_Cocoa_Sdl - Fatal编程技术网

C++ 极简主义可可应用程序未出现在dock中

C++ 极简主义可可应用程序未出现在dock中,c++,objective-c,macos,cocoa,sdl,C++,Objective C,Macos,Cocoa,Sdl,作为更广泛项目的一部分,我正在为Cocoa应用程序实现自己的窗口管理。编译时,我使用的是“目标C++”标志,因为大部分代码库都是C++的。 我在main.cpp中添加了一些存根代码,以打开一个窗口,但窗口图标不在应用程序坞中,也不在窗口堆栈的前面 我的main.cpp中有这样一点: main.cpp TestAppDelegate*appDel=[TestAppDelegate alloc]; [NSApp setDelegate:appDel]; NSApplication*app=[NSAp

作为更广泛项目的一部分,我正在为Cocoa应用程序实现自己的窗口管理。编译时,我使用的是“目标C++”标志,因为大部分代码库都是C++的。 我在main.cpp中添加了一些存根代码,以打开一个窗口,但窗口图标不在应用程序坞中,也不在窗口堆栈的前面

我的main.cpp中有这样一点:

main.cpp

TestAppDelegate*appDel=[TestAppDelegate alloc];
[NSApp setDelegate:appDel];
NSApplication*app=[NSApplication sharedApplication];
app.delegate=appDel;
[应用程序运行];
返回NSApplicationMain(argc、argv);
我的AppDelegate对象如下所示

测试h

@接口TestAppDelegate:NSObject{
NSWindow*win;
}
@结束
test.cpp

#包括“test.h”
@实现TestAppDelegate
-(无效)ApplicationIDFinishLaunching:(NSNotification*)通知{
//在此处插入代码以初始化应用程序
NSRect rect;
矩形原点x=0;
矩形原点y=0;
rect.size.width=500;
rect.size.height=500;
无符号整数样式=(NSWindowsTyleMaskTitle | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable);
NSWindow*win=[[NSWindow alloc]initWithContentRect:rect样式掩码:样式备份:NSBackingStoreBuffered延迟:FALSE];
NSButton*butan=[NSButton Button,标题:@“SomeText”目标:无操作:无];
butan.frame=NSMakeRect(20,20,100,30);
butan.title=[nsstringwithutf8string:“Things”];
[win.contentView addSubview:buta];
[赢得MakeKeyandDerfront:零];
}
-(无效)申请将终止:(NSNotification*)通知{
//在此处插入代码以删除应用程序
}
-(BOOL)应用程序应在LastWindowClosed之后终止:(NSApplication*)发送方{
返回YES;
}
@结束
现在这是一堆无用的测试代码,但是窗口打开了,尽管它出现在Xcode编辑器后面。按钮对点击做出响应,窗口不会冻结,因为我可以自由移动它

我的问题是窗口似乎不“活动”。它不在dock中,我无法“command+tab+来访问它,当我单击它并使其聚焦时,左上角的按钮不会像其他应用程序一样亮起

我忘了什么


作为参考,我正在查看的源代码,我的项目主要使用它,除了这个小实验。如果我用SDL启动一个图形窗口,它使用Cocoa作为驱动程序。我将在dock上看到窗口,它将比我的小窗口更“活跃”。

由于您的程序不是捆绑应用程序,您需要配置它的“激活策略”以使其显示在Dock和Command选项卡切换器中:

[NSApp setActivationPolicy:NSApplicationActivationPolicyRegular];
您还需要在启动时激活它:

[NSApp activateIgnoringOtherApps:YES];

您的应用程序是捆绑的(即在.app目录等中)?还是独立的可执行文件?如果捆绑,请显示Info.plist文件。[澄清一下:在macOS上,windows不会出现在Dock中(除非最小化),应用程序会出现。]不,我的应用程序没有捆绑。如果我检查输出二进制文件,它会显示“Unix可执行文件”“。但这很有趣,因为如果我使用SDL运行我的应用程序和windows(而不手动创建NSWindow),我将得到一个停靠图标和一个响应更快的窗口。另外:如果我最小化我的NSWindow,我至少会在dock中得到一个最小化的窗口。成功了,谢谢!完美答案。如果你不介意我问的话,你从哪里找到这些信息的?这有文件记录吗?我很想更多地了解Cocoa应用程序的体系结构,但我还没有找到一个好的资源。我发现苹果的官方文档是。。。缺乏。我担心“哪里”会迷失在时间的迷雾中。我已经为Mac电脑编程很长时间了。此外,我通常依赖苹果的文档,而不是第三方书籍。苹果的文档质量下降了。一些更好的文档现在在“归档”中,不是因为它们是错误的或不完整的,而是因为它们是旧式的。例如,。我试着在文档档案中查找,但是里面有很多东西,我发现很难找到信息,除非你已经知道你要查找的关键字。不过我肯定会在那里多呆些时间,看起来很有趣。谢谢是 啊左侧边栏中有“入门”和“指南”,这对您有所帮助。