Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 7

Из сpp в режим API

17.06.2010, 15:04. Показов 975. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть программа
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
#include <iostream>
#include<windows.h>
using namespace std;
void main()
{
       
        int i,j,n,k;
 
        cout<<endl;
        cout<<"Vvedite nachal'noe znachenie: ";
        cin>>k;
        
        if(k<=1)
            //Натуральные числа начинаются с двух
            k=2;
        
        
        //}
        //cout<<"Nachnite vvod c chisla bol'she 1"; goto loop1;
        cout<<endl;
        
        cout<<"Vvedite konechnoe  znachenie diapozona: ";
        cin>>n;
        cout<<endl;
        bool z;
        cout<<"Prostye chisla:\n";
        for(i=k; i<n; i++) 
        {
                z=true;
                for(j=2; j<=i/2; j++)
                if((i%j)==0) z=false; // % означает модуль, остаток от деления
                if(z)
                cout<<i<<" ";
                
                //cout<<endl;
                
        }
        cout<<endl;
}
подскажите пожалуйста, что нужно в ней изменить, чтобы она работала в API?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2010, 15:04
Ответы с готовыми решениями:

Небольшой вопрос к знатокам СPP
Форумчане хелп. Работал с билдером, ща приспичило с winapi поработать. Есть 2 функции, точнее функция одна только по разному...

Режим модема: Точка доступа Wi-fi API
Здравствуйте уважаемые! Намереваюсь написать приложение с одной кнопкой, которая включает/выключает режим модема и делает из телефона точку...

Преобразовать в сpp
как преобразовать в сppuses crt,graphABC; var v,x1,x2,y1,y2:integer; x,dx,y,mx,my,a,b:real; w,h,x0,y0,i:integer; st:string; begin...

7
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
17.06.2010, 20:31
Чтобы проект был не консольным, нужно менять опции, если честно, то сам не знаю точно какие, обычно при создании проекта выбираю Win32 Application и все. Ну только там уже WinMain и выводить данные или на форму(которую нужно создавать) или в диалог или проще всего через MessageBox.
Если что его можно использовать и в консольном приложении, но мне кажется, проект от этого не станет Апишным?!(утверждать не буду)
0
160 / 159 / 13
Регистрация: 14.01.2010
Сообщений: 1,497
17.06.2010, 21:34
Нужно создавать форму на апи кодом самому, контролы и все обработчики событий.
Ищи в инете "создание формы на api" и тп
Будет приблизительно такое (Delphi)
http://www.delphisources.ru/pa... form2.html
Не знаю стоит ли изучать апи.
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
17.06.2010, 22:09
А что Делфи не использует Апи? Как по мне так его нужно знать в любом случае, одними Делфями не обойтись.
0
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 7
17.06.2010, 22:27  [ТС]
собственно все диалоговые окна есть, нужно только сделать так, чтобы в одну форму мы могли ввести начальное значение, в другую конечное, а при кнопке пуск у нас был ответ в другой.
Есть меню, которое создается автоматически, туда я добавил свою задачу (Zadacha)



Диалоговое окно к этой Zadacha выглядит так:



код сpp в апи
Code
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#include "stdafx.h"
#include "MyAPIIIII.h"
 
#define MAX_LOADSTRING 100
 
// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING];                  // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name
 
// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 
int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);
 
    // TODO: Place code here.
    MSG msg;
    HACCEL hAccelTable;
 
    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_MYAPIIIII, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);
 
    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }
 
    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MYAPIIIII));
 
    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }
 
    return (int) msg.wParam;
}
 
 
 
//
//  FUNCTION: MyRegisterClass()
//
//  PURPOSE: Registers the window class.
//
//  COMMENTS:
//
//    This function and its usage are only necessary if you want this code
//    to be compatible with Win32 systems prior to the 'RegisterClassEx'
//    function that was added to Windows 95. It is important to call this function
//    so that the application will get 'well formed' small icons associated
//    with it.
//
ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;
 
    wcex.cbSize = sizeof(WNDCLASSEX);
 
    wcex.style          = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra     = 0;
    wcex.cbWndExtra     = 0;
    wcex.hInstance      = hInstance;
    wcex.hIcon          = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MYAPIIIII));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground  = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName   = MAKEINTRESOURCE(IDC_MYAPIIIII);
    wcex.lpszClassName  = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
 
    return RegisterClassEx(&wcex);
}
 
