none
Visual Studio 2008 проблема после компиляции RRS feed

  • Вопрос

  • После компиляции приложения на windows 7 ни чего не отображаеться, хотя на Win XP всё нормально. Может ли проблема заключаться в ОС или всё же Я допутил где то ошибку.

    LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
    {
        int wmId, wmEvent;
        PAINTSTRUCT ps;
        HDC hdc;

        switch (message)
        {
        case WM_COMMAND:
            wmId    = LOWORD(wParam);
            wmEvent = HIWORD(wParam);
            // Parse the menu selections:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
            break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            PaintStudyExample(hWnd);//Мной добавлена строка
            EndPaint(hWnd, &ps);
            break;
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        return 0;
    }

    // Message handler for about box.
    INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
    {
        UNREFERENCED_PARAMETER(lParam);
        switch (message)
        {
        case WM_INITDIALOG:
            return (INT_PTR)TRUE;

        case WM_COMMAND:
            if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
            {
                EndDialog(hDlg, LOWORD(wParam));
                return (INT_PTR)TRUE;
            }
            break;
        }
        return (INT_PTR)FALSE;
    }
    void PaintStudyExample(HWND hWnd)//И вот эта процедура
    {
        HDC hdc;
       PAINTSTRUCT ps;
        RECT rc;
        int d, mx, my;

        hdc = BeginPaint(hWnd, &ps);
        if (hdc == NULL) return;
        GetClientRect(hWnd, &rc);

        int cx = rc.right - rc.left;
        int cy = rc.bottom - rc.top;

        if (cx>cy) { d =  cy/2; } else {d = cx/2; };
        mx = cx/2; my = cy/2;

        for (int i=d; i>1; i-=5)
           Rectangle(hdc, mx-i, my-i, mx+i, my+i);

       EndPaint(hWnd, &ps);
    }

    • Изменено Vicos-bv 19 сентября 2010 г. 12:01 Добавил
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 20:11 MSDN Forums consolidation (От:Visual Studio 2010 Launch в России)
    • Перемещено Abolmasov Dmitry 27 октября 2010 г. 10:55 (От:Разное)
    19 сентября 2010 г. 12:00

Ответы

  • попробуй в case WM_PAINT: убрать вызовы BeginPaint и EndPaint, так как в функции рисования они вызываются, или передавай в функцию hdc и ps

    • Помечено в качестве ответа Abolmasov Dmitry 9 ноября 2010 г. 10:30
    2 ноября 2010 г. 5:25