Задавайте свои вопросы в комментариях :)
Содержание:
Как создать окно?
Как создать диалог и использовать его в качестве главного окна?
Как получить значения элементов окна/диалога?
Очень полезные материалы:
Основы программирования для Win32 API (Алексей Соловьев)
Как создать окно
c использованием CRT (runtime library)
#includeСсылки:#include // чтобы не было проблем с ANSI и UNICODE кодировками // Главная функция int WINAPI WinMain (HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // если не нужна коммандая строка MSG Msg; //1. Создаем класс окна WNDCLASS WndClass; TCHAR szClassName[]=_TEXT("Garik class"); // имя класса окна WndClass.style=CS_HREDRAW | CS_VREDRAW | CS_OWNDC; // cм. Window Class Styles WndClass.lpfnWndProc=GarikWinProc; // функция обработки сообщений окна WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hInstance=hInstance; WndClass.hIcon=LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN)); // наша иконка WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); // системный ресурс WndClass.hbrBackground=CreateSolidBrush(tema.cl_window.fon); WndClass.lpszMenuName=NULL; WndClass.lpszClassName=szClassName; if(!RegisterClass(&WndClass)) { MessageBox(NULL,_TEXT("Невозможно создать класс"),NULL,MB_OK|MB_ICONERROR); return 0; } //2. Создаем окно. см Window Styles, Extended Window Styles if(!CreateWindow(WS_EX_LAYERED|WS_EX_TOOLWINDOW|WS_EX_TOPMOST,szClassName,NULL,WS_OVERLAPPEDWINDOW, X,Y, Width,Height, NULL,NULL, hInstance,NULL)) { MessageBox(NULL,_TEXT("Невозможно создать окно"),NULL,MB_OK|MB_ICONERROR); return 0; } //3. Обрабатываем сообщения окна while(GetMessage(&Msg,NULL,0,0)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } return (int)Msg.wParam; } // Функция обработки сообщений окна LRESULT CALLBACK GarikWinProc(HWND hWnd,UINT Message, UINT wParam, LONG lParam) { HDC hDC; PAINTSTRUCT PaintStruct; switch(Message) { case WM_PAINT: hDC=BeginPaint(hWnd,&PaintStruct); EndPaint(hWnd,&PaintStruct); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return DefWindowProc(hWnd,Message,wParam,lParam); }
Using Windows, Window Styles, Extended Window Styles, Window Class Styles
Как создать диалог и использовать его в качестве главного окна
Описание интерфейса диалога обычно содержатся в файле ресурсов rc.
Пример описания ресурса диалога:
IDD_DIALOG1 DIALOGEX 0, 0, 229, 210 STYLE DS_SETFONT | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Настройки подключения к 1С" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Сохранить",IDOK,66,191,50,14 PUSHBUTTON "Закрыть",IDCANCEL,174,191,50,14 LISTBOX IDC_LIST1,13,16,204,103,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_VSCROLL | WS_TABSTOP GROUPBOX "Пользователь",IDC_STATIC,7,135,217,51 LTEXT "Имя:",IDC_STATIC,27,151,16,8 LTEXT "Пароль:",IDC_STATIC,16,167,28,8 EDITTEXT IDC_EDIT1,47,150,170,12,ES_AUTOHSCROLL EDITTEXT IDC_EDIT2,47,167,169,12,ES_PASSWORD | ES_AUTOHSCROLL GROUPBOX "Информационные базы",IDC_STATIC,7,5,217,128 LTEXT "",IDC_STATIC9,14,121,203,8 PUSHBUTTON "Удалить",IDC_BUTTON1,120,191,50,14 PUSHBUTTON "Импорт баз",IDOK2,7,191,55,14 ENDПример без использования CRT, предварительно нужно настроить проект:
Linker -> Advanced -> Entry Point: _entry
Linker -> Debugging -> Generate Debug Info: /NO
Linker -> Manifest File -> Generate Manifest /NO
Linker -> Input -> Ignore All Default Librares: Yes
C/C++ -> Code Generation -> Runtime Library : /MT
C/C++ -> Code Generation -> Buffer Security Check: /GS-
void _entry() { DialogBox(GetModuleHandle(NULL),MAKEINTRESOURCE(IDD_DIALOG1),NULL,DialogProc); ExitProcess(0); } BOOL CALLBACK DialogProc(HWND hwndDlg,UINT Message, UINT wParam, LONG lParam) { switch (message) { case WM_COMMAND: switch (LOWORD(wParam)) { case IDCANCEL: EndDialog(hwndDlg, wParam); return TRUE; } } return FALSE; }Ссылки: Dialog Box Reference
Как получить значения элементов окна/диалога?
Основные функции:
GetWindowText, GetWindowTextLength, SetWindowText
GetDlgItem, GetDlgItemInt, GetDlgItemText, SetDlgItemText, SetDlgItemInt
Ссылки:
Dialog Box Functions, Window Functions, Control Library