Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Покажите как надо кодить диалоговые приложения на Win Api

388
17 августа 2005 года
warezhka
129 / / 11.10.2004
Народ поделитесь каким-нито небольшим красивым примером диалогового приложения написанного на VC++ с использованием WIN API.
Хочется посмотреть как контролы в окно добавляются и как можно управлять пунктами меню(от дисеблить там.. скрыть и проч..)
292
18 августа 2005 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by warezhka
Народ поделитесь каким-нито небольшим красивым примером диалогового приложения написанного на VC++ с использованием WIN API.
Хочется посмотреть как контролы в окно добавляются и как можно управлять пунктами меню(от дисеблить там.. скрыть и проч..)



Ну так береш в ресурсах делаеш диалоговое окно, кидаешь туда контролы. Потом в WinMain(...) не делая класса окна запускаешь это диалоговое окно DialogBox(...). Вот и все. В обработке событий длг окна можешь отлавливать мессаджи от контролов. Динамически создавать контролы CreateWindowEx(...).
Или интересует что-то другое ?

388
18 августа 2005 года
warezhka
129 / / 11.10.2004
Цитата:
Originally posted by Matush
Или интересует что-то другое ?



Как раз это и интересует:)

8.3K
19 августа 2005 года
Delphi-cs
45 / / 26.07.2005
Цитата:
Originally posted by Matush
Ну так береш в ресурсах делаеш диалоговое окно, кидаешь туда контролы. Потом в WinMain(...) не делая класса окна запускаешь это диалоговое окно DialogBox(...). Вот и все. В обработке событий длг окна можешь отлавливать мессаджи от контролов. Динамически создавать контролы CreateWindowEx(...).
Или интересует что-то другое ?


Почитал про бросание контролов и совсем запутался... Наверно ламка я ещо полная...
Я так пишу : :D

Код:
//Моё первое окно!

#include "windows.h"
#include "windowsx.h"

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

int APIENTRY WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
HWND hwnd;
MSG msg;
WNDCLASS w;
memset(&w,0,sizeof(WNDCLASS));
w.style               = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc         = WndProc;
w.hInstance           = hInstance;
w.hCursor             = LoadCursor(NULL, IDC_ARROW);
w.hbrBackground       = GetStockBrush(WHITE_BRUSH);
w.lpszClassName       = "C Windows";
RegisterClass(&w);

////////////////////////////////////
///Создаём окно////////////////////
//////////////////////////////////
hwnd = CreateWindowEx(
                    WS_EX_CLIENTEDGE,
                    "C Windows",
                    "C Windows",
                    WS_OVERLAPPEDWINDOW,                  //Стиль рамки
                              10,                                   //Отступ сверху
                    10,                                   //Отступ снизу
                    640,                                  //Ширина
                    480,                                  //Высота
                    NULL,
                    NULL,
                    hInstance,
                    NULL);

////////////////////////////////////
///Создаём кнопку//////////////////
//////////////////////////////////
CreateWindow("button", "Button1", WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
10, 10,
80, 30,
hwnd, (HMENU)10000, hInstance, NULL);


ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);

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

/////////////////////////////////////////////////
///А тут обработка сообщений!///////////////////
///////////////////////////////////////////////
LRESULT CALLBACK WndProc(HWND hwnd, UINT Message, WPARAM wparam,LPARAM lparam)
{
if (Message == WM_DESTROY)
{
    PostQuitMessage(0);
    return 0;
}
return DefWindowProc(hwnd,Message,wparam,lparam);
}

и никакие контролы не таскаю... Пишу и пишу...
292
19 августа 2005 года
Matush
726 / / 14.01.2004
В предыдущем посте я имел ввиду что мы нарисовали окошко (диалоговое) в редаторе ресурсов. Соответственно и контролов там накидали. А в проге написали:

BOOL CALLBACK MainDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{

case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDCANCEL:
EndDialog(hDlg, wParam);
}

}
return FALSE;
}

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE , LPSTR, int)
{
DialogBox(hInst, MAKEINTRESOURCE(IDD_MAINDLG), NULL, (DLGPROC)MainDlgProc);

return 0;
}

Вот и все. Имеем рабочее окошко с кнопочками\едитами\комбобоксами...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог