Zum Inhalt springen

TinTin

Mitglieder
  • Gesamte Inhalte

    433
  • Benutzer seit

  • Letzter Besuch

Beiträge von TinTin

  1. 
    void CListctrlDlg::InsertRow(CString csCsvData, int iCols)
    
    {
    
    	CString csCsvBuffer;
    
    
    	if (csCsvData.Right(1)!=";")
    
    		csCsvData+=";";
    
    
    	int id = csCsvData.Find(';'), i = 1, iRow = LB_ERR;
    
    
    	csCsvBuffer = csCsvData.Left(id);
    
    	csCsvData = csCsvData.Mid(id + 1);
    
    
    	int iIcon = atoi(csCsvBuffer);
    
    
    	iRow = m_ctlList.InsertItem(m_ctlList.GetItemCount() +1, csCsvBuffer, iIcon);
    
    	id = csCsvData.Find(';');
    
    
    	while (id != -1 && i < iCols && iRow != LB_ERR)
    
    	{	
    
    		csCsvBuffer = csCsvData.Left(id);
    
    		csCsvData = csCsvData.Mid(id + 1);
    
    		m_ctlList.SetItemText(iRow, i, csCsvBuffer);
    
    		i++;
    
    		id = csCsvData.Find(';');
    
    	}
    
    	return;
    
    }
    
    

    so, dass ist die funktion die die liste füllt. 'csCsvData' beinhaltet eine zeile aus einer 'csv-datei', 'iCols' gibt die anzahl der felder an.

    ich hoffe das wolltest du sehen.

    ciao TinTin

  2. Seid gegrüsst ...

    ...ich hätt da gerne mal wieder ein problem...

    ich hab da eine CListCtrl/result in der ich in der ersten Spalte ein icon anzeige und dazu wird noch der erste wert (1 oder 0). das icon commt aus einem toolbar mit zwei

    schaltflächen. daher die werte 1 oder null.

    das ganze sieht so aus:

    (col 1) (col 2) (col 2)

    [icon0] 0 blabla blubb

    soll aber so aussehen:

    (col 1) (col 2) (col 2)

    [icon0] blabla blubb

    also der wert in der ersten spalte soll weg...

    hat jemand eine idee???

    ciao TinTin

  3. danke,

    hab ich dann auch gestern abend noch gefunden. ist aber noch nicht das was ich

    eigentlich will, denn ich bekomme den focus nicht mehr weg. was ich eigentlich

    machen will ist folgendes. ich habe ein editfeld, in dem steht ein name, bestehend

    aus anrede, titel, vor- und nachname. nun soll, wenn ich mit der maus oder dem

    tabulator auf das editfeld gehe ein kleiner dialog geöffent werden, der mir die

    möglichkeit gibt den namen in seinen einzelteilen getrennt zu bearbeiten. z.b. den

    vornamen ändern und aus einem doktor einen professor machen. beim schliessen

    soll der string dann wieder zusammengebaut werden und im ersten editfeld agezeigt werden.

    bei der EN_SETFOCUS lösung geht mir der bearbeitungs dialog immer wieder auf, da,

    wenn dieser geschlossen wird das erste editfeld immer wieder den focus erhält.

    hat jemand noch eine idee, die bei maus und tabulator einsatz funktioniert.

    ciao TinTin

  4. hi,

    es ist wieder so weit, ich hätte da gern mal ein problem...

    ich hab da in meiner dialoganwendung ein editfeld. jetzt hätte ich gerne, dass, wenn

    man mit dem tabulator oder der maus den focus/cursor in dieses feld setzt, eine meldung

    angezeigt wird.

    ich hab schon ein wenig gesucht im forum und msdn, aber zu den schlagworten

    focus, cursor oder CEdit hab ich nichts verwertbares gefunden. es gibt zwar ein

    OnSetFocus() aber das ist wohl nur für COleObject.

    die ganze sache kann ja eigentlich nicht so schwierig sein und ich seh mal wieder

    den wald vor lauter bäumen nicht.

    ich hoffe ihr könnte mich in die richtige richtung schubsen...

    :confused:

    ciao TinTin

  5. ok, das hat geholfen, bis zum nächsten fehler...

    
    C:\projekte\process\processDlg.cpp(249) : error C2065: 'EnumProcessModules_ProcPtr' : nichtdeklarierter Bezeichner
    
    C:\projekte\process\processDlg.cpp(249) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'lpfnDLLProc'
    
    C:\projekte\process\processDlg.cpp(249) : error C2065: 'lpfnDLLProc' : nichtdeklarierter Bezeichner
    
    C:\projekte\process\processDlg.cpp(251) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetProcAddress'
    
    C:\projekte\process\processDlg.cpp(266) : error C2065: 'GetModuleFileNameEx_ProcPtr' : nichtdeklarierter Bezeichner
    
    C:\projekte\process\processDlg.cpp(266) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'lpfnDLLProc'
    
    C:\projekte\process\processDlg.cpp(268) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'GetProcAddress'
    
    
    ich hab dann entsprechend typedefs für die anderen datentypen angelegt:
    
    typedef BOOL (CALLBACK* EnumProcesses_ProcPtr)(DWORD*, DWORD, DWORD*);
    
    typedef BOOL (CALLBACK* EnumProcessModules_ProcPtr)(DWORD*, DWORD, DWORD*);
    
    typedef BOOL (CALLBACK* GetModuleFileNameEx_ProcPtr)(DWORD*, DWORD, DWORD*);
    
    
    bekomme dann folgende fehlermeldung:
    
    C:\projekte\process\processDlg.cpp(258) : error C2197: 'int (__stdcall *)(unsigned long *,unsigned long,unsigned long *)' : Zu viele Parameter uebergeben
    
    C:\projekte\process\processDlg.cpp(271) : error C2197: 'int (__stdcall *)(unsigned long *,unsigned long,unsigned long *)' : Zu viele Parameter uebergeben
    
    
    im code werden 4 parameter übergeben, ich hab aber nur 3 definiert.
    lpfnDLLProc(hProcess, hMods, sizeof(hMods), &cbNeeded)
    wenn ich noch ein 4 DWORD in den typedef schreibe, dann flippt alles aus.
    typedef BOOL (CALLBACK* GetModuleFileNameEx_ProcPtr)(DWORD*, DWORD, DWORD*, DWORD*);
    
    C:\projekte\process\processDlg.cpp(271) : error C2664: 'int (unsigned long *,unsigned long,unsigned long *,unsigned long *)' : Konvertierung des Parameters 4 von 'unsigned int' in 'unsigned long *' nicht moeglich
    
            Die Konvertierung eines ganzzahligen Typs in einen Zeigertyp erfordert ein reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat
    
    

    ich steh hier wieder ein wenig auf dem schlauch...

    darf ich das nicht als DWORD oder DWORD* vereinbaren?

    wenn nicht, wie denn dann???

    Ciao TinTin

  6. hi,

    ich bekomme hier

    
    [COLOR=orangered]EnumProcesses_ProcPtr[/COLOR] lpfnDLLProc = NULL;
    
    
    lpfnDLLProc = (EnumProcesses_ProcPtr) GetProcAddress(m_hInstance, "EnumProcesses");
    
    

    immer die mitteilung 'nichtdeklarierter bezeichner', finde aber auch nichts zu diesem

    datentyp!?

    ich hab die beiden funktionen

    'EnumProc()' und 'PrintModules(DWORD processID)' als member funktionen in mein projekt (vc++ 6.0/mfc)

    eingebunden.

    muss ich sonnst noch was beachten???

    Ciao TinTin

    PS: ich hab bestimmt wieder was nicht gesehen oder so...

  7. hi,

    habt ihr die heissen tage alle gut überlebt?

    ich will keine klagen hören!

    :marine

    zum thema:

    ich habe ein programm und ich möchte das dieses programm nur einmal

    gestartet werden kann. ok, öfter starten möchte ich es schon, aber immer

    nur eimmal zur gleichen zeit.

    jetzt die frage, wie stelle ich das am besten an. ich hab mir dazu schon mal

    gedanken gemacht. das muss doch irgendwie mit einer prozess id zu machen

    sein.

    würde mich freuen, wnn mich jemand in die richtige richtung leiten könnte.

    ciao TinTin

  8. ja ja noch ne frage...

    wie kann ich die einstellungen des aktuellen std. drucker auslesen,

    diese ändern (z.b. hoch- in querformat ändern), mit diesen einstellungen

    eine *.txt datei ausdrucken (querformat) und danach die standard einstellungen

    wieder herstellen.

    die *.txt datei ist eine log datei und muss immer quer gedruckt werden.

    den ausdruck wollte ich mit ShellExecute() realiseren nur will ich nicht vor dem druck

    den drucker um konfigurieren. das soll mein programm tun.

    ich hoffe ich hab mich nicht zu kompliziert ausgedrückt.

    ;)

  9. hi,

    ich hab da so einen plan. ich suche eine möglichkeit einen weiteren eintrag

    in das kontextmenü des IE oder besser der standard browsers einzufügen,

    der es mir erlaubt, wenn ein hyperlink mit der rechten maustaste angeklickt

    wird, diesen in das Clipboard zu kopieren und von dort aus weiter zu verarbeiten.

    z.b. in eine downloadliste einfügen.

    hat jemand ne ahnung wie man sie da reinhängen kann, ich bin bei meinen

    recherchen noch nicht so weit gekommen...

    Ciao TinTin

  10. Original geschrieben von Shlo

    einfach BIF_NEWDIALOGSTYLE Flag setzen und halleluja!... ist ein Wunder geschehen

    ...aber auch nur ab der 5.x version der shell32.dll (afaik)...

    hab das problem gelöst, siehe oben, bin aber noch an einer anderen lösund daran,

    ok ich will mir nur ne eigene klasse basteln, aber manche dinge sollte man mal gemacht haben. wenns fertig ist, dann sag ich bescheid. warscheinlich kommen aber eh noch fragen meinerseits zu diesem thema.

    danke erstmal für die infos...

    ...ciao TinTin

  11. salut,

    hab wieder mal ne kurze frage. kann denn 'SHBrowseForFolder' dialog erweitern?

    ich würde gerne einen möglichkeit einbauen, mit der man an der angewähleten stelle

    im baum einen neuen ordner anlegen kann. ich hab das schon ein paar mal bei anderen

    programmen gesehen.

    ist das überhaupt möglich? und wenn nicht, gibt es eine andere möglichkeit soetwas

    zu realiseren?

    
    char cPath[MAX_PATH] = {'\0'};
    
    BROWSEINFO bi = {0};
    
    bi.hwndOwner = m_hWnd;
    
    bi.ulFlags = BIF_EDITBOX;
    
    LPITEMIDLIST lpIDList = ::SHBrowseForFolder(&bi);
    
    if(NULL != lpIDList)::SHGetPathFromIDList(lpIDList, cPath);
    
    

    so sieht mein bisheriger code aus. eventuell kann man was mit dem editfeld anfangen.

    hab aber bisher noch nicht gefunden wie mann damit etwas vernünfitiges anstellt.

    ciao TinTin

  12. so, hab was zu den threads gefunden, weiss aber nicht genau, wie ich jetzt meinen

    programmaufruf da rein bekomme.

    
    HANDLE CreateThread(
    
      LPSECURITY_ATTRIBUTES lpThreadAttributes,  // pointer to security attributes
    
      DWORD dwStackSize,                         // initial thread stack size
    
      LPTHREAD_START_ROUTINE lpStartAddress,     // pointer to thread function
    
      LPVOID lpParameter,                        // argument for new thread
    
      DWORD dwCreationFlags,                     // creation flags
    
      LPDWORD lpThreadId                         // pointer to receive thread ID
    
    );
    
    
    muss ich zuerst mit CreateTread() einen Thread erstellen und das Handle was ich dann bekomme, zum erstellen eines neuen prozesses nutzen, oder kann ich den programmaufruf auch direkt mit CreateThread() erschlagen???
    LPTHREAD_START_ROUTINE lpStartAddress,     // pointer to thread function

    der sinn und zweck dieser zeile bleibt mir etaws verborgen.

    kann mir jemand dazu einen tip geben???

    ciao TinTin

  13. Original geschrieben von Guybrush Threepwood

    Vielleicht interresiert dich dabei auch dieses Thema.

    ich hab den thread schon gesehen und in einen anderen version verwendet.

    mein vorrangiges problem ist, dass ich das erste programm mit dem der aufruf

    gestartet wird, wärend das 2. programm läuft, nicht benutzen kann.

    wie kann ich denn den aufruf starten, so dass ich mit beiden programmen arbeiten kann???

    die geschichte mit der CPU auslastung hab ich schon gesehen und an einer anderen stelle gelöst...

    ciao TinTin

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...