Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340

FirstBlood

03.04.2011, 19:49. Показов 793. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, форумчане.

добрался до winapi .

как говорится без практики ни куда. так вот. после внимательного прочтения, попробовал написать в VisuatStudio стандартную прогу helloworld.
короче вод код:
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  MessageBox(NULL, "Простейшая программа!","WinAPI App", 0); //сообщение
  return 0;
}
не получается компилить сделал все как описано на http://www.rsdn.ru/article/baseserv/api32.xml
напишите мне пример Helloworld с winapi, желательно в среде codeblocks. жду любой ответ.
Миниатюры
FirstBlood  
0
 Аватар для dyosick
64 / 64 / 17
Регистрация: 25.08.2008
Сообщений: 178
03.04.2011, 19:55
Вот простейшая программа из серии Hello, Windows:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//файл winmain.cpp
#include <windows.h> //этот файл всегда включается
                     //в Windows-программу
 
//Это главная функция программы.
int WINAPI WinMain(HINSTANCE hInst,     //пусть Вас не смущает то,
                   HINSTANCE hPrevInst, //что здесь написано.
                   PSTR szCmdLine,      //Мы разберем
                   int iCmdShow)        //это позже.
{
  //Вывести сообщение на экран.
  MessageBox(                   //функция вывода сообщения
             NULL,              //окно сообщения не имеет родителя
             "Hello, Windows!", //текст сообщения
             "Наша первая программа", //заголовок окна
             MB_ICONINFORMATION); //иконка, которая будет
                                  //выведена левее сообщения
  return 0;
}

Эта программа уже имеет нормальную структуру (т.е. примерно такую, какую имеют все Windows-программы).
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
//файл hellowin.cpp
#include <windows.h>
 
//описание оконной процедуры
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
 
//Это главная функция программы.
int WINAPI WinMain(HINSTANCE hInst,
                   HINSTANCE hPrevInst,
                   PSTR szCmdLine,
                   int iCmdShow)
{
  HWND hwnd;
  MSG  msg;
  WNDCLASSEX w;
  static CHAR *szAppName={"HelloWin"};
 
  w.cbSize=sizeof(w);
  w.style=CS_HREDRAW|CS_VREDRAW;
  w.lpfnWndProc=WndProc;
  w.cbClsExtra=0;
  w.cbWndExtra=0;
  w.hInstance=hInst;
  w.hIcon=LoadIcon(NULL,IDI_APPLICATION);
  w.hCursor=LoadCursor(NULL,IDC_ARROW);
  w.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
  w.lpszMenuName=NULL;
  w.lpszClassName=szAppName;
  w.hIconSm=w.hIcon;
  RegisterClassEx(&w);
 
  hwnd=CreateWindow(
       szAppName,
       "Hello, Windows",
       WS_OVERLAPPEDWINDOW,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       CW_USEDEFAULT,
       NULL,
       NULL,
       hInst,
       NULL);
  ShowWindow(hwnd,iCmdShow);
  UpdateWindow(hwnd);
 
  while(GetMessage(&msg,NULL,0,0))
  {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return msg.wParam;
}
 
//Оконная процедура
LRESULT CALLBACK WndProc(HWND hwnd, UINT imsg,
                         WPARAM wParam, LPARAM lParam)
{
  HDC hdc;
  PAINTSTRUCT ps;
  RECT r;
 
  switch(imsg)
  {
    case WM_CREATE:
         return 0;
    case WM_PAINT:
         hdc=BeginPaint(hwnd,&ps);
         GetClientRect(hwnd,&r);
         DrawText(hdc,"Hello, Windows!!!",-1,&r,
                  DT_SINGLELINE|DT_CENTER|DT_VCENTER);
         EndPaint(hwnd,&ps);
         return 0;
    case WM_DESTROY:
         PostQuitMessage(0);
         return 0;
  }
 
  return DefWindowProc(hwnd,imsg,wParam,lParam);
}
1
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
03.04.2011, 19:56
попробуйте так
C++
1
2
3
4
5
6
7
8
9
10
#include <windows.h>
 
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  MessageBox(NULL, L"Простейшая программа!",L"WinAPI App", 0); //сообщение
  return 0;
}
1
 Аватар для Петррр
6721 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
03.04.2011, 19:59
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
#include <windows.h>
 
char szClassName[] = "WindowApp";
HINSTANCE hInstance;
 
BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)
{
    WNDCLASS wc;
    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.cbClsExtra = wc.cbWndExtra = 0;
    wc.lpfnWndProc = Proc;
    wc.hInstance = hInstance;
    wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);
    wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
    wc.lpszClassName = szName;
    wc.lpszMenuName = (LPCTSTR)NULL;
    return RegisterClass(&wc);
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{   
    switch (msg)
    {
        case WM_LBUTTONDOWN:
        {
            MessageBox(hwnd, "Hello World", "",  MB_OK);
            return 0;
        }
        case WM_DESTROY:
        {
            PostQuitMessage(0);
            return 0;
        }
    }   
    return DefWindowProc(hwnd, msg, wParam, lParam);
}
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
{
    MSG msg; HWND hwnd;
    if (!RegClass(WndProc, szClassName, COLOR_WINDOW)) return FALSE;
    hwnd = CreateWindow(szClassName, "Пример 1", WS_OVERLAPPEDWINDOW, 
        CW_USEDEFAULT, CW_USEDEFAULT, 
        CW_USEDEFAULT, CW_USEDEFAULT,
        0, 0, hInstance, NULL);
    if (!hwnd)  return FALSE;
    ShowWindow(hwnd, SW_SHOWMAXIMIZED);
    UpdateWindow(hwnd);
    while (GetMessage(&msg, 0, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
1
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
03.04.2011, 20:01  [ТС]
dyosick, первая штука в codeblocks работает. а вторая нет. - undefined reference to GotoObject,
Unforgiven_00, работает.
всем спасибо.

Добавлено через 30 секунд
Петррр, спасибо. работает
0
03.04.2011, 20:03

Не по теме:

instagib, спасибо это когда производится тобой щелчок левой кнопкой мыши на кнопку спасибо:)

1
122 / 85 / 16
Регистрация: 14.02.2011
Сообщений: 340
03.04.2011, 20:08  [ТС]
Петррр,

Не по теме:

думал что поставил уже :)



Добавлено через 41 секунду

Не по теме:

нельзя же быть неблагодарным)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru