Win 32プログラミング追加コントロールおよび傍受2018-10-16
3321 ワード
Win 32プログラミングシリーズの記事:https://www.jianshu.com/nb/30332818
コントロールの追加
Hello Worldに加えて、以下を追加します. の方法を使用します.は、ボタン、入力ボックスなどを作成することができるものと同様であり、以下の通りである: .プルダウンボックスを作成するときは面倒で、次のようにデータをバインドする必要があります. イベントのバインド
コントロールの追加
Hello Worldに加えて、以下を追加します.
wWinMain
内部に変数を作成し、//
HWND hStatic = CreateWindow(
TEXT("static"), //
TEXT("hahaha"), //
WS_CHILD /* */ | WS_VISIBLE /* */ | WS_BORDER /* */,
120 /*X */, 20/*Y */, 150/* */, 80/* */, hwnd/* */,
(HMENU)1, //
hInstance, //
NULL
);
//
CreateWindow(L"EDIT", 0, WS_BORDER | WS_CHILD | WS_VISIBLE, 56, 10, 50, 18, hwnd, 0, hInstance, 0);
//
my_button = CreateWindow(L"BUTTON", L" ", WS_CHILD | WS_VISIBLE, 70, 70, 80, 25, hwnd, (HMENU)8, hInstance, 0);
TCHAR Planets[9][10] =
{
TEXT("Mercury"), TEXT("Venus"), TEXT("Terra"), TEXT("Mars"),
TEXT("Jupiter"), TEXT("Saturn"), TEXT("Uranus"), TEXT("Neptune"),
TEXT("Pluto??")
};
int xpos = 100; // Horizontal position of the window.
int ypos = 100; // Vertical position of the window.
int nwidth = 200; // Width of the window
int nheight = 200; // Height of the window
HWND hwndParent = hwnd; // Handle to the parent window
HWND hWndComboBox = CreateWindow(L"COMBOBOX", TEXT(""),
CBS_DROPDOWN | CBS_HASSTRINGS | WS_CHILD | WS_OVERLAPPED | WS_VISIBLE,
xpos, ypos, nwidth, nheight, hwndParent, NULL, hInstance,
NULL);
TCHAR A[16];
int k = 0;
memset(&A, 0, sizeof(A));
for (k = 0; k <= 8; k += 1)
{
wcscpy_s(A, sizeof(A) / sizeof(TCHAR), (TCHAR*)Planets[k]);
// Add string to combobox.
SendMessage(hWndComboBox, (UINT)CB_ADDSTRING, (WPARAM)0, (LPARAM)A);
}
// Send the CB_SETCURSEL message to display an initial item
// in the selection field
SendMessage(hWndComboBox, CB_SETCURSEL, (WPARAM)2, (LPARAM)0);
WindowProc
に対応するswitch-caseを追加します.以下:wchar_t a[6] = TEXT("Dian0");
int wmId = LOWORD(wParam);
int wmEvent = HIWORD(wParam);
switch (uMsg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
if (wmEvent == BN_CLICKED) {
a[4] = L'0' + (a[4] - L'0' + 1) % 10;
SetWindowText(my_button, a);
break;
}
else if (wmEvent == CBN_SELCHANGE)
// If the user makes a selection from the list:
// Send CB_GETCURSEL message to get the index of the selected list item.
// Send CB_GETLBTEXT message to get the item.
// Display the item in a messagebox.
{
int ItemIndex = SendMessage((HWND)lParam, (UINT)CB_GETCURSEL,
(WPARAM)0, (LPARAM)0);
TCHAR ListItem[256];
(TCHAR)SendMessage((HWND)lParam, (UINT)CB_GETLBTEXT,
(WPARAM)ItemIndex, (LPARAM)ListItem);
MessageBox(hwnd, (LPCWSTR)ListItem, TEXT("Item Selected"), MB_OK);
}
// Here don't write break on purpose!
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
// default