WinApi EDIT control im Fenster skallieren - compile error

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

  • WinApi EDIT control im Fenster skallieren - compile error

    Hallo.
    Ich habe folgeden Code für einen kurzen Texteditor geschrieben

    Quellcode

    1. #include <windows.h>
    2. LPCSTR MainClassName = "Texteditor";
    3. // Zum Empfangen und Auswerten der messages
    4. LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam);
    5. int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    6. {
    7. // Generelle Fensterstruktur registrieren
    8. WNDCLASSEX wc;
    9. wc.cbSize = sizeof(WNDCLASSEX);
    10. wc.style = 0;
    11. wc.lpfnWndProc = WndProc;
    12. wc.cbClsExtra = 0;
    13. wc.cbWndExtra = 0;
    14. wc.hInstance = hInstance;
    15. wc.hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(0));
    16. wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    17. wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    18. wc.lpszMenuName = MAKEINTRESOURCE(1);
    19. wc.lpszClassName = MainClassName;
    20. wc.hIconSm = (HICON)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(0), IMAGE_ICON, 16, 16, 0);
    21. if(!RegisterClassEx(&wc))
    22. {
    23. MessageBox(NULL, "Konnte das Hauptfenster nicht registrieren!", "Fehler!", MB_ICONEXCLAMATION | MB_OK);
    24. return 0;
    25. }
    26. // Fenster erstellen
    27. HWND hWnd = CreateWindowEx(
    28. WS_EX_CLIENTEDGE,
    29. MainClassName,
    30. "Texteditor",
    31. WS_OVERLAPPEDWINDOW | WS_VSCROLL | WS_HSCROLL,
    32. CW_USEDEFAULT, CW_USEDEFAULT, 400, 300,
    33. NULL,
    34. NULL,
    35. hInstance,
    36. NULL
    37. );
    38. // Textbox ins Fenster setzen
    39. HWND hwndEdit = CreateWindowEx(
    40. NULL,
    41. "EDIT",
    42. "Gib was ein",
    43. WS_CHILD | WS_VISIBLE | ES_MULTILINE | ES_AUTOHSCROLL | ES_AUTOVSCROLL,
    44. 3, 3, 400, 300,
    45. hWnd,
    46. NULL,
    47. NULL,
    48. NULL
    49. );
    50. // Fenster anzeigen
    51. ShowWindow(hWnd, iCmdShow);
    52. // Auf Messages reagieren
    53. MSG wmsg;
    54. while( GetMessage(&wmsg, NULL, 0, 0) )
    55. {
    56. TranslateMessage(&wmsg);
    57. DispatchMessage(&wmsg);
    58. }
    59. return wmsg.wParam;
    60. }
    61. LRESULT CALLBACK WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
    62. {
    63. char string[255];
    64. switch (iMsg)
    65. {
    66. case WM_SIZE:
    67. MoveWindow(hwndEdit, 3, 3, wParam, lParam, true);
    68. break;
    69. case WM_CLOSE:
    70. DestroyWindow(hWnd);
    71. break;
    72. case WM_DESTROY:
    73. PostQuitMessage(0);
    74. return 0;
    75. case WM_COMMAND:
    76. switch(LOWORD(wParam))
    77. {
    78. case 11:
    79. LoadString(GetModuleHandle(NULL), 21, string, sizeof(string));
    80. MessageBox(hWnd, string, "Öffnen", MB_ICONINFORMATION);
    81. break;
    82. case 12:
    83. LoadString(GetModuleHandle(NULL), 22, string, sizeof(string));
    84. MessageBox(hWnd, string, "Speichern", MB_ICONINFORMATION);
    85. break;
    86. case 13:
    87. DestroyWindow(hWnd);
    88. break;
    89. }
    90. break;
    91. }
    92. // An Windows weitergeben und dessen Antwort als Rückgabewert zurück
    93. return DefWindowProc(hWnd, iMsg, wParam, lParam);
    94. }
    Alles anzeigen


    Problem 1

    Quellcode

    1. 55 C:\Dokumente und Einstellungen\sjBlack\Desktop\filebrowser\main.cpp [Warning] passing NULL used for non-pointer converting 1 of `HWND__* CreateWindowExA(DWORD, const CHAR*, const CHAR*, DWORD, int, int, int, int, HWND__*, HMENU__*, HINSTANCE__*, void*)'

    Wo zum Henker ist da jetzt der compile error?

    Wenn ich MoveWindow()

    Quellcode

    1. case WM_SIZE:
    2. //MoveWindow(hwndEdit, 3, 3, wParam, lParam, true);
    3. break;

    auskommentiere, compiliert es. Ich will aber, dass das EDIT control sich der Höhe und Breite des Hauptfensters anpasst.

    Problem 2
    hwndEdit ist als Aktualparameter von MoveWindow eigentlich nicht sichtbar.
    Wie ermittle ich an der Stelle das Handle des EDIT controls innerhalb des Fensters?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von sjBlack ()

  • Du kannst deine auch deinen eigenen Controls suchen auch wenn das nicht besonders elegant ist: FindWindow()/FindWindowEx(), EnumWindows()/EnumChildWindows(). Du hast auch keienen compile-Error, sondern nur eine Warnung (Er castet einmal NULL zu einer Zahl, weil der Parameter Zahl und nicht Zeiger erwartet). Wenn du nicht grade "Treat warnings as errors" oder so anhast sollte er das trotzdem machen. Was das mit der anderen Zeile zu tun hat weiß ich auch nicht, die scheint eigentlich ok zu sein.
    ~ mfg SeBa

    Ich beantworte keine PMs zu Computer-/Programmierproblemen. Bitte wendet euch an das entsprechende Forum.

    [Blockierte Grafik: http://i.creativecommons.org/l/by-sa/3.0/80x15.png]