//
//   FUNCTION: InitInstance(HINSTANCE, int)
//
//   PURPOSE: Saves instance handle and creates main window
//
//   COMMENTS:
//
//        In this function, we save the instance handle in a global variable and
//        create and display the main program window.
//
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;
 
   hInst = hInstance; // Store instance handle in our global variable
 
   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 
   if (!hWnd)
   {
      return FALSE;
   }
 
   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);
 
   return TRUE;
}
 
//
//  FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM)
//
//  PURPOSE:  Processes messages for the main window.
//
//  WM_COMMAND  - process the application menu
//  WM_PAINT    - Paint the main window
//  WM_DESTROY  - post a quit message and return
//
//
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        case ID_FILE_32771:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_DIALOG1), hWnd, About);
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}
 
// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;
 
    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
17.06.2010, 22:49
Тогда в обработчике окна ловишь сообщение WM_COMMAND проверяешь на АйДи кнопки, чтобы узнать, что сообщение от нее, что она нажата. А точнее проверяешь codeNotify = HIWORD(wParam);
C++
1
2
3
4
5
6
7
8
9
10
if( HIWORD(wParam) == BN_CLICKED && LOWORD(wParam) == ID_BUTTON) //нажата ваша кнопка
{
     //получаем текст из Едитов
     SendMessage(edit1, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
     SendMessage(edit2, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
     //или через SendDlgItemMessage
     //к примеру atoi вроде строку конвертим в числа
     //вычисляем результат конвертим обратно в строку через wsprintf
     SetWindowText(.....); //записываем в последний Едит
}
Почитай только за извлечение строки из Едита.
wParam

The zero-based index of the line to retrieve from a multiline edit control. A value of zero specifies the topmost line. This parameter is ignored by a single-line edit control.
lParam

A pointer to the buffer that receives a copy of the line. Before sending the message, set the first word of this buffer to the size, in TCHARs, of the buffer. For ANSI text, this is the number of bytes; for Unicode text, this is the number of characters. The size in the first word is overwritten by the copied line.
Если Един однострочный тогда без разницы, а иначе я выдрал такую функцию
C++
1
2
3
4
5
int EditGetLine(HWND hwnd, int nIndex, LPTSTR lpszBuffer, int nMaxLength)
{
    *(LPWORD)lpszBuffer = (WORD)nMaxLength;
    return SendMessage(hwnd, EM_GETLINE, nIndex, (LPARAM)lpszBuffer);
}
0
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 7
17.06.2010, 23:27  [ТС]
что-то не особо понятно, что надо изменить в cpp файле, кроме как использовать атои
0
 Аватар для TGrey[WoLf]
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
17.06.2010, 23:55
Цитата Сообщение от asd874 Посмотреть сообщение
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
Ну вот я код не посмотрел сперва, переменные уже есть. Теперь только получить текст из Едитов, посчитать и записать в новый едит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.06.2010, 23:55
Помогаю со студенческими работами здесь

как откомпилировать файл *.сpp????
я тут выкачала програмку с исходниками на С++, в папке только cpp -шные файлы и ехешник. как мне получить файл .bpr???? подскажите...

Запуск программы с расширением .сpp с помощью Visual studio 2010
У меня есть файл с текстом программы с расширением .сpp &quot;С++ Source&quot; открываю с помощью Visual studio 2010. Но запустить не...

Как узнать почему включается энергосберегающий режим.И выключить навсегда этот режим?
Вообщем дело такое, гаснет монитор и появляется сообщение &quot;Енергосберегающий режим&quot; и в играх и даже когда не играю, монитор LG...

Как можно из VB переключить режим 800х600 на режим 1024х768.
Как можно из VB переключить режим 800х600 на режим 1024х768. Благодарю за помощь

Монитор Samsung-SyncMaster 2033 при запуске системы пишет неоптимальный режим, рекомендованный режим 1600х900
Здравствуйте. У меня возникла проблема с монитором Samsung-SyncMaster 2033. Скачал себе игрушку Star Wars the Old Republick, запустил,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru