hallo,
ich habe eine dll geschrieben. die habe ich selber mit den mfc-libraries ergänzt (ohne assistent), um dialoge und messageboxes aufpoppen zu können.
meine dll wird von einem tool benutzt, das sowohl als windowsapplikation, als auch als konsolenapplikation verwendet wird.
mein dialog wird in der windowsapplikation einwandfrei aufgepoppt. jedoch bleibt der prozess an der stelle des aufpoppens in der
konsolenapplikation hängen (vermute mal, da er kein mainwindow findet).
wie kann ich denn in der konsolenappliaktion den dialog aufrufen?
kann ich eine fakewindow erzeugen oder so?
Kurioses:
meine dll hat 2 modes.
in einem rufe ich mit doModal() einen filedialog vor meinem dialog auf.
dieser filedialog funktioniert auch in der konsolenapplikation. anschließend würde mein dialog aufpoppen. und siehe da .. es poppt auch auf.
somit habe ich festgestellt, dass auch wenn ich vorher nur eine afxmessagebox aufrufe, mein dialog auf einmal funktioniert.
in dem 2ten mode benötige ich kein filedialog. und dann bleibt der prozess hängen. also was macht der filedialog und die afxmessagebox, dass es danach geht?
fehlt was in meiner klasse? aber was?
also nochmal...
wenn ich in der konsolenapplikation nur meinen dialog aufpoppen will, dann geht es nicht.
wenn ich vorher cfiledialog oder afxmessagebox aufrufe, dann geht mein dialog danach auch.
hier meine dialog-klasse. habe ein wenig raus, da es meine diplomarbeit ist ... aber nur die combobox-sachen und so ... also nix dialogrelevantes.
Alles anzeigen
Alles anzeigen
danke schonmal
ich habe eine dll geschrieben. die habe ich selber mit den mfc-libraries ergänzt (ohne assistent), um dialoge und messageboxes aufpoppen zu können.
meine dll wird von einem tool benutzt, das sowohl als windowsapplikation, als auch als konsolenapplikation verwendet wird.
mein dialog wird in der windowsapplikation einwandfrei aufgepoppt. jedoch bleibt der prozess an der stelle des aufpoppens in der
konsolenapplikation hängen (vermute mal, da er kein mainwindow findet).
wie kann ich denn in der konsolenappliaktion den dialog aufrufen?
kann ich eine fakewindow erzeugen oder so?
Kurioses:
meine dll hat 2 modes.
in einem rufe ich mit doModal() einen filedialog vor meinem dialog auf.
dieser filedialog funktioniert auch in der konsolenapplikation. anschließend würde mein dialog aufpoppen. und siehe da .. es poppt auch auf.
somit habe ich festgestellt, dass auch wenn ich vorher nur eine afxmessagebox aufrufe, mein dialog auf einmal funktioniert.
in dem 2ten mode benötige ich kein filedialog. und dann bleibt der prozess hängen. also was macht der filedialog und die afxmessagebox, dass es danach geht?
fehlt was in meiner klasse? aber was?
also nochmal...
wenn ich in der konsolenapplikation nur meinen dialog aufpoppen will, dann geht es nicht.
wenn ich vorher cfiledialog oder afxmessagebox aufrufe, dann geht mein dialog danach auch.
hier meine dialog-klasse. habe ein wenig raus, da es meine diplomarbeit ist ... aber nur die combobox-sachen und so ... also nix dialogrelevantes.
Quellcode
- #pragma once
- #include "afxwin.h"
- #include "resource.h"
- class CMyDlg : public CDialog
- {
- DECLARE_DYNAMIC(CMyDlg)
- public:
- CMyDlg(CWnd* pParent = NULL);
- virtual ~CMyDlg();
- // Dialog Data
- enum { IDD = IDD_MYDLG };
- protected:
- virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
- virtual BOOL OnInitDialog();
- DECLARE_MESSAGE_MAP()
- public:
- afx_msg void OnBnClickedOk();
- afx_msg void OnCbnSelchangeCombo();
- CComboBox m_ComboCtrl;
- };
Quellcode
- #include "stdafx.h"
- #include "MyDlg.h"
- #include <string>
- IMPLEMENT_DYNAMIC(CMyDlg, CDialog)
- CMyDlg::CMyDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CMyDlg::IDD, pParent)
- {
- }
- CMyDlg::~CMyDlg()
- {
- }
- void CMyDlg::DoDataExchange(CDataExchange* pDX)
- {
- CDialog::DoDataExchange(pDX);
- DDX_Control(pDX, IDC_COMBO, m_ComboCtrl);
- }
- BOOL CMyDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- return TRUE;
- }
- BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
- ON_BN_CLICKED(IDOK, &CMyDlg::OnBnClickedOk)
- ON_CBN_SELCHANGE(IDC_COMBO, &CMyDlg::OnCbnSelchangeCombo)
- END_MESSAGE_MAP()
- // CMyDlg message handlers
- void CMyDlg::OnBnClickedOk()
- {
- // TODO: Add your control notification handler code here
- OnOK();
- }
danke schonmal
Gruß
Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de
Steff
___
Der Optimist sieht in jedem Problem eine Aufgabe.
Der Pessimist sieht in jeder Aufgabe ein Problem.
http://autoexport.sunbird-kalender.de