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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
WinstonCherchil
7 / 7 / 0
Регистрация: 20.01.2011
Сообщений: 73
#1

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

04.04.2012, 17:05. Просмотров 655. Ответов 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++
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2012, 17:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос DrawText win api - Мистика =) (C++):

WIN API - C++
Доброе время суток. Учусь в институте и дали сделать такую хрень: Реализовать приложения Win32API: 1. Окно в центре экрана с фоном...

WIN API, кодировка - C++
Доброго времени суток! Вот если написать: MessageBox(NULL,(LPCWSTR) &quot;Тест&quot;,(LPCWSTR)&quot;Системное сообщение&quot;, MB_OK); выведется...

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

Преимущество Win Api - C++
Буквально вчера создал тему, где задал вопрос о средствах, с помощью которых можно работать некоторым образом в командной строке. Нашлось...

win api точки входа - C++
меня интересуют названия функция получения точки входа файла получения конца файла (feof не подойдёт) и функция изменения точки входа. ...

Построение графика в Win Api - C++
Требуется построить график по точкам. Все координаты даны. Не могу найти в пространстве интернета, с помощью каких функций это можно...

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

Win Api ошибка undefined reference to - C++
пишу функцию BOOL OnCreate(HWND hwnd,LPCREATESTRUCT) { HDC hdc; hBitmap=(HBITMAP)LoadImage(NULL, &quot;IMG.bmp&quot;,IMAGE_BITMAP, 0,...

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

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

Win api GetDlgItemInt что за второй параметр - C++
второй параметр функции UINT WINAPI GetDlgItemInt( _In_ HWND hDlg, _In_ int nIDDlgItem, _Out_opt_ BOOL...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
04.04.2012, 20:15
Ответ Создать тему
Опции темы

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