Bonjour,
je cherche à réceptionner des arguments envoyé via ligne de commande en VC ,
les sources du sdk sont ici : https://www.xp-pen.fr/developer
j'envoie en ligne de commande des paramètres depuis un autre logiciel ( fait en windev ) , il faut donc que je réceptionne cette ligne de commande pour modifier certain paramètre , en C avec une fonction main() exe console ou dll , ok , mais la c'est plus compliqué ( pour moi lol ).
voila le début de PadSignatureDlg.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
// PadSignatureDlg.cpp : implementation file
//
 
#include "stdafx.h"
#include "PadSignature.h"
#include "PadSignatureDlg.h"
#include "afxdialogex.h"
#include <list>
using namespace std;
 
#ifdef _DEBUG
//#define new DEBUG_NEW
#endif
#include <stdlib.h>
 
// CPadSignatureDlg dialog
 
CPadSignatureDlg * g_lpPadSignatureDlg = nullptr;
list<DATAPACKET >	g_listData;
HANDLE				g_eventData = ::CreateEvent(NULL, TRUE, TRUE, NULL);
CString RSA_PRIV_KEY;
int GetEncoderClsid(const WCHAR* format, CLSID* pClsid);
 
CPadSignatureDlg::CPadSignatureDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(IDD_PADSIGNATURE_DIALOG, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
 
using namespace std;
 
void CPadSignatureDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_STATIC_SIGN, m_Static_Sign);
	DDX_Control(pDX, IDC_MFCCOLORBUTTON1, m_Btn_PenColor);
	DDX_Control(pDX, IDC_EDIT_MAX_WIDTH, m_Edit_PenWidth);
	DDX_Control(pDX, IDC_BTN_OPEN, m_Btn_OpenDevice);
}
 
BEGIN_MESSAGE_MAP(CPadSignatureDlg, CDialogEx)
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BTN_SAVE, &CPadSignatureDlg::OnBnClickedBtnSave)
	ON_BN_CLICKED(IDC_BTN_CLEAR, &CPadSignatureDlg::OnBnClickedBtnClear)
	ON_BN_CLICKED(IDC_BTN_OPEN, &CPadSignatureDlg::OnBnClickedBtnOpen)
	ON_WM_DESTROY()
	ON_MESSAGE(WM_SIGN_DATA, &CPadSignatureDlg::OnSignData)
	ON_MESSAGE(WM_SIGN_NOTIFY, &CPadSignatureDlg::OnSignNotify)
	ON_BN_CLICKED(IDC_MFCCOLORBUTTON1, &CPadSignatureDlg::OnBnClickedMfccolorbutton1)
	ON_EN_CHANGE(IDC_EDIT_MAX_WIDTH, &CPadSignatureDlg::OnEnChangeEditMaxWidth)
	ON_BN_CLICKED(IDC_CHECK1, &CPadSignatureDlg::OnBnClickedCheck1)
	ON_BN_CLICKED(IDC_CHECK2, &CPadSignatureDlg::OnBnClickedCheck2)
	ON_BN_CLICKED(IDC_CHECK3, &CPadSignatureDlg::OnBnClickedCheck3)
	ON_BN_CLICKED(IDC_CHECK4, &CPadSignatureDlg::OnBnClickedCheck4)
	ON_STN_CLICKED(IDC_STATIC_SIGN, &CPadSignatureDlg::OnStnClickedStaticSign)
END_MESSAGE_MAP()
 
using namespace std;
 
 
// CPadSignatureDlg message handlers
CPadSignatureDlg::~CPadSignatureDlg()
{
	if (m_MemDC.GetSafeHdc())
	{
		m_MemBitmap.DeleteObject();
		m_MemDC.DeleteDC();
	}
}
BOOL CPadSignatureDlg::OnInitDialog()
{
	//int argc = 1;
	//LPSTR* argv;
	//LPSTR lignedecommande = GetCommandLine();
	//argv = CommandLineToArgvW(lignedecommande, &argc);
 
	CDialogEx::OnInitDialog();
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
 
	GdiplusStartupInput startupInput;
	GdiplusStartup(&m_gidpToken, &startupInput, NULL);
 
	m_HandleDataProc = 0;
	m_HandleNotifyProc = 0;
	g_lpPadSignatureDlg = this;
//	m_lpBitmapBuffer = nullptr;
	m_Edit_PenWidth.SetWindowText(RSA_PRIV_KEY);
 
	m_PenColor = m_Btn_PenColor.GetColor();
	m_MaxWidth = 2;
	OnEnChangeEditMaxWidth();
 
	signInitialize();
	CWnd *pWnd = GetDlgItem(IDC_STATIC_SIGN);//²ÎÊýΪ¿Ø¼þID
	pWnd->GetClientRect(&m_PicRec);//rcΪ¿Ø¼þµÄ´óС¡£
	m_Rote = false;
	CRect rect;
	m_Static_Sign.GetClientRect(rect);
	if (!m_MemDC.GetSafeHdc()/*m_lpBitmapBuffer == nullptr*/)
	{
		CClientDC dc(this);
		m_MemDC.CreateCompatibleDC(&dc);
		m_MemBitmap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
		m_MemDC.SelectObject(&m_MemBitmap);
		Gdiplus::Graphics g(m_MemDC.GetSafeHdc());
		g.Clear(Gdiplus::Color(0x00, 0xff, 0xff, 0xff));
		m_MemDC.FillSolidRect(rect, RGB(0xff, 0xff, 0xff));
	}
	((CButton *)GetDlgItem(IDC_CHECK1))->SetCheck(true);
	CPadSignatureDlg::OnBnClickedBtnOpen();
	return TRUE;  // return TRUE  unless you set the focus to a control
}
et l'entier PadSignature.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
 
// PadSignature.cpp : Defines the class behaviors for the application.
//
 
#include "stdafx.h"
#include "PadSignature.h"
#include "PadSignatureDlg.h"
 
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
 
 
// CPadSignatureApp
 
BEGIN_MESSAGE_MAP(CPadSignatureApp, CWinApp)
	ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()
 
 
// CPadSignatureApp construction
 
CPadSignatureApp::CPadSignatureApp()
{
	// support Restart Manager
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;
 
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}
 
 
// The one and only CPadSignatureApp object
 
CPadSignatureApp theApp;
 
 
// CPadSignatureApp initialization
 
BOOL CPadSignatureApp::InitInstance()
{
	// InitCommonControlsEx() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	// Set this to include all the common control classes you want to use
	// in your application.
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);
 
	CWinApp::InitInstance();
 
 
	AfxEnableControlContainer();
 
	// Create the shell manager, in case the dialog contains
	// any shell tree view or shell list view controls.
	CShellManager *pShellManager = new CShellManager;
 
	// Activate "Windows Native" visual manager for enabling themes in MFC controls
	CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));
 
	// Standard initialization
	// If you are not using these features and wish to reduce the size
	// of your final executable, you should remove from the following
	// the specific initialization routines you do not need
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	SetRegistryKey(_T("Local AppWizard-Generated Applications"));
 
	CPadSignatureDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}
	else if (nResponse == -1)
	{
		TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n");
		TRACE(traceAppMsg, 0, "Warning: if you are using MFC controls on the dialog, you cannot #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS.\n");
	}
 
	// Delete the shell manager created above.
	if (pShellManager != NULL)
	{
		delete pShellManager;
	}
 
#ifndef _AFXDLL
	ControlBarCleanUp();
#endif
 
	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}