Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Некоторые непонятные строки 
:(
    Опции темы
prikolist
Дата 1.3.2010, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



Изучаю айпи ,смущает несколько моментов:
Код

wcn.lpfnWndProc   = WndProc; 

Что чему здесь присваивается, все строки вроде понятны, кроме этой.
И вот это место, что здесь задаётся?:
Код

MSG msg; 

Почему так код не сработает?
Код

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, unsigned int wparam,long lparam)
{
    switch (Message){
        case WM_COMMAND:
            if((unsigned int)wparam==ID_BUTTON1){
MessageBox(NULL, L"Вы нажали на кнопку №1", L"Test", MB_OK|MB_ICONWARNING);
            }
            if((unsigned int)wparam==ID_BUTTON2){
                MessageBox(NULL,L"Вы нажали на кнопку 2",L"Тест",MB_OK|MB_ICONEXCLAMATION);
            }
    }


PM MAIL   Вверх
azesmcar
Дата 1.3.2010, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(prikolist @  1.3.2010,  18:53 Найти цитируемый пост)
Изучаю айпи 

Чей? smile 

Цитата(prikolist @  1.3.2010,  18:53 Найти цитируемый пост)
Почему так код не сработает?

один момент, сейчас откомпилирую в уме, может подскажешь какие ошибки?

Добавлено через 37 секунд
Цитата(prikolist @  1.3.2010,  18:53 Найти цитируемый пост)
И вот это место, что здесь задаётся?:

ничего, создается переменная типа MSG.
PM   Вверх
prikolist
Дата 1.3.2010, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



Цитата

Вот код:

Код

#include "windows.h"
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM,LPARAM);

int WINAPI WinMain ( HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR IpCmdLine,int nCmdShow )
{
    HWND hwnd;//Дескрипторы окон (button - это тоже окна)
    HWND button;
    HWND button2; 
    MSG msg;
    WNDCLASS w;
    ///адрес этой переменной в памяти, потом значение, 
    //которым память заполнить, потом сколько байт заполнять
    memset(&w,0,sizeof(WNDCLASS)); 
    w.style=CS_HREDRAW|CS_VREDRAW;
    w.lpfnWndProc=WndProc;
    w.hInstance=hInstance;
    w.hbrBackground=HBRUSH(COLOR_BTNFACE + 1); 
    w.lpszClassName =L"Окно Windows";
    RegisterClass(&w);
    hwnd = CreateWindow(L"Окно Windows",L" Windowsa", WS_OVERLAPPEDWINDOW,
    250,50,700,700,NULL,NULL,hInstance,NULL);

        //делаем кнопку
    button=CreateWindow(L"button",L"Кнопка №1",WS_VISIBLE|WS_CHILD,240,205,28,28,hwnd,(HMENU)ID_BUTTON1,NULL,NULL);
    button2=CreateWindow(L"button",L"Кнопка №2",WS_VISIBLE|WS_CHILD,300,300,200,25,hwnd,(HMENU)ID_BUTTON2,hInstance,NULL);
    ShowWindow(hwnd,nCmdShow);
    while(GetMessage(&msg,NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

//lparam - передаётся номер нажатой кнопки
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
    switch (Message){
        case WM_COMMAND:
            if(wparam==ID_BUTTON1){
MessageBox(NULL, L"Вы нажали на кнопку №1", L"Test", MB_OK|MB_ICONWARNING);
            }
            if(wparam==ID_BUTTON2){
                MessageBox(NULL,L"Вы нажали на кнопку 2",L"Тест",MB_OK|MB_ICONEXCLAMATION);
            }
    }
    
    
    if (Message == WM_DESTROY )
    {
        //Чтоб убрать эту программу с процессов windows
        PostQuitMessage(0);
        return 0;
    }

Почему иак код не сработает:?
Код

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, unsigned int wparam,long lparam)
{
    switch (Message){
        case WM_COMMAND:
            if((unsigned int)wparam==ID_BUTTON1){
MessageBox(NULL, L"Вы нажали на кнопку №1", L"Test", MB_OK|MB_ICONWARNING);
            }
            if((unsigned int)wparam==ID_BUTTON2){
                MessageBox(NULL,L"Вы нажали на кнопку 2",L"Тест",MB_OK|MB_ICONEXCLAMATION);
            }
    }



    return DefWindowProc(hwnd,Message,wparam,lparam);
}



2)Объясните, что вот это такое, по отдельности:
lpfnWndProc - адресс оконной процедуры, которая используется для всех окон?  и этому адрессу присваивается сама оконная процедура?
Код

wcn.lpfnWndProc   = WndProc; 

И это
Код

MSG msg;

Что єто за такой тип, и зачем он нужен?

Это сообщение отредактировал(а) prikolist - 1.3.2010, 19:12
PM MAIL   Вверх
azesmcar
Дата 1.3.2010, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(prikolist @  1.3.2010,  19:11 Найти цитируемый пост)
2)Объясните, что вот это такое, по отдельности:

Это установка оконной процедуры, для обработки сообщений.

Цитата(prikolist @  1.3.2010,  19:11 Найти цитируемый пост)
MSG msg;

Говорят дай человеку рыбу - и он будет сыт один день. Научи человека ловить рыбу - и он весь день будет сидеть в лодке и пить пиво. Открываем документацию, ищем, читаем - MSG - аббревиатура, означает Monosodium glutamate ... нет, не та книжка, а вот, MSDN
Цитата

The MSG structure contains message information from a thread's message queue. 



Это сообщение отредактировал(а) azesmcar - 1.3.2010, 19:59
PM   Вверх
prikolist
Дата 1.3.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



MSG - это имя структуры, а msg - переменная этой структуры?
Если это так, тогда зачем нужна эта переменная? 
PM MAIL   Вверх
azesmcar
Дата 1.3.2010, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(prikolist @  1.3.2010,  20:20 Найти цитируемый пост)
MSG - это имя структуры, а msg - переменная этой структуры?

Да.

Цитата(prikolist @  1.3.2010,  20:20 Найти цитируемый пост)
Если это так, тогда зачем нужна эта переменная?  

Она использована чуть ниже, в цикле.
PM   Вверх
prikolist
Дата 1.3.2010, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



Я так понял она только в этом коде используется.
Вы б не могли объясниить вот этот кусочек кода зачем он нужен.

Код

while(GetMessage(&msg,NULL,0,0)){
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;


Скажите - это стандартная структура ,которая находится в файле windows.h?
Просто  я обнаружил в ней во такой список параметров:
Код

hwnd
lParam
message
pt
time
wParam



Это сообщение отредактировал(а) prikolist - 1.3.2010, 20:33
PM MAIL   Вверх
bsa
Дата 1.3.2010, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



prikolist, если ты решил изучить WinAPI (айпи - это IP = internet protocol) только для того, чтобы писать программы с GUI, то зря тратишь свое время. Тебе стоит обратить внимание на C#/.Net или C++/Qt/GTK+/wxWidgets.
Цитата(prikolist @  1.3.2010,  20:33 Найти цитируемый пост)
Скажите - это стандартная структура ,которая находится в файле windows.h?
Да. Она стандартная для WinAPI и подробно описана в MSDN.


Это сообщение отредактировал(а) bsa - 1.3.2010, 20:37
PM   Вверх
prikolist
Дата 1.3.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



А синтаксис(объявление классов , структур, функций) в C# сильно отличаются от C++?
PM MAIL   Вверх
bsa
Дата 1.3.2010, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(prikolist @  1.3.2010,  20:48 Найти цитируемый пост)
А синтаксис(объявление классов , структур, функций) в C# сильно отличаются от C++? 
не сильно, но отличается. И вообще, нужно иметь в виду, что это другой язык.
Но, судя по твоим вопросам, ты ни С, ни С++ не знаешь, поэтому их знание не помешает изучению C#


Это сообщение отредактировал(а) bsa - 1.3.2010, 21:22
PM   Вверх
prikolist
Дата 2.3.2010, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



Обїясните пожалуйста последнее, со всем вроде понял.
Параметры 
Код

 WPARAM wparam,LPARAM lparam

Читал с разніх источников  так и не понял зачем они нужны.
Код

LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)

1 -ый парамтер HWND - сюда передаётся имя описателя окна, который мы создали в главной фу-ции WinMain:

2 - ой параметр  UINT Message - передаётся номер сообщения от WndProc к WinMain  которую мы подаём главной функции WinMain


А 3 и 4-ый параметр, что в них передаётся?

Это сообщение отредактировал(а) prikolist - 2.3.2010, 00:55
PM MAIL   Вверх
mes
Дата 2.3.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(prikolist @  1.3.2010,  23:52 Найти цитируемый пост)
А 3 и 4-ый параметр, что в них передаётся?

как трактовать значения этих параметров определяется типом сообщения (2м параметром) ..
если для системных сообщений смысл жестко определен и описан в документации, то для каждого пользовательского типа сообщения можно задать свой собственный смысл.
smile




--------------------
PM MAIL WWW   Вверх
prikolist
Дата 2.3.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 19.7.2008

Репутация: нет
Всего: нет



Ответьте пожалуйста на вопрос, я так и не получил ответа.
Для чего 3 и 4 параметр?

Это сообщение отредактировал(а) prikolist - 2.3.2010, 15:38
PM MAIL   Вверх
mes
Дата 2.3.2010, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(prikolist @  2.3.2010,  14:37 Найти цитируемый пост)
Ответьте пожалуйста на вопрос, я так и не получил ответа.

чем не устраивает ответ постом выше ?



--------------------
PM MAIL WWW   Вверх
bsa
Дата 2.3.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(prikolist @  2.3.2010,  15:37 Найти цитируемый пост)
Для чего 3 и 4 параметр?
Ответ тебе уже дал mes. Я только перефразирую.
Назначение этих аргументов зависит от сообщения. Там могут быть указатели на данные или еще что-то. В документации к каждому сообщению указано, чем является wparam и lparam для него.

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1965 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.