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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2012, 12:32   #31
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

ComboBox в действии:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующие элементы GUI из панели Toolbox: ComboBox - 1 шт., Button - 1 шт.

Замечание. В редакторе ResEdit у элемента CheckBox нужно оттянуть вниз синею рамку на нужное количество строк (с запасом).

- выставить свойство "Type" элемента CheckBox в значение "Drop List"
- выравнять элемент GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

HINSTANCE hInst;

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    hInst = hInstance;
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

#define IDC_BUTTON1 3000
#define IDC_COMBO1 3001

LPCTSTR first_str = _T("First");
LPCTSTR second_str = _T("Second");

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_INITDIALOG:
        SendMessage(GetDlgItem(hWnd, IDC_COMBO1), CB_ADDSTRING, 0, (LPARAM) first_str);
        SendMessage(GetDlgItem(hWnd, IDC_COMBO1), CB_ADDSTRING, 0, (LPARAM) second_str);
        SendMessage(GetDlgItem(hWnd, IDC_COMBO1), CB_SETCURSEL, 0, 0);
        break;
    case WM_COMMAND:
        if (wParam == IDC_BUTTON1) {
            if (SendMessage(GetDlgItem(hWnd, IDC_COMBO1), CB_GETCURSEL, 0, 0) == 0) {
                MessageBox(hWnd, _T("First string is checked"), _T("Message"), MB_ICONINFORMATION);
            }
            else {
                MessageBox(hWnd, _T("Second string is checked"), _T("Message"), MB_ICONINFORMATION);
            }
        }
        break;
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
Примечание. В файле ресурсов "*.rc" нужно определить:
Код:
#define IDC_BUTTON1 3000
#define IDC_COMBO1 3001
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек

Последний раз редактировалось 8Observer8; 20.09.2012 в 11:49.
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 11:38   #32
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Добавить пункты меню через редактор ResEdit.

- (на панели меню выбираем "File" --> "Add a resource" --> "Menu") (или Ctrl+M)
- в поле "Type here" пишем имя пункта меню
- продолжаем справа от записанного пункта добавлять следующие и писать их имена
- под каждым пунктом записываем подпункты. Чтобы из режима заполнения пунктов перейти в режим заполнения подпунктов, нужно нажать Enter

Замечания:
1. Если некоторые из подпунктов не заполнять, а пропускать, то вместо подпункта в меню появится горизонтальная черта. Эта черта используется, как разделитель (separator) подпунктов (если это требуется).

2. Чтобы меню появилось на диалоговом окне, необходимо в скрипте ресурсов (*.rc) в блоке диалогового окна добавить строку:
Код:
MENU IDR_MENU1
Добавить можно, например, после или до определения: CAPTION. Имя IDR_MENU1 может быть изменено в редакторе ресурсов ResEdit или в скрипте ресурсов (*.rc).
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 11:42   #33
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Menu на диалоговом окне:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить пункты меню: File (c подпунктами: Open, Save, Exit), Help (с подпунктом: About)
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 11:46   #34
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Menu в действии:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить пункты меню: File (c подпунктами: Open, Save, Exit), Help (с подпунктом: About)
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

HINSTANCE hInst;

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    hInst = hInstance;
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

#define IDM_OPEN1 3000
#define IDM_SAVE1 3001
#define IDM_EXIT1 3002
#define IDM_ABOUT1 3003


INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_COMMAND:
        if (lParam == 0) {
            if (LOWORD(wParam) == IDM_OPEN1) {
                MessageBox(NULL, _T("\"Open\" is checked"), _T("Message"), MB_ICONINFORMATION);
            }
            else if (LOWORD(wParam) == IDM_SAVE1) {
                MessageBox(NULL, _T("\"Save\" is checked"), _T("Message"), MB_ICONINFORMATION);
            }
            else if (LOWORD(wParam) == IDM_EXIT1) {
                MessageBox(NULL, _T("\"Exit\" is checked"), _T("Message"), MB_ICONINFORMATION);
                SendMessage(hWnd, WM_CLOSE, 0, 0);
            }
            else if (LOWORD(wParam) == IDM_ABOUT1) {
                MessageBox(NULL, _T("\"About\" is checked"), _T("Message"), MB_ICONINFORMATION);
            }
            else {
                MessageBox(NULL, _T("Inaccurate menu"), _T("Message"), MB_ICONINFORMATION);
            }
        }
        break;
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
Примечание. В файле ресурсов "*.rc" нужно определить:
Код:
#define IDM_OPEN1 3000
#define IDM_SAVE1 3001
#define IDM_EXIT1 3002
#define IDM_ABOUT1 3003
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек

