Visual Studio C++

0

Można disasemblować kod c++, , znaczy przerobić c++ na asm, powiedzmy w VS 2010?

0

Tak. Za wygenerowanie listingu podczas kompilacji odpowiada opcja "Assembler Output" w konfiguracji projektu w zakładce "C/C++" -> "Output files". Dodatkowo podczas debugowania możesz obejrzeć listing w oknie wywołanym przez "Debug" -> "Windows" -> "Disassembly".

0

Aha, miałem jeszcze zapytać czy w tym Visual można projektować okna dialogowe
w tym starym formacie... potem to wisi w pliku .rc - takie coś:

DLG_OPEN DIALOG 23, 0, 337, 248
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Otwórz"
FONT 8, "Helv"
BEGIN
	LTEXT "&Nazwa pliku:", 1090, 6, 6, 80, 9
	EDITTEXT 1152, 6, 16, 80, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP
	LISTBOX ID_FLIST, 6, 32, 80, 152, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
	LTEXT "&Katalogi:", -1, 92, 6, 80, 9
	CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 92, 18, 80, 9
	LISTBOX 1121, 92, 32, 80, 152, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP
	LTEXT "&Wyświetl pliki typu:", 1089, 6, 194, 80, 9
	CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 204, 80, 35
	LTEXT "&Stacje dysków:", 1091, 92, 194, 80, 9
...

podobnie menu:

ID_MENU MENU
BEGIN
	POPUP "&Pliki"
	BEGIN
		MENUITEM "&Nowy", CM_NOWY
		MENUITEM "&Odczytaj...\t Ctrl+F3", CM_ODCZYT
		MENUITEM "Za&pisz\t Ctrl+F2", CM_ZAPIS
		MENUITEM "Zapisz &jako...", CM_ZAPISZNA
		MENUITEM SEPARATOR
		MENUITEM "S&tyl...", CM_KOLORY
		MENUITEM "Obrazk&i...", CM_OBRAZKI
		MENUITEM SEPARATOR
		MENUITEM "P&rojektowanie strony", CM_PODGLAD
		MENUITEM "Drukuj...", CM_DRUKUJ
		MENUITEM "&Ustawienia drukarki...", CM_PRINTSETUP
...
END

Da radę takie rzeczy w tym tworzyć?

0

Tak, jak najbardziej.

0

Da radę takie rzeczy w tym tworzyć?
Hyh. Pytasz czy można napisać taki plik i zapisać do .rc czy o możliwość wyklikania w designerze menu albo dialogu tak, by IDE wygenerowało odpowiedni kod .rc automatycznie?

Na pierwsze pytanie odpowiedź brzmi oczywiście tak, bo to można zrobić nawet w Notatniku.
IDE rozpozna czym jest plik .rc, i automatycznie wkompiluje zasoby do pliku wykonywalnego.

Na drugie pytanie odpowiedź brzmi tak, ale nie w wersji Express.

Przykładowa zrzutka z designera:
Przechwytywanie.jpg
i wygenerowany kod:

IDD_DIALOG1 DIALOGEX 0, 0, 255, 142
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Dialog"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
    DEFPUSHBUTTON   "OK",IDOK,198,121,50,14
    PUSHBUTTON      "Cancel",IDCANCEL,198,121,50,14
    PUSHBUTTON      "Button1",IDC_BUTTON1,168,21,50,14
    CONTROL         "",IDC_RICHEDIT21,"RichEdit20W",ES_AUTOHSCROLL | WS_BORDER | WS_TABSTOP,33,63,119,45
END

Ale w darmowej edycji musiałbyś ręcznie pisać .rc, brak jest designera (przynajmniej tak jest w VS2012).

0
Azarien napisał(a):

Da radę takie rzeczy w tym tworzyć?
Hyh. Pytasz czy można napisać taki plik i zapisać do .rc czy o możliwość wyklikania w designerze menu albo dialogu tak, by IDE wygenerowało odpowiedni kod .rc automatycznie?

No, nie wiem jak to tam teraz działa.
Nie myślałem o pisaniu tego w notatniku, bo tych współrzędnych, które tam figurują, raczej nie zamierzam zgadywać.

Kiedyś to się robiło wizualnie: stawiasz, rozciągasz, ustawiasz różne parametry tych kontrolek, itd.
Ale żadnego kodu w c++ to nie generowało - tylko to resource .rc.

Potem odpalało się to w programie bezpośrednio: CreateDialog,
albo pośrednio - z jakiegoś obiektu C++, który przechwytywał potem te komunikaty,
inicjował te kontrolki, i zgarniał na końcu wpisane dane.

Ja darmowych nie kupuję, chodzi mi np. o professional 2010,
ale nie wiem czy warto wpieprzać w ten biznes i dlatego pytam.

Ale jeśli to takie sprytne, to może potrafi takie coś:
mam już gotowy dialog w .rc i niech to stworzy mi z tego klasę w c++, albo przerobi na jakieś tam formy, czy na coś tam (np. klasę MFC...)
Potem ja dorzucam do tego tylko kilka funkcji - inicjalizacja, komunikaty, itp. no i gotowe.

Potrafi to tak?

1

Zatem co tam tworzyli przez te ostatnie 10 lat w tych wszystkich rewelacyjnych Visualach z MS?

Przecież tych Visual Studio wyszło chyba z 5 generacji w tym czasie!

Myślałem że MS dopracowali troszeczkę te narzędzia... przez całą dekadę, no a tu wychodzi że jednak nie za bardzo.

Co tam w ogóle jest - to działa jak te formy VCL z Borlanda?
Przecież to jest dziadostwo - dla każdego detalu: static, buton, edit, listbox, itd. tworzy zmienne.
I po cholerę to komu?

Przecież windows i tak trzyma już te okienka wewnątrz, a do komunikacji są funkcje - komunikaty:
LB_..., EM_..., WM_Notify z common ctrls, itd.

0

Przecież to jest dziadostwo - dla każdego detalu: static, buton, edit, listbox, itd. tworzy zmienne.
Nie rozumiem. Co ci to przeszkadza?

Jest MFC, które nie tworzy osobnej zmiennej na każdą kontrolkę.

2
plolek napisał(a):

Zatem co tam tworzyli przez te ostatnie 10 lat w tych wszystkich rewelacyjnych Visualach z MS?

VS to IDE do tworzenia różnego rodzaju aplikacji w wielu różnych językach, wzbogacone o narzędzia wspomagające tworzenie profesjonalnych aplikacji, a nie zabawka do wyklikiwania kontrolek i pisania w języku, który wygląda i zachowuje się jak jamnik z przybitymi deskami (chociaż to też jest możliwe).

Ja wychodzę z założenia, że lepiej czegoś nie używać niż się z tym męczyć.

1
Azarien napisał(a):

Przecież to jest dziadostwo - dla każdego detalu: static, buton, edit, listbox, itd. tworzy zmienne.
Nie rozumiem. Co ci to przeszkadza?

To znaczy że MS przez te całe 10 lat kopiuje i rozbudowuje coś w stylu VCL Borlanda?!
Kupa śmiecha.
Jaja powycinali programistom w MS? Zero inwencji, pomysłu i polotu...

Azarien napisał(a):

Jest MFC, które nie tworzy osobnej zmiennej na każdą kontrolkę.

Świetnie, ale tak pracowało się już z 15 lat temu... na 486 i win 95.

Nie wiem czy warto zaśmiecać sobie dysk tym... produktem reklamowym.

1 użytkowników online, w tym zalogowanych: 0, gości: 1