Bonjour,
J'ai repris un ancien projet Open Source devellopé en C++, créé par quelqu'un d'autre
J'arrive à le modifier avec Visual Studio 2015 Community Edition
Il s'agit du logiciel ShiftN, j'en avais parlé ici :
https://www.developpez.net/forums/d2...-jour-shift-n/
Le soucis c'est que dans l'IDE je n'ai que du code, je ne peux pas modifier l'interface graphique autrement que par le code
Malgrès cela, jusqu'à maintenant j'avais réussi à apporter pas mal de modifications intéressantes, notamment des fonctions d'édition supplémentaires à la souris.
J'ai apporté d'autres modifications, mais que suis bloqué par un problème tout bête...
Pour éviter les TMS avec la souris, ce sont des fonctions qui utilisent les touches du clavier.
En faisant du reverse ingéneering, j'arrive à ajouter ces commandes au clavier, mais ça fonctionne en DEBUG mais pas en RELEASE
Le soucis c'est que l'executable en version DEBUG est beaucoup plus lent
Voici les modifications apportées au code :
Fichier ShiftN.rc :
Fichier ressurce.h :
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
35IDR_MAINFRAME ACCELERATORS BEGIN "N", ID_APP_ABOUT, VIRTKEY, SHIFT, NOINVERT "C", ID_CTRLC, VIRTKEY, CONTROL, NOINVERT "V", ID_CTRLV, VIRTKEY, CONTROL, NOINVERT VK_DELETE, ID_DELMH, VIRTKEY, NOINVERT VK_F1, ID_HELPMH, VIRTKEY, NOINVERT VK_PRIOR, ID_MHUP, VIRTKEY, NOINVERT VK_NEXT, ID_MHDOWN, VIRTKEY, NOINVERT //2026 - Ajout des raccourcis clavier --------------------------------------------------------------------------------------------------- // Debug: OK - Release: Ne fonctionne pas VK_F5, ID_TOGGLE_OPTIM_AT_LOAD, VIRTKEY, NOINVERT // Debug: OK - Release: Ne fonctionne pas VK_F2, ID_SAVE_CROP, VIRTKEY, NOINVERT // Debug: OK - Release: Ne fonctionne pas VK_F9, ID_SAVE_CROP, VIRTKEY, NOINVERT // Debug: OK - Release: Ne fonctionne pas VK_F3, ID_SAVE_NO_CROP, VIRTKEY, NOINVERT // Debug: OK - Release: Ne fonctionne pas VK_F10, ID_SAVE_NO_CROP, VIRTKEY, NOINVERT // Debug: OK - Release: Ne fonctionne pas VK_F11, ID_ANWENDEN_KORREKTURANPASSEN, VIRTKEY, NOINVERT // Debug: OK - Release: Fonctionne mais affiche un point d'arrêt quand on lance le programme en version Release depuis le compilateur VK_F12, MH_Re, VIRTKEY, NOINVERT // -------------------------------------------------------------------------------------------------------------------------------------- END
Fichier ShiftNView.h :
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 //{{NO_DEPENDENCIES}} // Microsoft Visual C++ generated include file. // Used by ShiftN.rc // #define IDD_ABOUTBOX 100 #define IDB_SPLASH 102 #define CG_IDD_MYDIALOGBAR 103 #define CG_ID_VIEW_MYDIALOGBAR 104 #define CG_IDD_PROGRESS 105 #define CG_IDS_PROGRESS_CAPTION 106 #define IDR_MAINFRAME 128 #define IDR_SHIFTNTYPE 129 #define IDD_DIALOG1 130 #define IDD_DIALOG2 131 #define IDD_DIALOG3 133 #define IDD_DIALOG4 134 #define IDD_DIALOG5 135 #define IDD_DIALOG6 136 #define IDD_DIALOG7 137 #define IDD_DIALOG8 138 #define IDD_DIALOG9 139 #define IDD_DIALOG10 140 #define IDD_DIALOG11 141 #define IDD_DIALOG12 149 #define CG_IDD_MYDIALOGBAR_SAVE 150 #define IDD_DIALOG13 151 #define IDC_CHECK1 1000 #define IDC_CHECK2 1001 #define IDC_CHECK3 1002 #define IDC_CHECK4 1003 #define CG_IDC_PROGDLG_PROGRESS 1003 #define IDC_CHECK5 1004 #define IDC_CHECK6 1005 #define IDC_EDIT1 1006 #define IDC_CHECK7 1006 #define IDC_EDIT2 1007 #define IDC_CHECK8 1007 #define IDC_PROGRESS1 1007 #define IDC_EDIT3 1008 #define IDC_RADIO1 1008 #define IDC_EDIT4 1009 #define IDC_RADIO2 1009 #define IDC_EDIT5 1010 #define IDC_BUTTON1 1010 #define IDC_CHECK9 1010 #define IDC_RADIO3 1010 #define IDC_EDIT6 1011 #define IDC_SLIDER1 1011 #define IDC_RADIO4 1011 #define IDC_EDIT7 1012 #define IDC_SLIDER2 1012 #define IDC_CHECK10 1012 #define IDC_EDIT8 1013 #define IDC_SLIDER3 1013 #define IDC_CHECK11 1013 #define IDC_EDIT9 1014 #define IDC_SLIDER4 1014 #define IDC_EDIT11 1015 #define IDC_EDIT10 1016 #define IDC_EDIT12 1016 #define IDC_EDIT13 1017 #define IDC_EDIT14 1018 #define IDC_EDIT15 1019 #define MH_SAVE 32771 #define MH_LOAD 32772 #define MH_PARAM 32773 #define MH_Go 32774 #define ID_STAPELVERARBEITUNG 32775 #define MH_Go2 32775 #define MH_BATCH 32776 #define MH_ORIG 32777 #define MH_GRAU 32778 #define MH_SCHWARZ 32779 #define ID_DARSTELLUNG 32780 #define MH_DARST 32781 #define ID_START 32785 #define ID_OPTIONS_LANGUAGE 32786 #define ID_ANWENDEN_KORREKTURANPASSEN 32787 #define ID_DATEI_SPEICHERNUNTER 32788 #define MH_Re 32791 #define ID_GITTER 32792 #define ID_SAVE_CLOSE 32793 #define ID_FILE_SAVEANDEXIT 32794 #define ID_ACKNOW 32795 #define ID_EINSTELLUNGEN_SCHALTFLCHESPEICHERN 32797 #define ID_CTRLC 32798 #define ID_CTRLV 32799 #define ID_HELPMH 32800 #define ID_DELMH 32805 #define ID_ACCELERATOR32809 32809 #define ID_MHUP 32811 #define ID_MHDOWN 32812 //2026 ---------------------------------------- #define ID_SAVE_CROP 32801 #define ID_SAVE_NO_CROP 32802 #define ID_TOGGLE_OPTIM_AT_LOAD 32803 //--------------------------------------------- // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_3D_CONTROLS 1 #define _APS_NEXT_RESOURCE_VALUE 152 #define _APS_NEXT_COMMAND_VALUE 32814 #define _APS_NEXT_CONTROL_VALUE 1012 #define _APS_NEXT_SYMED_VALUE 107 #endif #endif
Fichier ShiftNViewcpp:
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 // ShiftNView.h : Schnittstelle der Klasse CShiftNView // ///////////////////////////////////////////////////////////////////////////// #undef FAR #if !defined(AFX_SHIFTNVIEW_H__81C9C6D6_853F_4B8C_A993_E824F347600A__INCLUDED_) #define AFX_SHIFTNVIEW_H__81C9C6D6_853F_4B8C_A993_E824F347600A__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CShiftNView : public CView { protected: // Nur aus Serialisierung erzeugen CShiftNView(); DECLARE_DYNCREATE(CShiftNView) // Attribute public: CShiftNDoc* GetDocument(); // Operationen public: // Überladungen // Vom Klassenassistenten generierte Überladungen virtueller Funktionen //{{AFX_VIRTUAL(CShiftNView) public: virtual void OnDraw(CDC* pDC); // überladen zum Zeichnen dieser Ansicht virtual BOOL PreCreateWindow(CREATESTRUCT& cs); virtual void OnFinalRelease(); virtual DROPEFFECT OnDragEnter(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); virtual void OnDragLeave(); virtual DROPEFFECT OnDragOver(COleDataObject* pDataObject, DWORD dwKeyState, CPoint point); virtual BOOL OnDrop(COleDataObject* pDataObject, DROPEFFECT dropEffect, CPoint point); protected: virtual BOOL OnScrollBy(CSize sizeScroll, BOOL bDoScroll = TRUE); virtual void OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView); //}}AFX_VIRTUAL // Implementierung public: virtual ~CShiftNView(); #ifdef _DEBUG virtual void AssertValid() const; virtual void Dump(CDumpContext& dc) const; #endif protected: // Generierte Message-Map-Funktionen protected: //{{AFX_MSG(CShiftNView) afx_msg void OnSave(); afx_msg void OnSaveAs(); afx_msg void OnSaveExit(); afx_msg void OnLoad(); afx_msg void OnParam(); afx_msg void OnCtrlC(); afx_msg void OnCtrlV(); afx_msg void OnGo(); afx_msg void OnGitter(); afx_msg void Reoptimize(); afx_msg void OnBatch(); afx_msg void OnDarst(); afx_msg void OnLang(); afx_msg void OnDownMH(); afx_msg void OnUpMH(); afx_msg void OnSchaltfl(); afx_msg void OnAnwendenKorrekturanpassen(); afx_msg void OnGoB(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnDelMH(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnMButtonDown(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMButtonUp(UINT nFlags, CPoint point); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnSetFocus(CWnd* pOldWnd); afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnUpdateGitter(CCmdUI* pCmdUI); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); // 2026 ---------------------------------- afx_msg void OnSaveCrop(); afx_msg void OnSaveNoCrop(); afx_msg void OnToogleOptimAtLoad(); // --------------------------------------- //}}AFX_MSG DECLARE_MESSAGE_MAP() }; #ifndef _DEBUG // Testversion in ShiftNView.cpp inline CShiftNDoc* CShiftNView::GetDocument() { return (CShiftNDoc*)m_pDocument; } #endif ///////////////////////////////////////////////////////////////////////////// //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ fügt unmittelbar vor der vorhergehenden Zeile zusätzliche Deklarationen ein. #endif // !defined(AFX_SHIFTNVIEW_H__81C9C6D6_853F_4B8C_A993_E824F347600A__INCLUDED_)
Vous pouvez télécharger le code complet ici :
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 BEGIN_MESSAGE_MAP(CShiftNView, CView) //{{AFX_MSG_MAP(CShiftNView) ON_COMMAND(MH_SAVE, OnSave) ON_COMMAND(ID_DATEI_SPEICHERNUNTER, OnSaveAs) ON_COMMAND(ID_SAVE_CLOSE, OnSaveExit) ON_COMMAND(MH_LOAD, OnLoad) ON_COMMAND(MH_PARAM, OnParam) ON_COMMAND(ID_CTRLC, OnCtrlC) ON_COMMAND(ID_CTRLV, OnCtrlV) ON_COMMAND(MH_Go, OnGo) ON_COMMAND(ID_GITTER, OnGitter) ON_COMMAND(MH_Re, Reoptimize) ON_COMMAND(MH_BATCH, OnBatch) ON_COMMAND(ID_DELMH, OnDelMH) ON_COMMAND(MH_DARST, OnDarst) ON_COMMAND(ID_EINSTELLUNGEN_SCHALTFLCHESPEICHERN, OnSchaltfl) ON_COMMAND(ID_OPTIONS_LANGUAGE, OnLang) ON_COMMAND(ID_MHUP, OnUpMH) ON_COMMAND(ID_MHDOWN, OnDownMH) ON_COMMAND(ID_ANWENDEN_KORREKTURANPASSEN, OnAnwendenKorrekturanpassen) ON_WM_CREATE() ON_WM_LBUTTONDOWN() ON_WM_MBUTTONDOWN() ON_WM_MOUSEMOVE() ON_WM_RBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MBUTTONUP() ON_WM_SIZE() ON_WM_SETFOCUS() ON_WM_KILLFOCUS() ON_UPDATE_COMMAND_UI(ID_GITTER, OnUpdateGitter) ON_WM_RBUTTONUP() //}}AFX_MSG_MAP //2026 ----------------------------------------------------- ON_COMMAND(ID_SAVE_CROP, OnSaveCrop) ON_COMMAND(ID_SAVE_NO_CROP, OnSaveNoCrop) ON_COMMAND(ID_TOGGLE_OPTIM_AT_LOAD, OnToogleOptimAtLoad) //---------------------------------------------------------- END_MESSAGE_MAP() ... //2026 void CShiftNView::OnToogleOptimAtLoad() { OptimAtLoad++; if (OptimAtLoad >2) { OptimAtLoad = 0; } } void CShiftNView::OnSaveCrop() { int beschneiden_old; beschneiden_old = beschneiden; beschneiden = 1; OnSave(); beschneiden = beschneiden_old; } void CShiftNView::OnSaveNoCrop() { int beschneiden_old; beschneiden_old = beschneiden; beschneiden = 0; OnSave(); beschneiden = beschneiden_old; }
https://drive.google.com/file/d/1ueo...ew?usp=sharing
Merci
A bientôt









Répondre avec citation
Partager