Последний раз редактировалось 8Observer8; 20.09.2012 в 11:48.
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 16:16   #35
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Button на диалоговом окне:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующий элемент GUI из панели Toolbox: Button
- выравнять элемент GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 16:24   #36
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Button в действии:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующие элементы GUI из панели Toolbox: Button - 1 шт.
- выравнять элемент GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

#define IDC_BUTTON1 3000

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_COMMAND:
        if (LOWORD(wParam) == IDC_BUTTON1) {
            MessageBox(hWnd, _T("Button was pressed!"), _T("Message"), MB_ICONINFORMATION);
        }
        break;
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
Примечание. В файле ресурсов "*.rc" нужно определить:
Код:
#define IDC_BUTTON1 3000
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 16:32   #37
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Edit Control на диалоговом окне:


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующий элемент GUI из панели Toolbox: Edit Control
- выравнять элемент GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1 100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 16:47   #38
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Edit Control в действии (чтение):


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующие элементы GUI из панели Toolbox: Edit Control - 2 шт., Button - 1 шт.
- выравнять элементы GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1    100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

#define IDC_EDIT1      3000
#define IDC_BUTTON1    3001
#define BSIZE          512

LPCTSTR TestString = _T("Hello!");
TCHAR buf[BSIZE];

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_INITDIALOG:
        SetDlgItemText(hWnd, IDC_EDIT1, TestString);
        break;
    case WM_COMMAND:
        if (LOWORD(wParam) == IDC_BUTTON1) {
            GetDlgItemText(hWnd, IDC_EDIT1, buf, BSIZE);
            MessageBox(NULL, buf, _T("Text"), MB_OK);
        }
        break;
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
Примечание. В файле ресурсов "*.rc" нужно определить:
Код:
#define IDC_EDIT1      3000
#define IDC_BUTTON1    3001
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Старый 20.09.2012, 16:56   #39
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,322
По умолчанию

Edit Control в действии (запись):


Инструкция:
- скачать и установить инструментарий
- создать проект Visual 2008
- создать диалоговое окно в ResEdit
- добавить на диалоговое окно следующие элементы GUI из панели Toolbox: Edit Control - 2 шт., Button - 1 шт.
- выравнять элементы GUI
- сохранить проект ResEdit (Ctrl+S)
- подключить файл ресурсов к проекту Visual 2008
- скопировать следующий код в main.c
Код:
#include <windows.h>
#include <tchar.h>

#define IDD_DIALOG1    100

INT_PTR CALLBACK DialogProc(HWND hwndDlg,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam);

LPCTSTR DlgName = MAKEINTRESOURCE(IDD_DIALOG1);

int WINAPI _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR lpCmdLine,
                     int nCmdShow)
{
    DialogBoxParam(hInstance, DlgName, NULL, DialogProc, (LPARAM) NULL);

    return TRUE;
}

#define IDC_EDIT1      3000
#define IDC_BUTTON1    3001

LPCTSTR TestString = _T("Hello!");

INT_PTR CALLBACK DialogProc(HWND hWnd,
                            UINT uMsg,
                            WPARAM wParam,
                            LPARAM lParam)
{
    switch(uMsg) {
    case WM_COMMAND:
        if (LOWORD(wParam) == IDC_BUTTON1) {
            SetDlgItemText(hWnd, IDC_EDIT1, TestString);
        }
        break;
    case WM_CLOSE:
        EndDialog(hWnd, 0);
        break;
    default:
        return FALSE;
    }

    return TRUE;
}
Примечание. В файле ресурсов "*.rc" нужно определить:
Код:
#define IDC_EDIT1      3000
#define IDC_BUTTON1    3001
- откомпилировать и запустить проект Visual 2008
- по желанию: создать релизный exe-файл, который будет запускаться на других машинах, где нет требуемых библиотек
8Observer8 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Различия WinAPI и создание оконных приложений VS Studio Sauber Общие вопросы C/C++ 13 03.07.2012 19:21
Создание окна(asm) с использованием WinApi Alex1991 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 04.04.2011 13:20
Создание GUI в DirectX Selestis Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 02.08.2010 15:15
Создание сложных объектов в gui cherw9!40k Общие вопросы по Java, Java SE, Kotlin 0 22.03.2010 22:02
Создание GUI для WINDOWS inzener-tolik Помощь студентам 8 13.03.2010 11:39