#include <windows.h>
LONG APIENTRY WndProc(HWND, UINT, WPARAM, LPARAM);
const char szWindowClass[] = "Windows";
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;
HWND hWndMain;
LPRECT rcParent;
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance,IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL,IDC_UPARROW);
wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+23);
wc.lpszMenuName = NULL;
wc.lpszClassName = szWindowClass;
WNDCLASS wpc;
//Step1. Registering Window Class
if (!RegisterClass(&wc))
{
MessageBox(NULL, "Window Registration Failed", "Error", MB_ICONEXCLAMATION | MB_OK);
return 1;
}
//Step 2.Creating the Window
hWndMain = CreateWindow(szWindowClass,"Main Window",WS_OVERLAPPEDWINDOW,250,350,300,300,NULL, NULL, hInstance, NULL);
if (!hWndMain)
{
MessageBox(NULL, "Window Creation Failed", "Error", MB_ICONEXCLAMATION | MB_OK);
return 2;
}
ShowWindow(hWndMain,nCmdShow);
UpdateWindow(hWndMain);
//Step 3. Procedures to fill the combobox values
void FillListBox(HWND Box)
{
TCHAR *pVarName[] = {"1", "1.5", "2", "2.5", "3"};
for(int i=0; i<5; i++)
SendMessage(Box, CB_ADDSTRING, 0, (LPARAM)pVarName);
}
void FillListBox2(HWND Box2)
{
TCHAR *pVarName2[] = {"50", "75", "100",};
for(int j=0; j<3; j++)
SendMessage(Box2, CB_ADDSTRING, 0, (LPARAM)pVarName2[j]);
}
//Step 4. Creating Funny stuff
HWND Box = CreateWindow("combobox","detka",CBS_DROPDOWN|WS_CHILD|WS_VISIBLE,100,10,100,30,hWndMain,NULL,NULL,NULL);
HWND Box2 = CreateWindow("combobox","detka",CBS_DROPDOWN|WS_CHILD|WS_VISIBLE,100,85,100,30,hWndMain,NULL,NULL,NULL);
HWND Button = CreateWindow("button","Beeep!",WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,120,170,65,45,hWndMain,NULL,NULL,NULL);
HWND Text = CreateWindow("static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT,100,50,100,20,hWndMain,NULL,NULL,NULL);
HWND Text2 = CreateWindow("static",NULL,WS_CHILD|WS_VISIBLE|SS_LEFT,100,130,100,20,hWndMain,NULL,NULL,NULL);
//Step5. Fill in the combobox with values
//Populate ComboBoxes
FillListBox(Box);
FillListBox2(Box2);
//Set a Default Selection
SendMessage(Box,CB_SETCURCEL, 0, 0);
GetWindowText(Box, pVarName, 30);
SetWindowText(Text, pVarName);
SendMessage(Box2, CB_SETCURSEL, 0, 0);
GetWindowText(Box2, pVarName2, 30);
SetWindowText(Text2, pVarName2);
//Step 6: The Message Loop
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// Step 7. Window Procedure for main window
HINSTANCE hInstance;
LONG APIENTRY WndProc(HWND hWndMain, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case BM_CLICK:
//Beep();
case WM_CLOSE:
DestroyWindow(hWndMain);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWndMain, message, wParam, lParam);
}
return 0;
}
Заполнение Combobox и функция Beep
И если может кто-то знает какие именно значения частоты и времени надо для функцыи Beep.
Cпасибо!
Код:
Советую почитать МСДН или что-нибудь на русском, непосредственно по созданию ДОЧЕРНИХ ОКОН функциями CreateWindow или CreateWindowEx.
Тут: http://vsokovikov.narod.ru/New_MSDN_API/Window/win_child.htm или тут:
http://www.wasm.ru/article.php?article=1001009
Особое внимание нужно обратить на параметры передаваемые этим функциям.
Контролы лучше рисовать на сообщение виндовс - WM_CREATE.
Что касается Beep, то частота и длительность звукового сигнала определяются аппаратным и программным обеспечением и различны для разных компьютеров. Можно глянуть на эту функцию здесь:
http://www.firststeps.ru/mfc/winapi/r.php?99
Хотя можно использовать и функцию MessageBeep, чтобы проигрывать готовый звуковой файл:
http://www.firststeps.ru/mfc/winapi/r.php?104
Возможно я ещё чего-нибудь не заметил - сказал только о том, что сразу бросилось в глаза.