Commit fffc6402 by NitefullWind

QtWinMigrate 上传

parent 63e7b9f8
exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtwinmigrate-uselib
TEMPLATE += fakelib
QTWINMIGRATE_LIBNAME = $$qtLibraryTarget(QtSolutions_MFCMigrationFramework-head)
TEMPLATE -= fakelib
QTWINMIGRATE_LIBDIR = $$PWD/lib
unix:qtwinmigrate-uselib:!qtwinmigrate-buildlib:QMAKE_RPATHDIR += $$QTWINMIGRATE_LIBDIR
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Solutions component.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
// Declaration of the QMfcApp classes
#ifndef QMFCAPP_H
#define QMFCAPP_H
#include <QApplication>
#if defined(_AFXDLL) && defined(_MSC_VER)
#define QTWINMIGRATE_WITHMFC
class CWinApp;
#endif
#if defined(Q_OS_WIN)
# if !defined(QT_QTWINMIGRATE_EXPORT) && !defined(QT_QTWINMIGRATE_IMPORT)
# define QT_QTWINMIGRATE_EXPORT
# elif defined(QT_QTWINMIGRATE_IMPORT)
# if defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# endif
# define QT_QTWINMIGRATE_EXPORT __declspec(dllimport)
# elif defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# define QT_QTWINMIGRATE_EXPORT __declspec(dllexport)
# endif
#else
# define QT_QTWINMIGRATE_EXPORT
#endif
#if QT_VERSION >= 0x050000
#include <QAbstractNativeEventFilter>
class QT_QTWINMIGRATE_EXPORT QMfcAppEventFilter : public QAbstractNativeEventFilter
{
public:
QMfcAppEventFilter();
bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
};
#endif
class QT_QTWINMIGRATE_EXPORT QMfcApp : public QApplication
{
public:
static bool pluginInstance(Qt::HANDLE plugin = 0);
#ifdef QTWINMIGRATE_WITHMFC
static int run(CWinApp *mfcApp);
static QApplication *instance(CWinApp *mfcApp);
QMfcApp(CWinApp *mfcApp, int &argc, char **argv);
#endif
QMfcApp(int &argc, char **argv);
~QMfcApp();
bool winEventFilter(MSG *msg, long *result);
static void enterModalLoop();
static void exitModalLoop();
private:
#ifdef QTWINMIGRATE_WITHMFC
static char ** mfc_argv;
static int mfc_argc;
static CWinApp *mfc_app;
#endif
int idleCount;
bool doIdle;
};
#endif // QMFCAPP_H
include(../common.pri)
INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD
LIBS += -luser32
# When built as a library, the default is to include the component's
# MFC support. To disable this (e.g. in order to use this component
# with Visual Studio Express, which does not include MFC), comment out
# the following line.
qtwinmigrate-uselib:DEFINES *= _AFXDLL
qtwinmigrate-uselib:!qtwinmigrate-buildlib {
LIBS += -L$$QTWINMIGRATE_LIBDIR -l$$QTWINMIGRATE_LIBNAME
} else {
SOURCES += $$PWD/qwinwidget.cpp $$PWD/qwinhost.cpp $$PWD/qmfcapp.cpp
HEADERS += $$PWD/qwinwidget.h $$PWD/qwinhost.h $$PWD/qmfcapp.h
}
win32 {
qtwinmigrate-buildlib:DEFINES += QT_QTWINMIGRATE_EXPORT
else:qtwinmigrate-uselib:DEFINES += QT_QTWINMIGRATE_IMPORT
}
contains(QT_MAJOR_VERSION, 5): QT += widgets gui-private
\ No newline at end of file
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Solutions component.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
// Declaration of the QWinHost classes
#ifndef QWINHOST_H
#define QWINHOST_H
#include <QWidget>
#if defined(Q_OS_WIN)
# if !defined(QT_QTWINMIGRATE_EXPORT) && !defined(QT_QTWINMIGRATE_IMPORT)
# define QT_QTWINMIGRATE_EXPORT
# elif defined(QT_QTWINMIGRATE_IMPORT)
# if defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# endif
# define QT_QTWINMIGRATE_EXPORT __declspec(dllimport)
# elif defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# define QT_QTWINMIGRATE_EXPORT __declspec(dllexport)
# endif
#else
# define QT_QTWINMIGRATE_EXPORT
#endif
class QT_QTWINMIGRATE_EXPORT QWinHost : public QWidget
{
Q_OBJECT
public:
QWinHost(QWidget *parent = 0, Qt::WindowFlags f = 0);
~QWinHost();
void setWindow(HWND);
HWND window() const;
protected:
virtual HWND createWindow(HWND parent, HINSTANCE instance);
bool event(QEvent *e);
void showEvent(QShowEvent *);
void focusInEvent(QFocusEvent*);
void resizeEvent(QResizeEvent*);
#if QT_VERSION >= 0x050000
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
#else
bool winEvent(MSG *msg, long *result);
#endif
private:
void fixParent();
friend void* getWindowProc(QWinHost*);
void *wndproc;
bool own_hwnd;
HWND hwnd;
};
#endif // QWINHOST_H
/****************************************************************************
**
** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Solutions component.
**
** $QT_BEGIN_LICENSE:BSD$
** You may use this file under the terms of the BSD license as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
** of its contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
// Declaration of the QWinWidget classes
#ifndef QWINWIDGET_H
#define QWINWIDGET_H
#include <QWidget>
#include "qmfcapp.h"
class CWnd;
#if defined(Q_OS_WIN)
# if !defined(QT_QTWINMIGRATE_EXPORT) && !defined(QT_QTWINMIGRATE_IMPORT)
# define QT_QTWINMIGRATE_EXPORT
# elif defined(QT_QTWINMIGRATE_IMPORT)
# if defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# endif
# define QT_QTWINMIGRATE_EXPORT __declspec(dllimport)
# elif defined(QT_QTWINMIGRATE_EXPORT)
# undef QT_QTWINMIGRATE_EXPORT
# define QT_QTWINMIGRATE_EXPORT __declspec(dllexport)
# endif
#else
# define QT_QTWINMIGRATE_EXPORT
#endif
class QT_QTWINMIGRATE_EXPORT QWinWidget : public QWidget
{
Q_OBJECT
public:
QWinWidget( HWND hParentWnd, QObject *parent = 0, Qt::WindowFlags f = 0 );
#ifdef QTWINMIGRATE_WITHMFC
QWinWidget( CWnd *parnetWnd, QObject *parent = 0, Qt::WindowFlags f = 0 );
#endif
~QWinWidget();
void show();
void center();
void showCentered();
HWND parentWindow() const;
protected:
void childEvent( QChildEvent *e );
bool eventFilter( QObject *o, QEvent *e );
bool focusNextPrevChild(bool next);
void focusInEvent(QFocusEvent *e);
#if QT_VERSION >= 0x050000
bool nativeEvent(const QByteArray &eventType, void *message, long *result);
#else
bool winEvent(MSG *msg, long *result);
#endif
private:
void init();
void saveFocus();
void resetFocus();
HWND hParent;
HWND prevFocus;
bool reenable_parent;
};
#endif // QWINWIDGET_H
...@@ -9,13 +9,23 @@ QT += core gui concurrent ...@@ -9,13 +9,23 @@ QT += core gui concurrent
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = sbkpay TARGET = sbkpay
TEMPLATE = app
include("./QsLog/QsLog.pri") include("./QsLog/QsLog.pri")
DEFINES += FM_TEST DEFINES += FM_TEST
CONFIG += C++11 CONFIG += C++11 SBKDLL
DLLDESTDIR = $$[QT_INSTALL_PREFIX]/bin
include($$PWD/qtwinmigrate/src/qtwinmigrate.pri)
SBKDLL {
TEMPLATE = lib
CONFIG += dll
} else {
TEMPLATE = app
}
SOURCES += main.cpp\ SOURCES += main.cpp\
hostwidget.cpp \ hostwidget.cpp \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment