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

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

Восстановить пароль Регистрация
 
WinstonCherchil
 Аватар для WinstonCherchil
7 / 7 / 0
Регистрация: 20.01.2011
Сообщений: 73
04.04.2012, 17:05     DrawText win api - Мистика =) #1
Начинал изучать 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 - Мистика =)
Посмотрите здесь:

WIN API создание окна C++
WIN API, кодировка C++
C++ Win Api ошибка undefined reference to
Построение графика в Win Api C++
C++ WIN API
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Russian_Dragon
 Аватар для Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 17:14     DrawText win api - Мистика =) #2
WinstonCherchil, Так, ты ему сам сказал, что длина строки 25 символов, а "Hello, World!!!" их гораздо меньше.
WinstonCherchil
 Аватар для WinstonCherchil
7 / 7 / 0
Регистрация: 20.01.2011
Сообщений: 73
04.04.2012, 17:50  [ТС]     DrawText win api - Мистика =) #3
Спасибо. Это решает проблему. Мне надо быть внимательнее =))
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,604
Записей в блоге: 17
04.04.2012, 18:19     DrawText win api - Мистика =) #4
Там кажется указываешь длину -1 и и винда сама определяет длину автоматически
Russian_Dragon
 Аватар для Russian_Dragon
10 / 11 / 0
Регистрация: 18.02.2012
Сообщений: 140
04.04.2012, 20:15     DrawText win api - Мистика =) #5
Цитата Сообщение от WinstonCherchil Посмотреть сообщение
Спасибо. Это решает проблему. Мне надо быть внимательнее =))
Бывает, сам иногда в подобные засады попадал.
Yandex
Объявления
04.04.2012, 20:15     DrawText win api - Мистика =)
Ответ Создать тему
Опции темы

Текущее время: 11:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru