System-hotkeys in FormView?
-
@ESTARTU:
also ich fang es ab und machvoid CEinstellungenView::CopytoClipboard(CString strInput) { if(OpenClipboard()) { HGLOBAL clipboardbuffer; char * buffer; EmptyClipboard(); clipboardbuffer = GlobalAlloc(GMEM_DDESHARE, strInput.GetLength()+1); buffer = (char*)GlobalLock(clipboardbuffer); strcpy(buffer, LPCSTR(strInput)); GlobalUnlock(clipboardbuffer); SetClipboardData(CF_TEXT, clipboardbuffer); CloseClipboard(); } }
z.B. für copy
-
Und wenn du in die MSDN guckst, gibt es für CEdit schon die Funktionen Cut, Copy und Paste.
Was kopierst du denn da? In meinem ListControl ist das auch etwas schwieriger.
-
Danke,
aber die Keys sind eingebunden (denke ich zumindest).
Wenn ich in VC++ 6.0 ein neues Projekt erstelle (SDI, als View-Klasse CFormView) und zwei Edit-Felder einfüge, dann kompiliere und ausführe, funktionieren die Keys nicht.
Sind die Ressourcen-IDs (z.B. ID_EDIT_COPY) nicht schon standardmäßig an die entsprechende Funktionalität gebunden?
Falls ich diesen IDs manuell eine Funktionalität einhauchen muss, wie mache ich das bzw. mit welchen Funktionen (hoffentlich in der MFC schon vorhandene) muss ich die verknüpfen?Ich bin über jede Hilfe dankbar, das düfte ja kein allzu ausgefallenes Problem sein, hoffe ich mal...
Edit: habe die inzwischen reingekommenen Beiträge noch gar nicht gesehen...
Muss ich einen solchen Aufruf für jedes einzelne Edit-Feld einbauen oder kann man das Form-weit erledigen, für alle vorhandenen Edit-Felder?Danke
Andro67
-
*gg* bei mir muss es nicht immer einfach sein! *gg*
Ich kopier aus einem Editcontrol! Ich glaub ich muss mir das bei Gelegenheit nochmal anschauen!
-
Sorry, ich habs im Doc versteckt...
// ------------------------------------------------------------------------------------------------ // "Bearbeiten -> Kopieren" // ------------------------------------------------------------------------------------------------ void CBasisDoc::OnEditCopy() { // Element mit Focus holen CWnd* pWnd = m_pView->GetFocus(); if (pWnd) { // Jetzt rausfinden, was es ist: // Ein Edit? CEdit* pEdit = dynamic_cast<CEdit*>(pWnd); if (pEdit) { pEdit->Copy(); return; } // Eine Combobox? CComboBox* pCbx = dynamic_cast<CComboBox*>(pWnd); if (pCbx) { pCbx->Copy(); return; } // Eine Listbox? CListBox* pLst = dynamic_cast<CListBox*>(pWnd); if (pLst) { CString strText; pLst->GetText(pLst->GetCurSel(), strText); CopyToClipboard(strText); return; } // Ein Listcontrol? CSortListCtrl* pLsc = dynamic_cast<CSortListCtrl*>(pWnd); if (pLsc) { pLsc->Copy(); } } }
Brauchst du noch eine Erklärung dazu? Oder erklärt sich das ausreichend selber?
Die anderen Funktionen sehen eben so ähnlich aus. Nur die Funktion beim Listcontrol habe ich selber gebastelt, such die also nicht in der MSDN.
-
Das sieht ja schon mal sehr interessant aus...
void CEditTestView::OnEditPaste() { // Element mit Focus holen CWnd* pWnd = GetFocus(); if (pWnd) { // Jetzt rausfinden, was es ist: // Ein Edit? CEdit* pEdit = dynamic_cast<CEdit*>(pWnd); if (pEdit) { pEdit->Paste(); return; } // Eine Combobox? CComboBox* pCbx = dynamic_cast<CComboBox*>(pWnd); if (pCbx) { pCbx->Paste(); return; } } }
Wenn ich das so in meine View-Klasse einbaue, wird die Funktion beim Ausführen von "Bearbeiten-Einfügen" zwar aufgerufen, aber pEdit bleibt nach Ausführen von
CEdit* pEdit = dynamic_cast<CEdit*>(pWnd);
0 (Cursor ist im Edit-Feld), daher wird das pEdit->Paste() auch nicht ausgeführt.
Stimmt eventuell sonst noch was nicht?
pWnd wird übrigens beim Debuggen als CTempWnd angezeigt...Andro67
Beim Erstellen erhalte ich übrigens folgende Warnung (was immer das bedeuten mag...
warning C4541: 'dynamic_cast' fuer polymorphen Typ 'class CWnd' mit /GR- verwendet; unvorhersehbares Verhalten moeglich
-
dire warnung bekommste folgender mafen weg:
Clicke auf die Fehlermeldung drücke F1 lese was da steht und mache was du gelesen hast *gg*
-
AndRo67 schrieb:
Beim Erstellen erhalte ich übrigens folgende Warnung (was immer das bedeuten mag...
warning C4541: 'dynamic_cast' fuer polymorphen Typ 'class CWnd' mit /GR- verwendet; unvorhersehbares Verhalten moeglich
Ja, du musst RTTI anschalten.
Projekteinstellungen -> C/C++ -> Programmiersprache C++ -> mittleres Häkchen
-
Polofreak schrieb:
dire warnung bekommste folgender mafen weg:
Clicke auf die Fehlermeldung drücke F1 lese was da steht und mache was du gelesen hast *gg*
Die Meldung 4551 zeigt mir meine Hilfe leider nicht an...
estartu_de schrieb:
Ja, du musst RTTI anschalten.
Projekteinstellungen -> C/C++ -> Programmiersprache C++ -> mittleres HäkchenGut, die Meldung bin ich schon mal los...
Leider funktioniert es trotzdem noch nicht: Das Ergebnis vonCEdit* pEdit = dynamic_cast<CEdit*>(pWnd);
bleibt weiterhin 0...
-
Sorry, in meinem Kopf ist heute Datenstau...
Du musst für ALLE Controls, für die das funktionieren soll eine Controlvariable anlegen. Sonst geht es nicht.Ich hoffe, das war jetzt aber wirklich alles... is ja schrecklich, wenns klappt, aber man weiß nicht mehr warum...
Die Meldung 4551 zeigt mir meine Hilfe leider nicht an...
Falsche Nummer?
-
Ja super...
Danke schön. Das mit den Control-Variablen war der Schlüssel zu Glück.Die Nummer der Warnung war natürlich C4541. Meine Hilfe kennt die aber trotzdem nicht. C4540 und danach C4550.
hauptsache, es funktioniert jetzt...
Gruß
AndRo67
-
nur noch als ergänzung da wäre gestanden:
Compiler Warning (level 1) C4541
'identifier' used on polymorphic type 'type' with /GR-; unpredictable behavior may resultYou did not enable run-time type information and tried to use a feature that requires run-time type information support. Recompile with the /GR switch.
For more information, see the Enable Run-Time Type Information (/GR) compiler option.
-
Vielen Dank für die Hilfe..
Ich habe das ganze in mein Programm eingearbeitet, und es ist auf einmal ein ganz anderes Arbeiten damit, wenn man wie gewohnt mit den Tastenkürzeln arbeiten kann
Ich habe schon seit Jahren immer wieder mal mehr, mal weniger intensiv versucht, das Problem zu lösen, war aber bisher immer der Meinung, dass die MFC diese Funktionalität standardmäßig irgendwie einbaut. Daher konnte ich wohl auch nichts finden
Heute bin ich zufällig über dieses Forum gestolpert, und nach diesem durchschlagenden Erfolg hat es einen festen Platz in meinen Favoriten.
AndRo67
-
Na, dann willkommen bei den Süchtigen.
-
aber
einmal Sucht immer Sucht!
Anmeldungsdatum: 10.03.2005
Beiträge insgesamt: 877
[0.15% aller Beiträge / 8.51 Beiträge pro Tag]
-
Na, dann werd ich mal zusehen, dass mich die Sucht nicht allzusehr übermannt
Aber da ich hier in der Firma eher nebenbei für den internen Eigenbedarf programmiere und mich den größten Teil der Zeit noch mit anderen Dingen beschäftigen muss, sollte das zu machen sein.