simples WinAPI programm



  • Wozu brachst Du

    #include "stdafx.h"
    

    wenn Du doch nicht MFC machst? Lasse den Header weg und stelle als Projekt einfach eine Win32-Applikation ein. Schon gehts.

    Trotzdem noch ein paar Änderungen:

    statt:

    char Name [] = "Ein eigenes Fenster";
    

    besser

    TCHAR Name [] = "Ein eigenes Fenster";
    

    und

    "Titelleiste"
    

    besser

    TEXT("Titelleiste")
    

    Blackbird



  • zufaulzumeinloggen schrieb:

    Wozu brachst Du

    #include "stdafx.h"
    

    wenn Du doch nicht MFC machst? Lasse den Header weg und stelle als Projekt einfach eine Win32-Applikation ein. Schon gehts.

    Diese Datei hat NICHTS mit MFC zu tun. Sie wird für die vorcompilierten Header
    verwendet und kann über die Projekteinstellungen deaktiviert werden. 😉



  • das mit dem Unicode steht vielleicht in der stdafx.h datei



  • Redhead, hast recht. Hab's verwechselt. Ist noch zu früh für mich 🙂

    #define STRICT
    #include <string.h>
    

    kann auch weg.

    Blackbird



  • Okay, ich habs jetzt verbessert.

    Aber ich bekomme immer noch eine Fehlermeldung:

    error C2440: 'initializing' : cannot convert from 'const char [20]' to 'TCHAR []'

    obwohl ich

    TCHAR Name [] = "Ein eigenes Fenster";

    geschrieben hab



  • TCHAR Name [] = L"Ein eigenes Fenster";
    


  • *zufaulzumeinloggen* hat's ja schon gesagt.
    TCHAR Name [] = TEXT("Ein eigenes Fenster");
    Kurt



  • okay,

    ich habs jetzt so:

    #define STRICT
    #undef _UNICODE
    #include "stdafx.h"
    #include <windows.h>
    
    LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
    TCHAR Name [] = TEXT("Ein eigenes Fenster");
    
    int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                       PSTR szCmdLine, int iCmdShow)
    {
       HWND       hWnd;
       MSG        msg;
       WNDCLASS   wc;
       wc.style         =  CS_HREDRAW | CS_VREDRAW;
       wc.lpfnWndProc   =  WndProc;
       wc.cbClsExtra    =  0;
       wc.cbWndExtra    =  0;
       wc.hInstance     =  hInstance;
       wc.hCursor       =  LoadCursor(NULL,IDC_ARROW);
       wc.hIcon         =  LoadIcon(NULL,IDI_APPLICATION);
       wc.hbrBackground =  (HBRUSH)GetStockObject(WHITE_BRUSH);
       wc.lpszClassName =  Name;
       wc.lpszMenuName  =  NULL;
       RegisterClass(&wc);
       hWnd = CreateWindow(Name,
                           TEXT("Titelleiste"),
                           WS_OVERLAPPEDWINDOW,
                           CW_USEDEFAULT,          /* X-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Y-Position auf dem Monitor */
                           CW_USEDEFAULT,          /* Fensterbreite              */
                           CW_USEDEFAULT,          /* Fensterhoehe               */
                           NULL,
                           NULL,
                           hInstance,
                           NULL);
       ShowWindow(hWnd, iCmdShow);
       UpdateWindow(hWnd);
       while (GetMessage(&msg, NULL, 0, 0))
       {
          TranslateMessage(&msg);
          DispatchMessage(&msg);
       }
       return msg.wParam;
    }
    
    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
       switch (message)
       {
    	  case WM_DESTROY:
          {
             PostQuitMessage(0);
             return 0;
          }
       }
       return DefWindowProc(hWnd, message, wParam, lParam);
    }
    

    aber jetzt bekomme ich sogar 14 fehlermeldungen:

    Linking...
    window.obj : error LNK2019: unresolved external symbol __imp__DispatchMessageW@4 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__TranslateMessage@4 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__GetMessageW@16 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__UpdateWindow@4 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__ShowWindow@8 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__CreateWindowExW@48 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__RegisterClassW@4 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__GetStockObject@4 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__LoadIconW@8 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__LoadCursorW@8 referenced in function _WinMain@16
    window.obj : error LNK2019: unresolved external symbol __imp__DefWindowProcW@16 referenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
    window.obj : error LNK2019: unresolved external symbol __imp__PostQuitMessage@4 referenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
    MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function _mainCRTStartup
    Debug\window.exe : fatal error LNK1120: 13 unresolved externals
    


  • hmm, ich habs mal mit dem dev-cpp versaucht und dort hats geklappt 😉



  • mit

    #include "stdafx.h"
    

    ?

    Statt

    #define STRICT
    #undef _UNICODE
    #include "stdafx.h"
    #include <windows.h>
    

    genügt

    #include <windows.h>
    

    Vorkompilierte Header brauchst Du nicht, weil sie nicht zu Deinem Projekt pass(t)en.

    Blackbird


Anmelden zum Antworten