Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
WinstonCherchil
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
#1

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

04.04.2012, 17:05. Просмотров 690. Ответов 4
Метки нет (Все метки)

Начинал изучать 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++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 17:05
Ответы с готовыми решениями:

WIN API
Доброе время суток. Учусь в институте и дали сделать такую хрень: Реализовать...

Преимущество Win Api
Буквально вчера создал тему, где задал вопрос о средствах, с помощью которых...

Потоки win api
Здравствуйте. Такое задание: необходимо написать программу, которая в...

WIN API, кодировка
Доброго времени суток! Вот если написать: MessageBox(NULL,(LPCWSTR)...

win api точки входа
меня интересуют названия функция получения точки входа файла получения конца...

4
Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 17:14 #2
WinstonCherchil, Так, ты ему сам сказал, что длина строки 25 символов, а "Hello, World!!!" их гораздо меньше.
1
WinstonCherchil
7 / 7 / 2
Регистрация: 20.01.2011
Сообщений: 73
04.04.2012, 17:50  [ТС] #3
Спасибо. Это решает проблему. Мне надо быть внимательнее =))
0
Avazart
Эксперт С++
7717 / 5626 / 549
Регистрация: 10.12.2010
Сообщений: 25,321
Записей в блоге: 17
04.04.2012, 18:19 #4
Там кажется указываешь длину -1 и и винда сама определяет длину автоматически
1
Russian_Dragon
10 / 11 / 2
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 20:15 #5
Цитата Сообщение от WinstonCherchil Посмотреть сообщение
Спасибо. Это решает проблему. Мне надо быть внимательнее =))
Бывает, сам иногда в подобные засады попадал.
0
04.04.2012, 20:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2012, 20:15

Построение графика в Win Api
Требуется построить график по точкам. Все координаты даны. Не могу найти в...

Глобальное считывание комбинаций win api
Всем привет, есть такая штука как autoHotKey смысл ее действия это считывать...

Копирование файлов без win api
Добрый день. Что прошу: Мне нужно выполнить копирование моего (ехе) в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru