Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
6411ad12
Kaydet (Commit)
6411ad12
authored
Ara 04, 2011
tarafından
Andras Timar
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
code cleanup of Windows quickstarter
üst
3ac61e97
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1 addition
and
511 deletions
+1
-511
QuickStart.cxx
desktop/win32/source/QuickStart/QuickStart.cxx
+0
-353
QuickStart.rc
desktop/win32/source/QuickStart/QuickStart.rc
+0
-127
resource.h
desktop/win32/source/QuickStart/resource.h
+1
-31
No files found.
desktop/win32/source/QuickStart/QuickStart.cxx
Dosyayı görüntüle @
6411ad12
...
...
@@ -7,37 +7,10 @@
#include <systools/win32/uwinapi.h>
#include <stdio.h>
#define MY_TASKBAR_NOTIFICATION WM_USER+1
#define MAX_LOADSTRING 100
// message used to communicate with soffice
#define TERMINATIONVETO_MESSAGE "SO TerminationVeto"
#define TERMINATE_MESSAGE "SO Terminate"
#define LISTENER_WINDOWCLASS "SO Listener Class"
#define KILLTRAY_MESSAGE "SO KillTray"
static
UINT
aTerminationVetoMessage
=
0x7FFF
;
static
UINT
aTerminateMessage
=
0x7FFF
;
static
HMENU
popupMenu
=
NULL
;
static
bool
bTerminateVeto
=
true
;
#define UPDATE_TIMER 1
// Global Variables:
HINSTANCE
hInst
;
// current instance
TCHAR
szTitle
[
MAX_LOADSTRING
];
// The title bar text
TCHAR
szWindowClass
[
MAX_LOADSTRING
];
// The title bar text
TCHAR
szExitString
[
MAX_LOADSTRING
];
TCHAR
szTooltipString
[
MAX_LOADSTRING
];
// Foward declarations of functions included in this code module:
ATOM
MyRegisterClass
(
HINSTANCE
hInstance
);
BOOL
InitInstance
(
HINSTANCE
,
int
);
LRESULT
CALLBACK
WndProc
(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
LRESULT
CALLBACK
About
(
HWND
,
UINT
,
WPARAM
,
LPARAM
);
bool
SofficeRuns
()
{
// check for soffice by searching the communication window
...
...
@@ -66,58 +39,13 @@ bool launchSoffice( )
UINT
ret
=
WinExec
(
imagename
,
SW_SHOW
);
if
(
ret
<
32
)
return
false
;
/*
// wait until we can communicate
int retry = 30;
while (retry-- && !SofficeRuns() )
Sleep(1000);
return SofficeRuns();
*/
return
true
;
}
else
return
true
;
}
void
NotifyListener
(
HWND
hWnd
)
{
static
HICON
hIconActive
=
NULL
;
//static HICON hIconInActive=NULL;
if
(
!
hIconActive
)
{
hIconActive
=
(
HICON
)
LoadImage
(
GetModuleHandle
(
NULL
),
MAKEINTRESOURCE
(
ICON_ACTIVE
),
IMAGE_ICON
,
GetSystemMetrics
(
SM_CXSMICON
),
GetSystemMetrics
(
SM_CYSMICON
),
LR_DEFAULTCOLOR
|
LR_SHARED
);
/* hIconInActive = (HICON)LoadImage( GetModuleHandle( NULL ), MAKEINTRESOURCE( ICON_INACTIVE ),
IMAGE_ICON, GetSystemMetrics( SM_CXSMICON ), GetSystemMetrics( SM_CYSMICON ),
LR_DEFAULTCOLOR | LR_SHARED );
*/
}
NOTIFYICONDATA
nid
;
nid
.
cbSize
=
sizeof
(
NOTIFYICONDATA
);
nid
.
hWnd
=
hWnd
;
nid
.
uID
=
IDM_QUICKSTART
;
nid
.
szTip
[
SAL_N_ELEMENTS
(
nid
.
szTip
)
-
1
]
=
0
;
// nid.hIcon = bTerminateVeto ? hIconActive : hIconInActive;
// strncpy(nid.szTip, bTerminateVeto ? STRING_QUICKSTARTACTIVE : STRING_QUICKSTARTINACTIVE, SAL_N_ELEMENTS(nid.szTip) - 1 );
nid
.
hIcon
=
hIconActive
;
strncpy
(
nid
.
szTip
,
szTooltipString
,
SAL_N_ELEMENTS
(
nid
.
szTip
)
-
1
);
nid
.
uFlags
=
NIF_TIP
|
NIF_ICON
;
// update systray
Shell_NotifyIcon
(
NIM_MODIFY
,
&
nid
);
//CheckMenuItem( popupMenu, IDM_QUICKSTART, bTerminateVeto ? MF_CHECKED : MF_UNCHECKED );
// notify listener
SendMessage
(
HWND_BROADCAST
,
aTerminationVetoMessage
,
(
WORD
)
bTerminateVeto
,
0L
);
}
int
APIENTRY
WinMain
(
HINSTANCE
/*hInstance*/
,
HINSTANCE
/*hPrevInstance*/
,
LPSTR
/*lpCmdLine*/
,
...
...
@@ -143,287 +71,6 @@ int APIENTRY WinMain(HINSTANCE /*hInstance*/,
launchSoffice
();
return
0
;
#if 0 // Note unconditional "return 0" above. Do not remove this block of code
// unless you are sure it will never be needed even for reference.
// TODO: Place code here.
MSG msg;
HACCEL hAccelTable;
aTerminationVetoMessage = RegisterWindowMessage( TERMINATIONVETO_MESSAGE );
aTerminateMessage = RegisterWindowMessage( TERMINATE_MESSAGE );
// Initialize global strings
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_QUICKSTART, szWindowClass, MAX_LOADSTRING);
LoadString(hInstance, IDS_EXIT, szExitString, MAX_LOADSTRING);
LoadString(hInstance, IDS_TOOLTIP, szTooltipString, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// Perform application initialization:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_QUICKSTART);
// Main message loop:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return msg.wParam;
#endif
}
//
// FUNCTION: MyRegisterClass()
//
// PURPOSE: Registers the window class.
//
// COMMENTS:
//
// This function and its usage is only necessary if you want this code
// to be compatible with Win32 systems prior to the 'RegisterClassEx'
// function that was added to Windows 95. It is important to call this function
// so that the application will get 'well formed' small icons associated
// with it.
//
ATOM
MyRegisterClass
(
HINSTANCE
hInstance
)
{
WNDCLASSEX
wcex
;
wcex
.
cbSize
=
sizeof
(
WNDCLASSEX
);
wcex
.
style
=
CS_HREDRAW
|
CS_VREDRAW
;
wcex
.
lpfnWndProc
=
(
WNDPROC
)
WndProc
;
wcex
.
cbClsExtra
=
0
;
wcex
.
cbWndExtra
=
0
;
wcex
.
hInstance
=
hInstance
;
wcex
.
hIcon
=
LoadIcon
(
hInstance
,
(
LPCTSTR
)
IDI_QUICKSTART
);
wcex
.
hCursor
=
LoadCursor
(
NULL
,
IDC_ARROW
);
wcex
.
hbrBackground
=
(
HBRUSH
)(
COLOR_WINDOW
+
1
);
wcex
.
lpszMenuName
=
NULL
;
wcex
.
lpszClassName
=
szWindowClass
;
wcex
.
hIconSm
=
LoadIcon
(
wcex
.
hInstance
,
(
LPCTSTR
)
IDI_SMALL
);
return
RegisterClassEx
(
&
wcex
);
}
//
// FUNCTION: InitInstance(HANDLE, int)
//
// PURPOSE: Saves instance handle and creates main window
//
// COMMENTS:
//
// In this function, we save the instance handle in a global variable and
// create and display the main program window.
//
BOOL
InitInstance
(
HINSTANCE
hInstance
,
int
nCmdShow
)
{
HWND
hWnd
;
hInst
=
hInstance
;
// Store instance handle in our global variable
hWnd
=
CreateWindow
(
szWindowClass
,
szTitle
,
WS_OVERLAPPEDWINDOW
,
CW_USEDEFAULT
,
0
,
CW_USEDEFAULT
,
0
,
NULL
,
NULL
,
hInstance
,
NULL
);
if
(
!
hWnd
)
{
return
FALSE
;
}
nCmdShow
=
SW_HIDE
;
// hide main window, we only need the taskbar icon
ShowWindow
(
hWnd
,
nCmdShow
);
UpdateWindow
(
hWnd
);
return
TRUE
;
}
//
// FUNCTION: WndProc(HWND, unsigned, WORD, LONG)
//
// PURPOSE: Processes messages for the main window.
//
// WM_COMMAND - process the application menu
// WM_PAINT - Paint the main window
// WM_DESTROY - post a quit message and return
//
//
LRESULT
CALLBACK
WndProc
(
HWND
hWnd
,
UINT
message
,
WPARAM
wParam
,
LPARAM
lParam
)
{
switch
(
message
)
{
case
WM_CREATE
:
{
// make sure soffice runs
if
(
!
launchSoffice
()
)
return
-
1
;
// create popup menu
popupMenu
=
CreatePopupMenu
();
static
int
count
=
0
;
// Add my items
MENUITEMINFO
mi
;
mi
.
cbSize
=
sizeof
(
MENUITEMINFO
);
mi
.
fMask
=
MIIM_TYPE
|
MIIM_STATE
|
MIIM_ID
;
mi
.
fType
=
MFT_STRING
;
mi
.
fState
=
MFS_ENABLED
|
MFS_DEFAULT
;
mi
.
wID
=
IDM_QUICKSTART
;
mi
.
hSubMenu
=
NULL
;
mi
.
hbmpChecked
=
NULL
;
mi
.
hbmpUnchecked
=
NULL
;
mi
.
dwItemData
=
NULL
;
mi
.
dwTypeData
=
"QuickStart"
;
mi
.
cch
=
strlen
(
mi
.
dwTypeData
);
// InsertMenuItem(popupMenu, count++, TRUE, &mi);
mi
.
cbSize
=
sizeof
(
MENUITEMINFO
);
mi
.
fMask
=
MIIM_TYPE
|
MIIM_STATE
|
MIIM_ID
;
mi
.
fType
=
MFT_STRING
;
mi
.
fState
=
MFS_ENABLED
;
mi
.
wID
=
IDM_ABOUT
;
mi
.
hSubMenu
=
NULL
;
mi
.
hbmpChecked
=
NULL
;
mi
.
hbmpUnchecked
=
NULL
;
mi
.
dwItemData
=
NULL
;
mi
.
dwTypeData
=
"Info..."
;
mi
.
cch
=
strlen
(
mi
.
dwTypeData
);
// InsertMenuItem(popupMenu, count++, TRUE, &mi);
mi
.
cbSize
=
sizeof
(
MENUITEMINFO
);
mi
.
fMask
=
MIIM_TYPE
;
mi
.
fType
=
MFT_SEPARATOR
;
mi
.
hSubMenu
=
NULL
;
mi
.
hbmpChecked
=
NULL
;
mi
.
hbmpUnchecked
=
NULL
;
mi
.
dwItemData
=
NULL
;
// InsertMenuItem(popupMenu, count++, TRUE, &mi);
mi
.
cbSize
=
sizeof
(
MENUITEMINFO
);
mi
.
fMask
=
MIIM_TYPE
|
MIIM_STATE
|
MIIM_ID
;
mi
.
fType
=
MFT_STRING
;
mi
.
fState
=
MFS_ENABLED
;
mi
.
wID
=
IDM_EXIT
;
mi
.
hSubMenu
=
NULL
;
mi
.
hbmpChecked
=
NULL
;
mi
.
hbmpUnchecked
=
NULL
;
mi
.
dwItemData
=
NULL
;
mi
.
dwTypeData
=
szExitString
;
mi
.
cch
=
strlen
(
mi
.
dwTypeData
);
InsertMenuItem
(
popupMenu
,
count
++
,
TRUE
,
&
mi
);
// add taskbar icon
NOTIFYICONDATA
nid
;
nid
.
cbSize
=
sizeof
(
NOTIFYICONDATA
);
nid
.
hWnd
=
hWnd
;
nid
.
uID
=
IDM_QUICKSTART
;
nid
.
uFlags
=
NIF_MESSAGE
;
nid
.
uCallbackMessage
=
MY_TASKBAR_NOTIFICATION
;
Shell_NotifyIcon
(
NIM_ADD
,
&
nid
);
// and update state
NotifyListener
(
hWnd
);
// check for soffice
SetTimer
(
hWnd
,
UPDATE_TIMER
,
3000
,
NULL
);
}
break
;
case
MY_TASKBAR_NOTIFICATION
:
// message from taskbar
switch
(
lParam
)
{
/*
case WM_LBUTTONDBLCLK:
bTerminateVeto = bTerminateVeto ? false : true;
NotifyListener( hWnd );
break;
*/
case
WM_LBUTTONDOWN
:
case
WM_RBUTTONDOWN
:
{
POINT
pt
;
GetCursorPos
(
&
pt
);
SetForegroundWindow
(
hWnd
);
int
m
=
TrackPopupMenuEx
(
popupMenu
,
TPM_RETURNCMD
|
TPM_LEFTALIGN
|
TPM_RIGHTBUTTON
,
pt
.
x
,
pt
.
y
,
hWnd
,
NULL
);
// BUGFIX: See Q135788 (PRB: Menus for Notification Icons Don't Work Correctly)
PostMessage
(
hWnd
,
NULL
,
0
,
0
);
switch
(
m
)
{
case
IDM_QUICKSTART
:
bTerminateVeto
=
bTerminateVeto
?
false
:
true
;
NotifyListener
(
hWnd
);
break
;
case
IDM_ABOUT
:
DialogBox
(
hInst
,
(
LPCTSTR
)
IDD_ABOUTBOX
,
hWnd
,
(
DLGPROC
)
About
);
break
;
case
IDM_EXIT
:
DestroyWindow
(
hWnd
);
break
;
}
}
break
;
}
break
;
case
WM_TIMER
:
if
(
wParam
==
UPDATE_TIMER
)
{
// update state
NotifyListener
(
hWnd
);
}
break
;
case
WM_DESTROY
:
// try to terminate office
SendMessage
(
HWND_BROADCAST
,
aTerminateMessage
,
0
,
0L
);
// delete taskbar icon
NOTIFYICONDATA
nid
;
nid
.
cbSize
=
sizeof
(
NOTIFYICONDATA
);
nid
.
hWnd
=
hWnd
;
nid
.
uID
=
IDM_QUICKSTART
;
Shell_NotifyIcon
(
NIM_DELETE
,
&
nid
);
PostQuitMessage
(
0
);
break
;
default:
return
DefWindowProc
(
hWnd
,
message
,
wParam
,
lParam
);
}
return
0
;
}
// Mesage handler for about box.
LRESULT
CALLBACK
About
(
HWND
hDlg
,
UINT
message
,
WPARAM
wParam
,
LPARAM
)
{
switch
(
message
)
{
case
WM_INITDIALOG
:
return
TRUE
;
case
WM_COMMAND
:
if
(
LOWORD
(
wParam
)
==
IDOK
||
LOWORD
(
wParam
)
==
IDCANCEL
)
{
EndDialog
(
hDlg
,
LOWORD
(
wParam
));
return
TRUE
;
}
break
;
}
return
FALSE
;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
desktop/win32/source/QuickStart/QuickStart.rc
Dosyayı görüntüle @
6411ad12
//Microsoft Developer Studio generated resource script.
//
#include "resource.h"
#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#define APSTUDIO_HIDDEN_SYMBOLS
#include "windows.h"
#undef APSTUDIO_HIDDEN_SYMBOLS
#include "resource.h"
/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
// German (Germany) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
#ifdef _WIN32
LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
#pragma code_page(1252)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// Icon
//
// Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems.
ICON_ACTIVE ICON DISCARDABLE "icons/main_app.ico"
IDI_QUICKSTART ICON DISCARDABLE "icons/main_app.ico"
IDI_SMALL ICON DISCARDABLE "icons/main_app.ico"
ICON_INACTIVE ICON DISCARDABLE "icons/main_app.ico"
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDC_QUICKSTART ACCELERATORS MOVEABLE PURE
BEGIN
"?", IDM_ABOUT, ASCII, ALT
"/", IDM_ABOUT, ASCII, ALT
END
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
//
IDD_ABOUTBOX DIALOG DISCARDABLE 22, 17, 230, 75
STYLE DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
CAPTION "About"
FONT 8, "System"
BEGIN
ICON IDI_QUICKSTART,IDC_MYICON,14,9,16,16
LTEXT "QuickStart Version 1.0",IDC_STATIC,49,10,119,8,
SS_NOPREFIX
LTEXT "Copyright (C) 2001",IDC_STATIC,49,20,119,8
DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
END
#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//
2 TEXTINCLUDE DISCARDABLE
BEGIN
"#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""windows.h""\r\n"
"#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
"#include ""resource.h""\r\n"
"\0"
END
3 TEXTINCLUDE DISCARDABLE
BEGIN
"\r\n"
"\0"
END
1 TEXTINCLUDE DISCARDABLE
BEGIN
"resource.h\0"
END
#endif // APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_APP_TITLE "SoQuickStart"
IDC_QUICKSTART "QUICKSTART"
IDS_TOOLTIP "StarOffice 6.0 QuickStart"
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_EXIT "Exit"
END
#endif // German (Germany) resources
/////////////////////////////////////////////////////////////////////////////
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
/////////////////////////////////////////////////////////////////////////////
#endif // not APSTUDIO_INVOKED
desktop/win32/source/QuickStart/resource.h
Dosyayı görüntüle @
6411ad12
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by QUICKSTART.RC
//
#define IDR_MAINFRAME 128
#define IDD_QUICKSTART_DIALOG 102
#define IDD_ABOUTBOX 103
#define IDS_APP_TITLE 103
#define IDM_ABOUT 104
#define IDM_EXIT 105
#define IDS_HELLO 106
#define IDI_QUICKSTART 107
#define IDI_SMALL 108
#define IDC_QUICKSTART 109
#define IDM_QUICKSTART 110
#define IDS_TOOLTIP 111
#define IDS_EXIT 112
#define ICON_ACTIVE 1
#define ICON_INACTIVE 2
#define IDC_MYICON 3
#define IDC_STATIC -1
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 129
#define _APS_NEXT_COMMAND_VALUE 32771
#define _APS_NEXT_CONTROL_VALUE 1000
#define _APS_NEXT_SYMED_VALUE 113
#endif
#endif
#define ICON_ACTIVE 1
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment