Форум программистов, компьютерный форум CyberForum.ru

DrawText win api - Мистика =) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти max элемент и поменять его с последним (и ещё 3 задания) http://www.cyberforum.ru/cpp-beginners/thread538900.html
1. Дан одномерный массив размерностью 10. Найти max элемент и поменять его с последним. 2. Дан двумерный массив 10 на 10. Найти все отрицательные элементы расположенные выше главной диагонали и заменить из на 0. 3. Дан одномерный массив из 7 элементов, поменять местами max и min элементы. 4. Сгенерировать двумерный массив размерностью 8 на 8. Составить из случайных чисел в диапазоне Найти все...
C++ Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N Сколько коней можно без угроз друг другу расставить на шахматной доске размером M на N. ;) http://www.cyberforum.ru/cpp-beginners/thread538898.html
Генерировать последовательности C++
1. Генерировать все последовательности из 0 и 1 длины N, содержащих ровно К едениц. 2. Генерировать все последовательности из чисел 0,1,2,...,К-1 длины N. 3. Генерировать все последовательности из 0 и 1 длины N.
C++ Визуальное программирование на С++
Помогите решить задачки Visual C++. Заранее спасибо. 1. Транспонируйте произвольный двумерный массив, т.е. поменяйте нумерацию его элементов: A(I,J)=A(J,I). Дополнительные массивы не использовать. 2. Описать функцию NMin(A,N) (NMax(A,N)) целого типа, находящую номер минимального (максимального) элемента массива A (массив состоит из N вещественных чисел). С помощью этой функции найти номера...
C++ Расшифровать сообщение. http://www.cyberforum.ru/cpp-beginners/thread538870.html
Поступило сообщение, зашифрованное следующим образом: число,являющееся порядковым номером первой встречной в шифровке английской буквы в алфавите, означает, что из шифровки нужно выбирать лишь те буквы, позиция которых в шифровке кратна этому числу +1. Каждая встреченная в шифровке точка означает разделение между словами (пробел) в сообщении. Расшифровать сообщение. Входные данные - строка...
C++ Задачи на двумерный массив 1.Задана квадратная матрица. Поменять местами строку с максимальным элементом на главной диагонали со строкой с заданным номером m 2.Дана квадратная матрица найти сумму элементов главной диагонали. Помогите пожалуйста решить в с++,заранее благодарна подробнее

Показать сообщение отдельно
WinstonCherchil
 Аватар для WinstonCherchil
7 / 7 / 0
Регистрация: 20.01.2011
Сообщений: 73
04.04.2012, 17:05     DrawText win api - Мистика =)
Начинал изучать C++ на FreeBSD, собирал мейкфайлы и горя не знал. Полез в винде разбираться с её API, и начался дурдом. Вот код. Интересует строка 78.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <windows.h>
 
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT uMsg, 
        WPARAM wParam, LPARAM lParam);
 
 
int WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
        LPSTR lpCmdLine, int nCmdShow)
{
    MSG        Msg;
    HWND       hWnd;
    WNDCLASSEX WndClsEx;
    char ClsName[] = "MyClass";
    WndClsEx.cbSize        = sizeof(WNDCLASSEX);
    WndClsEx.style         = CS_HREDRAW | CS_VREDRAW;
    WndClsEx.lpfnWndProc   = WndProcedure;
    WndClsEx.cbClsExtra    = 0;
    WndClsEx.cbWndExtra    = 0;
    WndClsEx.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
    WndClsEx.hCursor       = LoadCursor(NULL, IDC_ARROW);
    WndClsEx.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
    WndClsEx.lpszMenuName  = NULL;
    WndClsEx.lpszClassName = ClsName;
    WndClsEx.hInstance     = hInstance;
    WndClsEx.hIconSm       = LoadIcon(NULL, IDI_APPLICATION);
    
    if(!RegisterClassEx(&WndClsEx)){
        MessageBox(NULL, "Error", "Error, RegisterClassEx", MB_OK);
        return 1;
    }
    hWnd = CreateWindow(ClsName,
              "Hello!",
              WS_OVERLAPPEDWINDOW,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              CW_USEDEFAULT,
              NULL,
              NULL,
              hInstance,
              NULL);
    if(!hWnd){
        MessageBox(NULL, "Error", "Error, RegisterClassEx", MB_OK);
        return 1;
    }
        ShowWindow(hWnd, SW_SHOWNORMAL);
    UpdateWindow(hWnd);
        while( GetMessage(&Msg, NULL, 0, 0) )
    {
             TranslateMessage(&Msg);
             DispatchMessage(&Msg);
    }
 
    return Msg.wParam;
}
 
LRESULT CALLBACK WndProcedure(HWND hWnd, UINT Msg,
               WPARAM wParam, LPARAM lParam)
{
    PAINTSTRUCT ps;
    HDC hdc;
    switch(Msg)
    {
    // If the user wants to close the application
    case WM_DESTROY:
        // then close it
        PostQuitMessage(WM_QUIT);
        break;
        case WM_PAINT:
            hdc = BeginPaint(hWnd, &ps);
            RECT rect;
            rect.bottom = 500;
            rect.left = 1;
            rect.right = 500;
            rect.top = 1;
            LPCTSTR text;
            text = "Hello, World!!!";
            DrawText(hdc, text, 25, &rect, DT_LEFT);
            EndPaint(hWnd, &ps);
        break;
    default:
        // Process the left-over messages
        return DefWindowProc(hWnd, Msg, wParam, lParam);
    }
    // If something was not done, let it go
    return 0;
}
Всё работает, но есть одна одна проблема вне моего понимания
DrawText() выводит не только текстовую переменную text, но и еще какую-то чушь. Как её выпилить?


Скриншот:
http://img546.imageshack.us/img546/5733/wtfapi.jpg

Uploaded with ImageShack.us

P.S. Среда NetBeans, Компилятор MinGW g++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru