Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка сообщений формы 
:(
    Опции темы
setjmp
Дата 27.6.2010, 12:00 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Написал программу которая после ввода в поле edit текста exit и нажатия на кнопку выходит из программы, но почему то не работает.
Вот код:
Код

#include "windows.h"
#define IDB_BUTTON 200
#define IDB_EDIT 201
int RegClass(WNDPROC Proc, LPCTSTR szName);

LRESULT CALLBACK _export WndProc(HWND, UINT, WPARAM, LPARAM);

HINSTANCE hInstance;

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    MSG msg;
    HWND hwnd;
    if(!RegClass(WndProc, "AppClass")) return FALSE;
    hwnd = CreateWindow("AppClass", "Programm", WS_OVERLAPPEDWINDOW|WS_VISIBLE, 
         CW_USEDEFAULT, CW_USEDEFAULT, 1280, 1024, NULL, NULL, hInstance, NULL);
    
    while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

    return (int) msg.wParam;
    
}

int RegClass(WNDPROC Proc, LPCTSTR szName)
{
    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.lpszMenuName = (LPCTSTR)NULL;
    wc.lpszClassName = szName;
    return RegisterClass(&wc);
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
        HWND hButton;
        HWND hEdit;
        CHAR *word;
        switch(message)
        {
        case WM_COMMAND:
             switch(LOWORD(wParam))
             {
             case IDB_BUTTON:
               GetWindowText(hEdit, word, 100);
                  if(word=="exit") PostQuitMessage(0);
             }
             
        case WM_CREATE:
             {
        hButton = CreateWindow("BUTTON","OK", WS_CHILD|WS_VISIBLE,
        790,500,70,25,hWnd,(HMENU)IDB_BUTTON,hInstance,NULL);
        hEdit = CreateWindow("EDIT", NULL, WS_CHILD|WS_VISIBLE|WS_BORDER,
        485,503,300,20,hWnd,(HMENU)IDB_EDIT,hInstance,NULL);
                 return 0;
            
            }
        case WM_DESTROY:{PostQuitMessage(0); return 0;}}
        return DefWindowProc(hWnd, message, wParam, lParam);               
}


Это сообщение отредактировал(а) GremlinProg - 28.6.2010, 09:23
PM MAIL   Вверх
Cheloveck
Дата 27.6.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

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



Цитата(setjmp @  27.6.2010,  12:00 Найти цитируемый пост)
        CHAR *word;
        switch(message)
        {
        case WM_COMMAND:
             switch(LOWORD(wParam))
             {
             case IDB_BUTTON:
               GetWindowText(hEdit, word, 100);
                  if(word=="exit") PostQuitMessage(0);
             }

Тут как минимум две ошибки, не связанные с Win32 API, а чисто с C++ (вернее даже Си). Не буду рассказывать, кури матчасть, потом задавай дурацкие вопросы.

Добавлено через 1 минуту и 3 секунды
PS юзай теги code

Добавлено через 3 минуты и 7 секунд
PPS вообще ошибок не 2, а 4. Но по теме 2


--------------------
user posted image
PM Jabber   Вверх
Dem_max
Дата 28.6.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

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



word=="exit"
так в си строки не сравнивают


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

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


 




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


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

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