Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]1417[/thread]

Winapi, MFC oder doch das gute alte Perl/Tk :)

Leser: 1


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
Robby
 2003-11-19 15:54
#13201 #13201
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich wollte mal eure Meinung/Erfahrungen hören.

Ich hab schon etliche Programme mit Perl/Tk geschrieben. Es geht einfach und schnell, aber leider stöst man auch ruck zuck an die Grenzen (Tray Icon, Icons vor dem Menüeintrag, ...)

Also hab ich angefangen mit C++ und der Win API etwas zu basteln. Ein Programm, welches in der System Tray (unten rechts) sitzt und beim rechtklick öffnet sich ein Menü mit Programmen die ich öffnen kann usw.

Jetzt wollte ich ein Textfeld mit in dieses Menü packen, wo ich die Telefonnummer eingeben kann und er Poppt mir den Namen usw. in einer Balloon Message aus....und schon war ich wieder an der Grenze der WINAPI...zwar kann man es machen, aber keiner kann mir sagen wie...


Meine eigentliche Frage: :)
1) Lohnt es sich mit MFC anzufangen oder habt ihr schon schlechte Erfahrungen gemacht? Ich hab mir mal Beispiele runtergeladen und versteh nur Bahnhof. Und mit dem Visual C++ meinen Code in der Oberfläche hinzuklicken find ich auch nicht so prickelnd...
2) Oder wie schreibt ihr eure Windows-Programme?

Gruß
Robby
Kaum macht man es richtig - schon funktioniert es!
esskar
 2003-11-19 16:15
#13202 #13202
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
1) man kann mit WinApi alles machen, was man auch mit MFC machen kann, da MFc ja nur ein Wrapper der Winapi ist
2) ich benutze ausschließlich nur winapi!
3) wenn du einen eintrag im menu dazu machst, musst du bei AppendMenu MF_OWNERDRAW setzten und als pointer ein HWND zu einem editControl mitgeben
Robby
 2003-11-19 16:42
#13203 #13203
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,19.11.2003, 15:15]3) wenn du einen eintrag im menu dazu machst, musst du bei AppendMenu MF_OWNERDRAW setzten und als pointer ein HWND zu einem editControl mitgeben[/quote]
kann ich das nochmal langsam zum mitschreiben bekommen? :D
Hast Du da evtl. ein Beispiel?

hier mal ein Stück vom Code wie ich beispielsweise den Exit-Button hinzufüge. Was muss ich da ändern, dass es eine Eingabebox wird?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
		bitmappath = "icons/exit.bmp";
strcpy(bitmap,bitmappath.c_str());
hBmp_Install = LoadBitmapFile(bitmap);

mii.fMask = MIIM_TYPE | MIIM_ID;
mii.fType = MFT_STRING;
lstrcpy (string, "exit");
mii.dwTypeData = string;
mii.cch = lstrlen (string);
mii.wID = IDM_EXIT;
InsertMenuItem (hpopup, IDM_EXIT, TRUE, &mii);
SetMenuItemBitmaps(hpopup, IDM_EXIT, TRUE, hBmp_Install, hBmp_Install);
Kaum macht man es richtig - schon funktioniert es!
esskar
 2003-11-19 16:53
#13204 #13204
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
HWND controlhwnd = handle zu einem editcontrol

bitmappath = "icons/exit.bmp";
hBmp_Install = LoadBitmapFile(bitmap.c_str());

mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_DATA;
mii.fType = MFT_OWNERDRAW;
mii.wID = IDM_EXIT;
mii.dwItemData = ( ULONG_PTR)controlhwnd;
InsertMenuItem (hpopup, IDM_EXIT, TRUE, &mii);
SetMenuItemBitmaps(hpopup, IDM_EXIT, TRUE, hBmp_Install, hBmp_Install);


so ungefähr...
coax
 2003-11-19 17:47
