Festplattentraffic bei Windows-Anwendungen?



  • Da ich mir keinen teuren Microsoft-Compiler mit VisualStudio o.ä. leisten kann/will, versuche ich mich grade darin, auch so Fenster verwenden zu "dürfen". Allerdings fängt aus unerfindlichen Gründen meine Festplatte immer an zu "rattern", wenn ich ein solches Programm starte. Es klingt nach heftig schnellen Zugriffen... Dabei greife ich gar nicht auf die Festplatte zu.

    #include <windows.h>
    
    LRESULT CALLBACK myWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
        switch(uMsg) {
            case WM_CLOSE:
                ExitProcess(0);
                break;
            default:
                return CallWindowProc(DefWindowProc, hwnd, uMsg, wParam, lParam);
        }
    }
    
    void loop() {
        MSG msg;
        for(;;)
            while(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) > 0)
                if(GetMessage(&msg, NULL, 0, 0) > 0) {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);
                }
    }
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) {
        WNDCLASS wndclass;
        wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
        wndclass.lpfnWndProc = myWindowProc;
        wndclass.cbClsExtra = 0;
        wndclass.cbWndExtra = 0;
        wndclass.hInstance = GetModuleHandle(NULL);
        wndclass.hIcon = NULL;
        wndclass.hCursor = NULL;
        wndclass.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
        wndclass.lpszMenuName = NULL;
        wndclass.lpszClassName = "Sample window class";
        RegisterClass(&wndclass);
        HWND window = CreateWindow("Sample window class", "Sample window", WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN | WS_CLIPSIBLINGS |
                WS_MINIMIZEBOX, (GetSystemMetrics(SM_CXFULLSCREEN) - 800) / 2, (GetSystemMetrics(SM_CYFULLSCREEN) - 600) / 2, 800, 600, GetDesktopWindow(),
                NULL, GetModuleHandle(NULL), NULL);
        ShowWindow(window, SW_SHOW);
        loop();
    }
    

    Mache ich etwas falsch?



  • Nimm dir am besten das als Beispiel:

    http://www.winapi.net/index.php?inhalt=tipp1



  • Danke, hat geholfen! Das ist lustig, wenn ich in loop() den Part

    for(;;) 
        while(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) > 0) 
            if(GetMessage(&msg, NULL, 0, 0) > 0) {
    

    durch

    while(GetMessage(&msg, NULL, 0, 0)) {
    

    ersetze, kratzt er nicht mehr so.



  • Bei mir hat sich nur der CPU Lüfter schneller gedreht, weil dein gepostetes Programm 100% CPU Auslastung erzeugt. 🤡



  • UncleSniper schrieb:

    Danke, hat geholfen! Das ist lustig, wenn ich in loop() den Part

    for(;;) 
        while(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE) > 0) 
            if(GetMessage(&msg, NULL, 0, 0) > 0) {
    

    durch

    while(GetMessage(&msg, NULL, 0, 0)) {
    

    ersetze, kratzt er nicht mehr so.

    Was sollte der Blödsinn egentlich mit for(;;)? 😕


Anmelden zum Antworten