zoukankan      html  css  js  c++  java
  • Qt based Application Extension

       Home

    Qt based Application Extension

    This examples shows how to use the QWinWidget and QMfcApp classes to implement a Qt based user interface in a plugin DLL.

    The plugin implements and exports a C function showDialog that can be called by any Windows application to display a modal Qt dialog. Before a Qt based user interface can be created a QApplication object must exist, and the calling application's event loop and the Qt event loop must run together.

     /****************************************************************************
     **
     ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
     ** All rights reserved.
     ** Contact: Nokia Corporation (qt-info@nokia.com)
     **
     ** This file is part of a Qt Solutions component.
     **
     ** Commercial Usage
     ** Licensees holding valid Qt Commercial licenses may use this file in
     ** accordance with the Qt Solutions Commercial License Agreement provided
     ** with the Software or, alternatively, in accordance with the terms
     ** contained in a written agreement between you and Nokia.
     **
     ** GNU Lesser General Public License Usage
     ** Alternatively, this file may be used under the terms of the GNU Lesser
     ** General Public License version 2.1 as published by the Free Software
     ** Foundation and appearing in the file LICENSE.LGPL included in the
     ** packaging of this file.  Please review the following information to
     ** ensure the GNU Lesser General Public License version 2.1 requirements
     ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
     **
     ** In addition, as a special exception, Nokia gives you certain
     ** additional rights. These rights are described in the Nokia Qt LGPL
     ** Exception version 1.1, included in the file LGPL_EXCEPTION.txt in this
     ** package.
     **
     ** GNU General Public License Usage
     ** Alternatively, this file may be used under the terms of the GNU
     ** General Public License version 3.0 as published by the Free Software
     ** Foundation and appearing in the file LICENSE.GPL included in the
     ** packaging of this file.  Please review the following information to
     ** ensure the GNU General Public License version 3.0 requirements will be
     ** met: http://www.gnu.org/copyleft/gpl.html.
     **
     ** Please note Third Party Software included with Qt Solutions may impose
     ** additional restrictions and it is the user's responsibility to ensure
     ** that they have met the licensing requirements of the GPL, LGPL, or Qt
     ** Solutions Commercial license and the relevant license of the Third
     ** Party Software they are using.
     **
     ** If you are unsure which license is appropriate for your use, please
     ** contact Nokia at qt-info@nokia.com.
     **
     ****************************************************************************/
    
     #include <qmfcapp.h>
     #include <qwinwidget.h>
    
     #include <QtGui/QMessageBox>
     #include <windows.h>
    
     BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpvReserved*/ )
     {
         static bool ownApplication = FALSE;
    
         if ( dwReason == DLL_PROCESS_ATTACH )
             ownApplication = QMfcApp::pluginInstance( hInstance );
         if ( dwReason == DLL_PROCESS_DETACH && ownApplication )
             delete qApp;
    
         return TRUE;
     }

    The DLL entry point function DllMain uses the QMfcApp::pluginInstance function to make sure that exactly one instance ofQApplication exists in the process, and that the DLL owning that instance stays loaded in memory.

     extern "C" __declspec(dllexport) bool showDialog( HWND parent )
     {
         QWinWidget win( parent );
         win.showCentered();
         QMessageBox::about( &win, "About QtMfc", "QtMfc Version 1.0\nCopyright (C) 2003" );
    
         return TRUE;
     }

    The C function showDialog is exported from the DLL and uses the QWinWidget class to provide proper stacking and modality between the native Win32 window and the QMessageBox.

     http://doc.qt.digia.com/solutions/4/qtwinmigrate/winmigrate-qt-dll-example.html


    Copyright © 2009 Nokia Corporation and/or its subsidiary(-ies) Trademarks
    Qt Solutions
  • 相关阅读:
    codeforces 724G
    P4151 [WC2011]最大XOR和路径 线性基
    2018-2019 ACM-ICPC, Asia Seoul Regional Contest K TV Show Game 2-sat
    codeforces 1198E Rectangle Painting 2 最小点覆盖
    codeforces847J Students Initiation 网络流
    codeforces863F Almost Permutation 费用流
    codeforces1213F Unstable String Sort 思维
    codeforces1156D 0-1-Tree 并查集
    codeforces1156D 0-1-Tree 换根dp
    错误集合
  • 原文地址:https://www.cnblogs.com/moher/p/2965309.html
Copyright © 2011-2022 走看看