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

MFC WinApi для создания интерфейса - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Удалите из массива первую строку с максимальным элементом http://www.cyberforum.ru/cpp-beginners/thread1225689.html
удалите из массива A(n,m) первую строку с максимальным элементом(считается,что в массиве несколько максимальных элементов).
C++ Функция, которая возвращает разность двух целых чисел написать функцию, которая возвращает разность двух целых чисел, полученных в качестве аргумента. в Visual Studio 2010 Express не понимаю вообще С++.... http://www.cyberforum.ru/cpp-beginners/thread1225687.html
SFML Ошибка при подключении sfml
Всем привет,пытаюсь подключить библиотеку sfml но не выходит,выдает такие ошибки(на данный момент пробовал visual studio 2010,до этого пробовал 2013 тоже не получилось) в чем может быть причина? 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "__declspec(dllimport) public: virtual __thiscall sf::RenderWindow::~RenderWindow(void)" (__imp_??1RenderWindow@sf@@UAE@XZ) в...
Создать функцию, формирующую массив из двух массивов - параметров C++
Функция, формирующая массив, каждый элемент которого равен минимальному из соответствующих значений двух других массивов – параметров. #include <iostream>; using namespace std; void mass_min (int *mass1, int *mass2, int n) { int i, mass; for (i=0; i<n; i++)
C++ Неправильно записывается бинарник http://www.cyberforum.ru/cpp-beginners/thread1225676.html
#include <iostream> #include <string> #include <iomanip> #include <fstream> #include <stdlib.h> using namespace std; class Good { public:
C++ Написать класс «множество» – наследник класса «массив» Ребята может есть что-то прошу помощи. Написать класс «множество» – наследник класса «массив» (множество понимается в привычном смысле – неупорядоченный набор уникальных элементов известной мощности). В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами, копирования), деструктор, ввод с клавиатуры, вывод на экран (в виде методов... подробнее

Показать сообщение отдельно
Psilon
Master of Orion
 Аватар для Psilon
5743 / 4691 / 619
Регистрация: 10.07.2011
Сообщений: 14,162
Записей в блоге: 5
Завершенные тесты: 4
11.07.2014, 03:01     MFC WinApi для создания интерфейса
gazlan, класс.

Овальная кнопка на MFC:
Кликните здесь для просмотра всего текста
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
    // MyBtn.cpp : implementation file
    //
     
    #include "stdafx.h"
    #include "MyBtn.h"
     
    #include "MemDC.h"
     
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
     
    /////////////////////////////////////////////////////////////////////////////
    // CMyBtn
     
    CMyBtn::CMyBtn()
    {
    }
     
    CMyBtn::~CMyBtn()
    {
    }
     
     
    BEGIN_MESSAGE_MAP(CMyBtn, CButton)
    //{{AFX_MSG_MAP(CMyBtn)
    //}}AFX_MSG_MAP
    END_MESSAGE_MAP()
     
    /////////////////////////////////////////////////////////////////////////////
    // CMyBtn message handlers
     
    void CMyBtn::SetRound(void)
    {
    HRGN rgn;
    CRect wrect;
    GetClientRect(&wrect);
    SetWindowRgn( NULL, FALSE );
    rgn = CreateEllipticRgn( wrect.left, wrect.top,
    wrect.right, wrect.bottom );
     
    SetWindowRgn(rgn, TRUE);    
    }
     
    void CMyBtn::GradientFill (CDC* pDC, CRect* pRect)
    {
    CBrush* pBrush[64];
     
    for (int i=0; i<64; i++)
    {
    pBrush[i] = new CBrush (RGB (0, 0, 255 - (i * 4)));
    }
     
    int nWidth = pRect->Width ();
    int nHeight = pRect->Height ();
    CRect rect;
     
    for (i=0; iFillRect (&rect, pBrush[(i * 63) / nHeight]);
    }
    for (i=0; i<64; i++)
    delete pBrush[i];
    }
    void CMyBtn::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
    {
    // TODO: Add your code to draw the specified item
    CRect Rect = lpDrawItemStruct->rcItem;
    CDC *pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
    CRgn rgn;
    CRect rect;
    rect = Rect;
    UINT state = lpDrawItemStruct->itemState;
    CMemDC  *pMemDC = new CMemDC( pDC, Rect);
    CBrush hbr;
    hbr.CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
    //pDC->FillRect( &Rect, &hbr);
    pMemDC->FillRect( &Rect, &hbr);
    hbr.DeleteObject();
    if( !(state & ODS_DISABLED) )
    {
    if (state & ODS_SELECTED)
    {
    CPen pen( PS_SOLID, 2, GetSysColor( COLOR_3DHILIGHT ) );
    CPen *pPen;
    CPoint start, end;
    start.x = rect.left;
    start.y = rect.bottom;  
    end.x = rect.right;
    end.y = rect.top;
    rect.left += 2;
    rect.top += 2;
    rect.right -= 2;
    rect.bottom -= 2;
    pPen = pMemDC->SelectObject( &pen );
    pMemDC->Arc( &rect, start, end );
    pMemDC->SelectObject( pPen );
    pen.DeleteObject();
    }
    }
    rgn.CreateEllipticRgn( rect.left, rect.top,
    rect.right, rect.bottom );
    pMemDC->SelectClipRgn( &rgn );  
    GradientFill( pMemDC, &Rect );
    SetRound();
    CString title;
    GetWindowText( title );
    if( title.GetLength() != 0 )
    {
    DrawWhiteText( pMemDC, &Rect, title );
    title.ReleaseBuffer();
    }
    delete pMemDC;
    }
    void CMyBtn::DrawWhiteText(CDC* pDC, CRect* pRect, CString& text )
    {
    CFont font;
    int nHeight = -16;
    font.CreateFont (nHeight, 0, 0, 0, FW_BOLD,
    TRUE, 0, 0, DEFAULT_CHARSET, OUT_CHARACTER_PRECIS,
    CLIP_CHARACTER_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH |
    FF_DONTCARE, "Times New Roman");
    pDC->SetBkMode(TRANSPARENT);
    pDC->SetTextColor(RGB (255, 255, 255));
    CFont* pOldFont = pDC->SelectObject (&font);
    pDC->DrawText (text, -1, pRect, DT_SINGLELINE | DT_CENTER |
    DT_VCENTER);
    pDC->SelectObject (pOldFont);
    }

овальная кнопка на WPF (на Qt писал только в консоли, поэтому не могу судить насколько там удобно, но говорят, удобнее, чем WPF):
Кликните здесь для просмотра всего текста
XML
1
2
3
4
5
6
7
<Button x:Name="btn" Height="30" Width="100" Background="Transparent" BorderThickness="0" BorderBrush="Transparent">
  <Button.Content>
    <Border CornerRadius="5" Height="25" Width="95" Margin="0" BorderBrush="Black" BorderThickness="4" >
      <TextBlock Text="Click on Me" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Border>
  </Button.Content>
</Button>
это если использовать градиент. Если использовать просто "круглая кнопка", то одна строчка

имхо несколько различная сложность написания... (не говоря уже про умные слова вроде "сопровождаемость" и "читабельность").
 
Текущее время: 03:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru