标签: nativewindow

原生窗口:关闭时释放句柄

我目前正在为Microsoft Outlook开发C#.NET加载项. 加载项的目标是从Outlook即时搜索中捕获搜索输入,并在自定义窗格中显示我自己的搜索结果.

它运行得很好,并且通过使用本机窗口将Outlook窗口子类化,我得到了搜索字符串,它已经将它传递到我的面板中.

现在的问题是,当您关闭加载项时(通过" 文件 - >选项 - >加载项 - > COM加载项 ",而不是窗格中的X),加载项立即终止我不能searchboxWindow.ReleaseHandle()事先打电话 来恢复我的WndProc链.Outlook只是崩溃而没有任何明显的错误.

protected override void WndProc(ref Message m)
{
    base.WndProc(ref m);

    switch ((uint)m.Msg)
    {
        case WindowMessages.WM_DESTROY:
        case WindowMessages.WM_QUIT:
        case WindowMessages.WM_NCDESTROY:
            this.ReleaseHandle();
            return;

        case WindowMessages.WM_KEYUP:
        case WindowMessages.WM_LBUTTONDOWN:
        case WindowMessages.WM_RBUTTONDOWN:
            OnKeyUp();
            break;

        case WindowMessages.WM_EXITSIZEMOVE:
            OnResize();
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试收听一些应该在加载项关闭时调用的窗口消息,但这些消息仅在我以正常方式关闭Outlook时出现.

此外,主外接源文件中的事件,如AppDomain.CurrentDomain.ProcessExit,this.Shutdown((Outlook.ApplicationEvents_10_Event)this.Application).Quit不会被调用.

当加载项终止时,我可以听到什么事件(可靠地)被触发?有一些吗?如果没有,我有什么替代方案来解决我的问题?

c# outlook wndproc outlook-addin nativewindow

7
推荐指数
1
解决办法
490
查看次数

如何在Android NDK中创建新的NativeWindow?

我尝试了test-libstdc ++演示,并且喜欢我可以从控制台启动它,并且无需运行完整的Android应用程序.

我想创建一个opengl上下文,这样我就可以在控制台内执行我的opengl es 2.0应用程序,而不会有太多麻烦.

任何想法如何从不使用本机活动或任何东西的NDK应用程序中初始化EGL,即它甚至不打包在.APKK文件中,只是将main方法打包为可执行的linux文件.

非常感谢!

UPDATE

ANativeWindow_acquire在*android/native_window.h`中有任何机会吗?

谢谢!

android opengl-es android-ndk nativewindow

6
推荐指数
1
解决办法
9554
查看次数

SurfaceView和ANativeWindow

我有一个关于创建SurfaceView并随后从中获取ANativeWindow的问题.

  1. 这样做是否合适

    mSurfaceView = new SurfaceView(this);:

    • onCreate()
    • onStart()

问的理由:据我所知,当我们失去焦点时,SurfaceView会被破坏(其他东西会掩盖整个屏幕),所以每当我们获得焦点时我们都需要重新创建它(onStart()被执行).或者SurfaceView是否保持休眠状态并可重复使用?

  1. 继续,现在我想从上面提到的表面(在本机代码中)创建一个本机窗口.这样做是否合适

    ANativeWindow* newwindow = ANativeWindow_fromSurface(jniEnv, joSurface):

    • onSurfaceCreated_native(..., jobject surface)
    • onSurfaceChanged_native(..., jobject surface)

询问的原因:onSurfaceChanged似乎总是被调用,onSurfaceCreated因此我们可以选择何时创建本机窗口.一方面,这样做似乎合乎逻辑onSurfaceCreated,但两者jobject surface似乎引用了不同的对象!(通过在onSurfaceCreated中创建一个弱的全局引用以及在onSurfaceChanged中对NULL和surface进行检查来检查,请参阅下面的代码)

onSurfaceCreated_native(JNIEnv env, ... ,jobject surface) {
myWeakObjectGlobal = env->NewWeakGlobalRef(surface);
}

onSurfaceChanged_native(JNIEnv env, ... ,jobject surface) {

if (env->IsSameObject(surface, myWeakObjectGlobal)) {
    LOGW("onSurfaceChanged_native: new surface is SAME as old surface");
} else {
    LOGW("onSurfaceChanged_native: new surface is DIFFERENT as old surface");
}

if (env->IsSameObject(NULL, myWeakObjectGlobal)) {
    LOGW("    furthermore, old surface is …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android surfaceview nativewindow

6
推荐指数
1
解决办法
6869
查看次数

使用NativeWindow显示任务栏项

我的应用程序旨在几乎完全通过Windows 7任务栏项目使用缩略图和跳转列表.我知道我可以很容易地创建一个Form并简单地隐藏它,但这看起来有点矫枉过正.另外,我想NativeWindow尽可能多地玩弄,因为我之前从未使用它.

从本质上讲,我有一个被称为RootWindow派生的类NativeWindow,它将处理热键,希望其他一切.我根本不需要一个可见的窗口,只是处理窗口消息并提供一个任务栏项目,我可以附加缩略图和跳转列表.

CreateParams我需要传递一些特殊选项CreateHandle吗?还是我运气不好?

编辑:嗯,它比我想象的要容易,虽然它不是我想要的.一旦我NativeWindowShowWindowAPI 的句柄传递给API,就会出现任务栏项.但是,它还会在屏幕的左上角显示一个窗口.有没有办法摆脱那个窗口,同时仍然显示任务栏项目?

public class RootWindow : NativeWindow {
    public const int SW_SHOWNOACTIVATE = 4;

    [DllImport("User32.dll")]
    private static extern int ShowWindow(IntPtr hWnd, short cmdShow);

    public RootWindow() {
            CreateHandle(new CreateParams());
            ShowWindow(this.Handle, SW_SHOWNOACTIVATE);
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# taskbar windows-7 nativewindow

5
推荐指数
1
解决办法
998
查看次数

AIR - 将NativeWindow的大小设置为包括系统镶边

你如何找出系统chrome的大小,以便我可以指定窗口大小来达到我想要的舞台大小?

如果我的主窗口设置为800 x 600(阶段),并且我创建了如下的第二个窗口,它将更小.

public function Main():void 
{
    var windowOptions:NativeWindowInitOptions = new NativeWindowInitOptions();
    windowOptions.systemChrome = NativeWindowSystemChrome.STANDARD;
    windowOptions.type = NativeWindowType.NORMAL;
    var newWindow:NativeWindow = new NativeWindow( windowOptions );
    newWindow.width = 800;
    newWindow.height = 600;
    newWindow.stage.scaleMode = StageScaleMode.NO_SCALE;
    newWindow.stage.align = StageAlign.TOP_LEFT;
    newWindow.activate();

}
Run Code Online (Sandbox Code Playgroud)

我假设你增加两者newWindow.width = 800;newWindow.height = 600;考虑到铬,但你如何找到这个值?

air stage actionscript-3 nativewindow

5
推荐指数
1
解决办法
3684
查看次数

AS3 AIR - NativeWindow弹出框

在我的AIR应用程序中,当用户创建一个新项目时,我想要一个弹出框出现在他们可以输入项目名称的位置.我理解这是如何通过制作我自己的弹出框类型,但是在那里使用NativeWindows做到这一点的方法?也就是说,我可以使用包含文本字段和按钮的系统镶边来制作窗口吗?

我在FlashDevelop中使用Flex 4和AIR 2.7.

air flash actionscript-3 nativewindow

0
推荐指数
1
解决办法
4906
查看次数