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

FirstBlood - C++

Восстановить пароль Регистрация
 
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
03.04.2011, 19:49     FirstBlood #1
Добрый вечер, форумчане.

добрался до 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  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dyosick
 Аватар для dyosick
61 / 61 / 6
Регистрация: 25.08.2008
Сообщений: 178
03.04.2011, 19:55     FirstBlood #2
Вот простейшая программа из серии 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);
}
Unforgiven_00
60 / 60 / 2
Регистрация: 12.10.2010
Сообщений: 129
03.04.2011, 19:56     FirstBlood #3
попробуйте так
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;
}
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
03.04.2011, 19:59     FirstBlood #4
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;
}
instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
03.04.2011, 20:01  [ТС]     FirstBlood #5
dyosick, первая штука в codeblocks работает. а вторая нет. - undefined reference to GotoObject,
Unforgiven_00, работает.
всем спасибо.

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

Не по теме:

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

instagib
122 / 85 / 3
Регистрация: 14.02.2011
Сообщений: 341
03.04.2011, 20:08  [ТС]     FirstBlood #7
Петррр,

Не по теме:

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



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

Не по теме:

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

Yandex
Объявления
03.04.2011, 20:08     FirstBlood
Ответ Создать тему
Опции темы

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