Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2011, 12:13   #1
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию Не работает DialogBoxParam

Я взял пример из "уроков Iczelion'а" (второй пример) и переправил на Си. Почему не работает? Подскажите, пожалуйста.

Код:
#include <windows.h>

#define IDC_EDIT        3000
#define IDC_BUTTON      3001
#define IDC_EXIT        3002
#define IDM_GETTEXT     32000
#define IDM_CLEAR       32001
#define IDM_EXIT        32002

#define BUFSIZE         512

char* szDlgName = "MyDialog";
char* szAppName = "Our Second Dialog Box";
char* szTestString = "Wow! I'm in an edit box now";
char* szCommandLine;

char buffer[BUFSIZE];

HINSTANCE hInst;

LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);

//---------------------------------------------------------------------------
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow) {
    hInst = hInstance;

    DialogBoxParam(hInst, szDlgName, NULL, DlgProc, NULL);

    return FALSE;
}
//---------------------------------------------------------------------------

LRESULT CALLBACK DlgProc(HWND hWnd,
                         UINT uMsg,
                         WPARAM wParam,
                         LPARAM lParam) {
    WPARAM wParam_temp;

    switch (uMsg) {
    case WM_INITDIALOG:
        SetFocus(GetDlgItem(hWnd,IDC_EDIT));
        break;
    case WM_CLOSE:
        SendMessage(hWnd, WM_COMMAND, IDM_EXIT, 0);
        break;
    case WM_COMMAND:
        if (lParam == 0) {
            if ((wParam & 0x0FFFF) == IDM_GETTEXT) {
                GetDlgItemText(hWnd,IDC_EDIT, buffer,512);
                MessageBox(NULL, buffer, szAppName, MB_OK);
            } else if ((wParam & 0x0FFFF) == IDM_CLEAR) {
                SetDlgItemText(hWnd,IDC_EDIT,NULL);
            } else if ((wParam & 0x0FFFF) == IDM_EXIT) {
                EndDialog(hWnd, NULL);
            }
        }
        else {
            wParam_temp = wParam;
            wParam = wParam >> 16;
            if (wParam == BN_CLICKED) {
                if ((wParam_temp & 0x0FFFF) == IDC_BUTTON) {
                    SetDlgItemText(hWnd, IDC_EDIT, szTestString);
                } else if ((wParam_temp & 0x0FFFF) == IDC_EXIT) {
                    SendMessage(hWnd, WM_COMMAND, IDM_EXIT, 0);
                }
            }
        }
        break;
    default:
        return FALSE;
        break;
    }

    return TRUE;
}
Код:
#include "resource.h"

#define IDR_MENU1                                      3003
#define IDC_EDIT                                       3000
#define IDC_BUTTON                                     3001
#define IDC_EXIT                                       3002

#define IDM_GETTEXT                                   32000
#define IDM_CLEAR                                     32001
#define IDM_EXIT                                      32003


MyDialog DIALOG 10, 10, 205, 60
STYLE 0x0004 | DS_CENTER | WS_CAPTION | WS_MINIMIZEBOX |
WS_SYSMENU | WS_VISIBLE | WS_OVERLAPPED | DS_MODALFRAME | DS_3DLOOK
CAPTION "Our Second Dialog Box"
MENU IDR_MENU1
BEGIN
    EDITTEXT         IDC_EDIT,   15,17,111,13, ES_AUTOHSCROLL | ES_LEFT
    DEFPUSHBUTTON   "Say Hello", IDC_BUTTON,    141,10,52,13
    PUSHBUTTON      "E&xit", IDC_EXIT,  141,26,52,13
END


IDR_MENU1  MENU
BEGIN
    POPUP "Test Controls"
    BEGIN
        MENUITEM "Get Text", IDM_GETTEXT
        MENUITEM "Clear Text", IDM_CLEAR
        MENUITEM "", , 0x0800 /*MFT_SEPARATOR*/
        MENUITEM "E&xit", IDM_EXIT
    END
END

Последний раз редактировалось 8Observer8; 03.12.2011 в 12:16.
8Observer8 вне форума Ответить с цитированием
Старый 05.12.2011, 14:09   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

GetLastError() сообщает, что "Не удаётся найти класс окна". Я видимо DialogBoxParam() не так использую.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа работает пошагово, но не работает при запуске -Katerina- Microsoft Office Excel 3 12.07.2011 03:40
Почему программа на С++ не работает с локальным описанием массива, но работает с глобальным? >>STINGER<< Помощь студентам 4 08.03.2011 09:56
DialogBoxParam не отображает окно --=SaNitinDG=- Общие вопросы C/C++ 13 29.01.2010 13:58
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04