ширина и высота границы окна в Win32 - как мне это получить?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
27
задан Stephen Hazel 10 January 2009 в 18:14
поделиться

3 ответа

GetWindowRect и , функции GetClientRect могут использоваться, вычисляет размер всех границ окна.

Suite101 имеет статью о изменение размеров окна и клиентской области хранения в знать размере .

Вот их пример кода:

void ClientResize(HWND hWnd, int nWidth, int nHeight)
{
  RECT rcClient, rcWind;
  POINT ptDiff;
  GetClientRect(hWnd, &rcClient);
  GetWindowRect(hWnd, &rcWind);
  ptDiff.x = (rcWind.right - rcWind.left) - rcClient.right;
  ptDiff.y = (rcWind.bottom - rcWind.top) - rcClient.bottom;
  MoveWindow(hWnd,rcWind.left, rcWind.top, nWidth + ptDiff.x, nHeight + ptDiff.y, TRUE);
}
39
ответ дан Weak to Enuma Elish 10 January 2009 в 18:14
поделиться
  • 1
    Это уязвимо для инжекции HTML. Например, obj.firm_url мог быть http://example.com/<script>alert("I'm evil");</script> – Flimm 11 May 2016 в 17:43

Я думаю, что Вы ищете, SM_CYCAPTION - это - высота строки заголовка. SM_CYBORDER высота горизонтальных краев окна.

11
ответ дан Head Geek 10 January 2009 в 18:14
поделиться
  • 1
    Да, я сделал и теперь это работает, спасибо. Но это переопределяет текстовый дисплей, определенный в моих моделях, и отображает " покажите фирму url" на заголовке столбца. Я don' t знают, существует ли путь вокруг этого, но я изменил " show_firm_url" к " Bio_link" и it' s весь штраф теперь. – Zeynel 22 December 2009 в 23:19

Главный Фанат дает подробный ответ: используйте GetSystemMetrics для складывания битов границы и подписи. Можно также сделать различие на ширине/высоте между GetWindowRect и GetClientRect. Это даст Вам общее количество всех подписей/границ/и т.д.

2
ответ дан 10 January 2009 в 18:14
поделиться
  • 1
    Я использую этот подход в своих системах, и хорошо работает. Существует таблица ссылки между правилом и пользовательские таблицы, и каждый пользователь может быть представителем к одному или нескольким правилам, и это управляет, суммированы. Относительно icanbeacoder' s комментарий, я думаю, что моделирование должно быть максимально подлежащим вычету. – dellasavia 20 January 2015 в 16:57
Другие вопросы по тегам:

Похожие вопросы: