Professional Documents
Culture Documents
This walkthrough shows how to create a traditional Windows W tym instruktażu pokazano, jak utworzyć tradycyjną aplikację
desktop application in Visual Studio. The example application klasyczną systemu Windows w programie Visual Studio. Przykładowa
you'll create uses the Windows API to display "Hello, Windows aplikacja, którą utworzysz, używa interfejsu API systemu Windows
desktop!" in a window. You can use the code that you develop do wyświetlania komunikatu „Witaj, pulpit systemu Windows!” w
oknie. Możesz użyć kodu opracowanego w tym instruktażu jako
in this walkthrough as a pattern to create other Windows
wzorca do tworzenia innych aplikacji klasycznych systemu Windows.
desktop applications.
The Windows API (also known as the Win32 API, Windows Windows API (znany również jako Win32 API, Windows Desktop API
Desktop API, and Windows Classic API) is a C-language-based i Windows Classic API) to oparta na języku C struktura do tworzenia
framework for creating Windows applications. It has been in aplikacji systemu Windows. Istnieje od lat 80. XX wieku i od
existence since the 1980s and has been used to create Windows dziesięcioleci był używany do tworzenia aplikacji Windows. Bardziej
applications for decades. More advanced and easier-to-program zaawansowane i łatwiejsze do zaprogramowania struktury zostały
frameworks have been built on top of the Windows API. For zbudowane w oparciu o interfejs API systemu Windows. Na przykład
example, MFC, ATL, the .NET frameworks. Even the most modern MFC, ATL, platformy .NET. Nawet najnowocześniejszy kod
Windows Runtime code for UWP and Store apps written in środowiska wykonawczego systemu Windows dla aplikacji UWP i
C++/WinRT uses the Windows API underneath. For more aplikacji Store napisany w języku C ++ / WinRT korzysta z interfejsu
API systemu Windows poniżej. Aby uzyskać więcej informacji na
information about the Windows API, see Windows API Index.
temat interfejsu API systemu Windows, zobacz Indeks interfejsu API
There are many ways to create Windows applications, but the
systemu Windows. Istnieje wiele sposobów tworzenia aplikacji dla
process above was the first. systemu Windows, ale powyższy proces był pierwszy.
Prerequisites Wymagania wstępne
Your project is now created and your source file is opened in the Twój projekt został utworzony, a plik źródłowy został otwarty w edytorze.
editor. To continue, skip ahead to Create the code. Aby kontynuować, przejdź od razu do tworzenia kodu.
To start a Windows desktop application Aby uruchomić aplikację komputerową Windows
Tak jak każda aplikacja C i aplikacja C ++ musi mieć główną funkcję jako
1. Just as every C application and C++ application must have punkt wyjścia, tak każda aplikacja komputerowa Windows musi mieć
a main function as its starting point, every Windows funkcję WinMain. WinMain ma następującą składnię.
desktop application must have
a WinMain function. WinMain has the following syntax.
Note Uwaga
2. Windows desktop programs require <windows.h>. <tchar.h> 2. Programy pulpitu Windows wymagają <windows.h>. <tchar.h> definiuje
defines the TCHAR macro, which resolves ultimately to wchar_t if makro TCHAR, które ostatecznie jest rozpoznawane jako wchar_t, jeśli
symbol UNICODE jest zdefiniowany w twoim projekcie, w przeciwnym razie
the UNICODE symbol is defined in your project, otherwise it jest rozpoznawany jako char. Jeśli zawsze budujesz z włączonym UNICODE,
resolves to char. If you always build with UNICODE enabled, you nie potrzebujesz TCHAR i możesz po prostu użyć bezpośrednio wchar_t.
don't need TCHAR and can just use wchar_t directly.
3. Along with the WinMain function, every Windows desktop 3. Oprócz funkcji WinMain każda aplikacja komputerowa systemu Windows
application must also have a window-procedure function. This musi mieć również funkcję procedury okna. Ta funkcja ma zwykle nazwę
function is typically named WndProc, but you can name it whatever WndProc, ale możesz ją nazwać dowolnie. WndProc ma następującą
you like. WndProc has the following syntax. składnię.
In this function, you write code to handle messages that the W tej funkcji piszesz kod obsługujący komunikaty, które aplikacja odbiera z
application receives from Windows when events occur. For example, if systemu Windows, gdy wystąpią zdarzenia. Na przykład, jeśli użytkownik
a user chooses an OK button in your application, Windows will send a wybierze przycisk OK w twojej aplikacji, system Windows wyśle do ciebie
message to you and you can write code inside your WndProc function wiadomość i możesz napisać kod wewnątrz funkcji WndProc, która wykona
wszystko, co jest odpowiednie. Nazywa się to obsługą zdarzenia.
that does whatever work is appropriate. It's called handling an event.
Obsługujesz tylko zdarzenia, które są istotne dla Twojej aplikacji.
You only handle the events that are relevant for your application.
Aby dodać funkcjonalność do funkcji WinMain
To add functionality to the WinMain function
1. In the WinMain function, you populate a structure of 1. W funkcji WinMain wypełniasz strukturę typu WNDCLASSEX. Struktura
type WNDCLASSEX. The structure contains information zawiera informacje o oknie: między innymi ikonę aplikacji, kolor tła okna,
about the window: the application icon, the background nazwę wyświetlaną na pasku tytułowym. Co ważne, zawiera wskaźnik
funkcji do procedury okna. Poniższy przykład przedstawia typową strukturę
color of the window, the name to display in the title bar,
WNDCLASSEX.
among other things. Importantly, it contains a function
pointer to your window procedure. The following example
shows a typical WNDCLASSEX structure.
2. Register the WNDCLASSEX with Windows so that it knows about your 2. Zarejestruj WNDCLASSEX w systemie Windows, aby wiedział o Twoim
window and how to send messages to it. Use oknie i jak wysyłać do niego wiadomości. Użyj funkcji RegisterClassEx i
the RegisterClassEx function and pass the window class structure as przekaż strukturę klasy okna jako argument. Makro _T jest używane,
an argument. The _T macro is used because we use the TCHAR type. ponieważ używamy typu TCHAR.
3. Now you can create a window. Use the CreateWindow function. 3. Teraz możesz utworzyć okno. Użyj funkcji CreateWindow.
This function returns an HWND, which is a handle to a window. A Ta funkcja zwraca HWND, który jest uchwytem do okna. Uchwyt
handle is somewhat like a pointer that Windows uses to keep przypomina nieco wskaźnik, którego system Windows używa do śledzenia
otwartych okien. Aby uzyskać więcej informacji, zobacz Typy danych
track of open windows. For more information, see Windows systemu Windows.
Data Types.
4. At this point, the window has been created, but we still need 4. W tym momencie okno zostało utworzone, ale nadal musimy powiedzieć
to tell Windows to make it visible. That's what this code does: systemowi Windows, aby je pokazał. To właśnie robi ten kod:
The displayed window doesn't have much content because you Wyświetlane okno nie ma zbyt dużej zawartości, ponieważ nie
haven't yet implemented the WndProc function. In other words, zaimplementowałeś jeszcze funkcji WndProc. Innymi słowy, aplikacja nie
obsługuje jeszcze komunikatów wysyłanych do niej przez system Windows.
the application isn't yet handling the messages that Windows is
now sending to it.
5. To handle the messages, we first add a message loop to 5. Aby obsłużyć komunikaty, najpierw dodajemy pętlę komunikatów, aby
listen for the messages that Windows sends. When the nasłuchiwać komunikatów wysyłanych przez system Windows. Gdy
application receives a message, this loop dispatches it to aplikacja odbiera komunikat, ta pętla wysyła go do funkcji WndProc w celu
obsługi. Pętla komunikatów przypomina następujący kod.
your WndProc function to be handled. The message loop
resembles the following code.
At this point, the WinMain function should resemble the following code. / W tym momencie funkcja WinMain powinna przypominać następujący
kod.
To add functionality to the WndProc function Aby dodać funkcjonalność do funkcji WndProc
1. To enable the WndProc function to handle the messages that 1. Aby umożliwić funkcji WndProc obsługę komunikatów odbieranych
the application receives, implement a switch statement. przez aplikację, zaimplementuj instrukcję switch.
To handle a WM_PAINT message, first call BeginPaint, then handle Aby obsłużyć komunikat WM_PAINT, najpierw wywołaj BeginPaint,
all the logic to lay out the text, buttons, and other controls in następnie obsłuż całą logikę, aby rozmieścić tekst, przyciski i inne
the window, and then call EndPaint. For the application, the kontrolki w oknie, a następnie wywołaj EndPaint. W przypadku
logic between the beginning call and the ending call displays aplikacji logika między wywołaniem początkowym a wywołaniem
końcowym wyświetla ciąg „Hello, pulpit Windows!” w oknie. W
the string "Hello, Windows desktop!" in the window. In the
poniższym kodzie funkcja TextOut służy do wyświetlania ciągu.
following code, the TextOut function is used to display the
string.
HDC in the code is a handle to a device context, which is used to HDC w kodzie jest uchwytem do kontekstu urządzenia, który jest
draw in the window's client area. Use używany do rysowania w obszarze roboczym okna. Użyj funkcji
the BeginPaint and EndPaint functions to prepare for and BeginPaint i EndPaint, aby przygotować i zakończyć rysowanie w
complete the drawing in the client area. BeginPaint returns a obszarze roboczym. BeginPaint zwraca uchwyt do kontekstu
urządzenia wyświetlającego używanego do rysowania w obszarze
handle to the display device context used for drawing in the
roboczym; EndPaint kończy żądanie malowania i zwalnia kontekst
client area; EndPaint ends the paint request and releases the
urządzenia.
device context.
An application typically handles many other messages. For Aplikacja zazwyczaj obsługuje wiele innych komunikatów. Na
example, WM_CREATE when a window is first created, przykład WM_CREATE, gdy okno jest tworzone po raz pierwszy, i
and WM_DESTROY when the window is closed. The following code WM_DESTROY, gdy okno jest zamknięte. Poniższy kod przedstawia
shows a basic but complete WndProc function. podstawową, ale kompletną funkcję WndProc.
Build the code Zbuduj kod
As promised, here's the complete code for the working Zgodnie z obietnicą, oto pełny kod działającej aplikacji.
application.
Aby zbudować ten przykład
To build this example
Usuń kod, który wprowadziłeś w HelloWindowsDesktop.cpp w
Delete any code you've entered in HelloWindowsDesktop.cpp in
edytorze. Skopiuj ten przykładowy kod, a następnie wklej go do
the editor. Copy this example code and then paste it HelloWindowsDesktop.cpp:
into HelloWindowsDesktop.cpp:
On the Build menu, choose Build Solution. The results of the W menu Kompiluj wybierz opcję Kompiluj rozwiązanie. Wyniki
compilation should appear in the Output window in Visual Studio. kompilacji powinny pojawić się w oknie danych wyjściowych w
programie Visual Studio.
To run the application, press F5. A window that contains the text "Hello, Aby uruchomić aplikację, naciśnij klawisz F5. Okno
Windows desktop!" should appear in the upper-left corner of the zawierające tekst „Hello, Windows desktop!” powinien
display. pojawić się w lewym górnym rogu wyświetlacza.
Congratulations! You've completed this walkthrough and built a Gratulacje! Ukończyłeś ten przewodnik i utworzyłeś
traditional Windows desktop application. tradycyjną aplikację komputerową dla systemu Windows.
Źródło: https://docs.microsoft.com/en-us/cpp/windows/walkthrough-creating-windows-desktop-applications-cpp?view=msvc-160