Win32-Fenster mit Button

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Win32-Fenster mit Button

    Hallo!
    Ich versuche jetzt schon seid 2 Stunden per google herauszufinden, wie man einen Button codet.
    Man findet echt nur noch wie man es mit der Toolbox macht.... -.-
    Ich will das aber richtig programmieren!
    Ich glaube ich weiß nicht so, wo das hin muss....
    Weil eigentlich habe ich das erstellen, denke ich jeden falls, drauf....
    Das Ergebnis bei meinem Quelltext ist, dass ein Fenster erstellt wird. - Ohne Button...
    Hier mal mein versuchter Quelltext: (Sorry, ist noch eine Messagebox usw. dabei....)

    Quellcode

    1. #include <windows.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include <tchar.h>
    5. static TCHAR szWindowClass[] = _T("win32app");
    6. static TCHAR szTitle[] = _T("Lernen043");
    7. #define ID_BEISPIELBUTTON 4001
    8. static TCHAR szBla[] = _T("BUTTON");
    9. static TCHAR szBla2[] = _T("BEISPIELTEXT");
    10. HINSTANCE hInst;
    11. LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    12. int WINAPI WinMain(HINSTANCE hInstance,
    13. HINSTANCE hPrevInstance,
    14. LPSTR lpCmdLine,
    15. int nCmdShow)
    16. {
    17. WNDCLASSEX wcex;
    18. wcex.cbSize = sizeof(WNDCLASSEX);
    19. wcex.style = CS_HREDRAW | CS_VREDRAW;
    20. wcex.lpfnWndProc = WndProc;
    21. wcex.cbClsExtra = 0;
    22. wcex.cbWndExtra = 0;
    23. wcex.hInstance = hInstance;
    24. wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    25. wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
    26. wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    27. wcex.lpszMenuName = NULL;
    28. wcex.lpszClassName = szWindowClass;
    29. wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
    30. if (!RegisterClassEx(&wcex))
    31. {
    32. MessageBox(NULL,
    33. _T("Call to RegisterClassEx failed!"),
    34. _T("Win32 Guided Tour"),
    35. NULL);
    36. return 1;
    37. }
    38. hInst = hInstance;
    39. HWND hWnd = CreateWindow(
    40. szWindowClass,
    41. szTitle,
    42. WS_OVERLAPPEDWINDOW,
    43. CW_USEDEFAULT, CW_USEDEFAULT,
    44. 500, 100,
    45. NULL,
    46. NULL,
    47. hInstance,
    48. NULL
    49. );
    50. HWND hButton;
    51. hButton = CreateWindow (szBla,
    52. szBla2,
    53. BS_PUSHBUTTON | WS_VISIBLE | WS_CHILD,
    54. 90, 150,
    55. 95, 40,
    56. hWnd,
    57. (HMENU)ID_BEISPIELBUTTON,
    58. hInst,
    59. NULL
    60. );
    61. if (!hWnd)
    62. {
    63. MessageBox(NULL,
    64. _T("Call to CreateWindow failed!"),
    65. _T("Win32 Guided Tour"),
    66. NULL);
    67. return 1;
    68. }
    69. ShowWindow(hWnd,
    70. nCmdShow);
    71. UpdateWindow(hWnd);
    72. MSG msg;
    73. while (GetMessage(&msg, NULL, 0, 0))
    74. {
    75. TranslateMessage(&msg);
    76. DispatchMessage(&msg);
    77. }
    78. return (int) msg.wParam;
    79. }
    80. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    81. {
    82. switch (message)
    83. {
    84. case WM_KEYDOWN:
    85. {
    86. switch (wParam)
    87. {
    88. case VK_ESCAPE:
    89. {
    90. int msgboxID = MessageBox(
    91. NULL,
    92. (LPCWSTR)L"Möchten sie das Programm wirklich beenden?",
    93. (LPCWSTR)L"Programm Schließen",
    94. MB_ICONWARNING | MB_YESNO);
    95. switch (msgboxID)
    96. {
    97. case IDYES:
    98. PostQuitMessage (0);
    99. return(0);
    100. break;
    101. case IDNO:
    102. return(0);
    103. break;
    104. }
    105. }break;
    106. }break;
    107. case WM_DESTROY:
    108. {
    109. PostQuitMessage(0);
    110. }break;
    111. default:
    112. {
    113. return DefWindowProc(hWnd, message, wParam, lParam);
    114. }break;
    115. }
    116. }
    117. return 0;
    118. }
    Alles anzeigen
  • C oder C++ bei Windows? Da geht Microsoft eh seinen eigenen Weg.

    Ja, dein Quelltext ist C für Windows, so wie Microsoft das sieht. Hab das Tutorial nur überflogen, aber das sieht auch nach C für Windows aus.
    Das Tutorial ist aber auch für andere Compiler geeignet.

    Sollte ich etwas übersehen haben, exakt die Position beschreiben - da wird schon eine Möglichkeit sein.


    Der Begriff 'szWindowClass[]' aus der WinAPI ist nicht mit dem 'class' aus C++ eng verwandt :!:
    Als Windows erschaffen wurde hatte Microsoft mit C++, so wie wir das heute verstehen, nicht viel am Hut :rolleyes:

    Ausserdem ist der Suchbegriff 'WinAPI tutorial' nicht nur auf C oder C++ beschränkt. Da gibt es auch noch andere Sprachen.

    MfG bcc-fan

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von bcc-fan ()