#13205 #13205
User since
2003-08-11
457 Artikel
BenutzerIn
[default_avatar]
Neben den WinAPI-Modulen und Tk gibt es auch wxPerl. Ich habe nur leider noch nicht die Zeit gefunden mich auch damit zu beschaeftigen, sieht aber sehr viel versprechend aus.
Vielleicht nimmt sich ja mal jemand der Sache an und berichtet ein wenig ueber die Handhabung.
,,Das perlt aber heute wieder...'' -- Dittsche
Robby
 2003-11-19 17:52
#13206 #13206
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,19.11.2003, 15:53]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
HWND controlhwnd = handle zu einem editcontrol

bitmappath = "icons/exit.bmp";
hBmp_Install = LoadBitmapFile(bitmap.c_str());

mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_DATA;
mii.fType = MFT_OWNERDRAW;
mii.wID = IDM_EXIT;
mii.dwItemData = (  ULONG_PTR)controlhwnd;
InsertMenuItem (hpopup, IDM_EXIT, TRUE,  &mii);
SetMenuItemBitmaps(hpopup, IDM_EXIT, TRUE, hBmp_Install, hBmp_Install);


so ungefähr...[/quote]
ich hab das mal versucht, aber er zeigt nur eine leere Fläche an,
kannst Du mir noch sagen ob Du den Fehler siehst?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
HWND MeinControl = CreateWindow("EDIT","",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
1,1,50,20,
hwnd,hpopup,
hInstance, NULL);

mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_DATA;
mii.fType = MFT_OWNERDRAW;
mii.wID = IDM_EDITBOX;
mii.dwItemData = (ULONG_PTR)MeinControl;
InsertMenuItem (hpopup, IDM_EDITBOX, TRUE, &mii);


Hast Du Dir eigentlich alles selber beigebracht und wo hast Du die ganzen Informationen herbekommen? Gibts da spezielle Seiten die Du empfehlen kannst (speziell Winapi) ??
Kaum macht man es richtig - schon funktioniert es!
esskar
 2003-11-19 18:10
#13207 #13207
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich les immer auf msdn.microsoft.com ...

du musst dem edit-control ein papa fenster geben... also das menu und es auch an die richtige stelle zeichnen
Robby
 2003-11-19 18:26
#13208 #13208
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,19.11.2003, 17:10]du musst dem edit-control ein papa fenster geben... also das menu und es auch an die richtige stelle zeichnen[/quote]
lass es mich mal so ausdrücken:
ich weiß genau was Du meinst aber ich bin irgendwie zu doof dazu :D

das kommt aus der MSDN
Code: (dl )
1
2
3
4
5
6
7
8
9
            hwndEdit = CreateWindow("EDIT",      // predefined class 
NULL, // no window title
WS_CHILD | WS_VISIBLE | WS_VSCROLL |
ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL,
0, 0, 0, 0, // set size in WM_SIZE message
hwnd, // parent window
(HMENU) ID_EDITCHILD, // edit control ID
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL); // pointer not needed



also lieg ich doch mit dem

Code: (dl )
1
2
3
4
5
6
7
    	MeinControl = CreateWindow("EDIT","",
WS_CHILD | WS_VISIBLE | WS_BORDER | ES_AUTOHSCROLL,
1,1,50,20,
hwnd,
hpopup,
(HINSTANCE) GetWindowLong(hwnd, GWL_HINSTANCE),
NULL);


nich gaaaaaanz falsch...oder???
Kaum macht man es richtig - schon funktioniert es!
esskar
 2003-11-19 18:46
#13209 #13209
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
ich sagte nicht, das es leicht ist... :)

hab es schonmal gemacht; code liegt aber auf der arbeit...
Robby
 2003-11-19 18:56
#13210 #13210
User since
2003-08-11
409 Artikel
BenutzerIn
[default_avatar]
[quote=esskar,19.11.2003, 17:46]ich sagte nicht, das es leicht ist... :)

hab es schonmal gemacht; code liegt aber auf der arbeit...[/quote]
Könntest Du mir den Code evtl. mailen? *lieb frag* :D :D: D
-> winter_robert@gmx.de
Kaum macht man es richtig - schon funktioniert es!
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2003-11-19 15:54.