Форумчанин
Регистрация: 03.01.2015
Сообщений: 160
|
Не появляется Button
Добрый день!
Помогите, пожалуйста!
Создаю ListBox и Button
При запуске программы ListBox отображается, а Button не появляется. Подскажите, пожалуйста, в чем проблема?
Код:
#include <Windows.h>
#include <WindowsX.h>
#include <CommCtrl.h>
#include <tchar.h>
#include <stdlib.h>
#define IDC_LISTBOX 2001
#define IDC_BUTTONSHOWPROC 2002
#define WM_ADDITEM WM_USER + 1
HWND hDlg = NULL;
HWND hFindDlg = NULL;
TCHAR szBuffer[100] = TEXT("");
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
void OnIdle(HWND hwnd);
BOOL PreTranslateMessage(LPMSG lpMsg);
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
void OnSize(HWND hwnd, UINT state, int cx, int cy);
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void OnAddItem(HWND hwnd);
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE, LPTSTR lpszCmdLIne, int nCmdShow)
{
WNDCLASSEX wcex = { sizeof(WNDCLASSEX) };
wcex.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
wcex.lpfnWndProc = MyWindowProc;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = TEXT("Класс");
wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
if (0 == RegisterClassEx(&wcex))
{
return -1;
}
HWND hWnd = CreateWindowEx(0, TEXT("Класс"), TEXT("Программа"), WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
LoadLibrary(TEXT("ComCtl32.dll"));
if (NULL == hWnd)
{
return -1;
}
ShowWindow(hWnd, nCmdShow);
MSG msg;
BOOL bRet;
for (;;)
{
while (!PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
OnIdle(hWnd);
}
bRet = GetMessage(&msg, NULL, 0, 0);
if (bRet == -1)
{
}
else if (FALSE == bRet)
{
break;
}
else if (PreTranslateMessage(&msg) == FALSE)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int)msg.wParam;
}
LRESULT CALLBACK MyWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
int i;
switch (uMsg)
{
HANDLE_MSG(hWnd, WM_CREATE, OnCreate);
HANDLE_MSG(hWnd, WM_SIZE, OnSize);
HANDLE_MSG(hWnd, WM_COMMAND, OnCommand);
case WM_ADDITEM:
OnAddItem(hWnd);
return 0;
break;
}
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
void OnIdle(HWND hwnd)
{
}
BOOL PreTranslateMessage(LPMSG lpMsg)
{
return IsDialogMessage(hDlg, lpMsg) || IsDialogMessage(hFindDlg, lpMsg);
}
BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct)
{
CreateWindowEx(0, TEXT("ListBox"), NULL,
WS_CHILD | WS_VISIBLE | WS_BORDER | LBS_STANDARD, 10, 10, 250, 410, hwnd, (HMENU)IDC_LISTBOX, lpCreateStruct->hInstance, NULL);
CreateWindowEx(0, TEXT("ButtonShowProc"), TEXT("Показать список всех процесов"),
WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, 270, 10, 200, 40, hwnd, (HMENU)IDC_BUTTONSHOWPROC, lpCreateStruct->hInstance, NULL);
return TRUE;
}
void OnSize(HWND hwnd, UINT state, int cx, int cy)
{
if (state != SIZE_MINIMIZED)
{
HWND hwndCtl = GetDlgItem(hwnd, IDC_LISTBOX);
MoveWindow(hwndCtl, 10, 10, 250, cy - 20, TRUE);
}
}
void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
if (BN_CLICKED == codeNotify)
{
HINSTANCE hInstance = GetWindowInstance(hwnd);
switch (id)
{
case IDC_BUTTONSHOWPROC:
{
}
break;
}
}
}
void OnAddItem(HWND hwnd)
{
HWND hwndCtl = GetDlgItem(hwnd, IDC_LISTBOX);
int iItem = ListBox_AddString(hwndCtl, szBuffer);
ListBox_SetCurSel(hwndCtl, iItem);
}
|