1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
#define UNICODE
#include <windows.h>
const unsigned short ID_UNDEFINED = 0; // Diese ID haben wir noch nicht vergeben, deswegen ungültig
const unsigned short ID_NEWFILE = 1; // es wurde auf Neue Datei geklickt ;)
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int nCmdShow)
{
// -- Obermenü --
// Das Dateinemü
AppendMenuW(hMenuTemp, MF_STRING, ID_NEWFILE, L"&Neu\tStrg + N"); //<- wichtig!!!!
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Öffnen ...\tStrg + 0"); // <- noch nicht definiert, kannst du machen vllt. Übung?
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Speichern\tStrg + S");
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Speichern unter ...");
AppendMenuW(hMenuTemp, MF_SEPARATOR, 0, NULL);
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Beenden\tStrg + Q");
AppendMenu(hMenu_, MF_POPUP, (UINT_PTR)hMenuTemp, L"&Datei");
hMenuTemp = CreateMenu();
// Das Bearbeitenmenü
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Rückgängig\tStr + Z");
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Wiederherstellen\tStr + Y");
AppendMenuW(hMenuTemp, MF_SEPARATOR, 0, NULL);
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Ausschneiden\tStr + X");
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Kopieren\tStr + C");
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Einfügen\tStr + V");
AppendMenuW(hMenuTemp, MF_SEPARATOR, 0, NULL);
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Alles auswählen\tStr + A");
AppendMenuW(hMenuTemp, MF_STRING, ID_UNDEFINED, L"&Alles auswählen\tStr + Shift + A");
AppendMenu(hMenu_, MF_POPUP, (UINT_PTR)hMenuTemp, L"&Bearbeiten");
hMenuTemp = CreateMenu();
// Informationen für das Fenster
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = static_cast<HBRUSH>(::GetStockObject((int)WHITE_BRUSH));
wndcls.hCursor = NULL;
wndcls.hIcon = NULL;
wndcls.hInstance = hInstance;
wndcls.lpfnWndProc = WindowProc;
wndcls.lpszClassName = L"app";
wndcls.lpszMenuName = NULL; // <= Menu rein
wndcls.style = CS_HREDRAW | CS_VREDRAW;
if(!::RegisterClassW(&wndcls))
return 1;
// Fenster erstellen
hWnd = ::CreateWindowW( L"app", L"Test" , WS_OVERLAPPEDWINDOW, 0, 0, 1280, 782, ::GetDesktopWindow(), hMenu_, hInstance, NULL);
if(!hWnd) // Fehler beim erstellen des Fensters
return 1;
::ShowWindow(hWnd, nCmdShow);
::UpdateWindow(hWnd);
while(::GetMessageW(&msg, NULL, NULL, NULL))
{
::TranslateMessage(&msg);
::DispatchMessageW(&msg);
}
return 0;
}
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) //<-- das wParam brauchen wir und das wird uns durch windows übergeben!
{
switch(uMsg)
{
case WM_CLOSE:
PostQuitMessage(0);
return 0;
case WM_COMMAND:
if(LOWORD(wParam) == ID_NEWFILE) // <-- Abfrage
MessageBox(hWnd, L"Sie haben auf Neu gedrückt!", L"Neu", MB_OK);
if(LOWORD(wParam) == ID_UNDEFINED)
MessageBox(hWnd, L"Ungültige ID", L"Neu", MB_OK);
};
return ::DefWindowProcW(hwnd, uMsg, wParam, lParam);
}
|