win32程序响应创建的按钮(用API写的).
代码如下:
创建了一个按钮,并且成功显示,但我要响应这个按钮,我就无从下手了,
记得MFC都有 ID 什么的,现在这个ID不晓得怎么下手啊,
求指点~~~~~~
HWND CreateButton()
{
HWND hwndButton;
hwndButton = CreateWindowEx(WS_EX_WINDOWEDGE ,//附加样式
WC_BUTTON ,//窗口类
"BUTTON",// 窗口的标题
// 窗口样式 :可见,子窗口,
WS_CHILDWINDOW|BS_DEFPUSHBUTTON,
80,
260,
80,
30,
mainhwnd,// 父窗口句柄
(HMENU)NULL,// 没有菜单
mhInstance,// 应用程序实例
NULL );// 没有附加
ShowWindow(hwndButton, SW_SHOWNORMAL); //显示
return hwndButton;
}
[解决办法]
HMENU hMenu, // handle to menu or child-window identifier
[解决办法]
http://blog.sina.com.cn/s/blog_659348480100nod0.html
http://download.csdn.net/source/1203928
自己看看吧
[解决办法]
case WM_COMMAND 请察看这个消息! 你需要捕捉它,下面的代码对你有作用。
#include <windows.h>
LRESULT CALLBACK WindowProcedure(HWND,UINT,WPARAM,LPARAM);
char szClassName[]= "Filepool ";
int WINAPI WinMain(HINSTANCE hThisInstance,HINSTANCE hPrevInstance,LPSTR lpszArgument,int nFunsterStil)
{
HWND hwnd;
MSG messages;
WNDCLASSEX wincl;
wincl.hInstance=hThisInstance;
wincl.lpszClassName=szClassName;
wincl.lpfnWndProc=WindowProcedure;
wincl.style=CS_DBLCLKS;
wincl.cbSize=sizeof(WNDCLASSEX);
wincl.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wincl.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
wincl.hCursor=LoadCursor(NULL,IDC_ARROW);
wincl.lpszMenuName=NULL;
wincl.cbClsExtra=0;
wincl.cbWndExtra=0;
wincl.hbrBackground=(HBRUSH)COLOR_BACKGROUND;
if(!RegisterClassEx(&wincl))
{
return 0;
}
hwnd=CreateWindowEx(0,szClassName, "Filepool ",WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,544,375,HWND_DESKTOP,NULL,hThisInstance,NULL);
ShowWindow(hwnd,nFunsterStil);
while(GetMessage(&messages,NULL,0,0))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
return messages.wParam;
}
LRESULT CALLBACK WindowProcedure(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
static HWND hwndButton = 0;
static int cx, cy;/* Height and width of our button. */
switch(message)
{
case WM_CREATE:
{
/* The window is being created. Create our button
* window now. */
TEXTMETRIC tm;
/* First we use the system fixed font size to choose
* a nice button size. */
hdc = GetDC (hwnd);
SelectObject (hdc, GetStockObject (SYSTEM_FIXED_FONT));
GetTextMetrics (hdc, &tm);
cx = tm.tmAveCharWidth * 30;
cy = (tm.tmHeight + tm.tmExternalLeading) * 2;
ReleaseDC (hwnd, hdc);
/* Now create the button */
hwndButton = CreateWindow (
"button ",/* Builtin button class */
"Click Here ",
WS_CHILD
[解决办法]
WS_VISIBLE
[解决办法]
BS_PUSHBUTTON,
0, 0, cx, cy,
hwnd,/* Parent is this window. */
(HMENU) 1,/* Control ID: 1 */
((LPCREATESTRUCT) lParam)-> hInstance,
NULL
);
return 0;
break;
}
case WM_COMMAND:
/* Check the control ID, notification code and
* control handle to see if this is a button click
* message from our child button. */
if (LOWORD(wParam) == 1 &&
HIWORD(wParam) == BN_CLICKED &&
(HWND) lParam == hwndButton)
{
/* Our button was clicked. Close the window. */
DestroyWindow (hwnd);
}
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wParam,lParam);
}
return 0;
}
[解决办法]
CreateWindow的参数HMENU
[解决办法]
HWND hButton = NULL;
#define IDC_BUTTON 0x1101
case WM_CREATE:
{
hButton = CreateWindow(_T("BUTTON"), _T("Button"), WS_CHILD
[解决办法]
WS_VISIBLE
[解决办法]
BS_PUSHBUTTON,
0, 0, 100, 30, hWnd, (HMENU)IDC_BUTTON, hInst, NULL);
}
break;
case WM_COMMAND:
wmId = LOWORD(wParam);
wmEvent = HIWORD(wParam);
// Parse the menu selections:
switch (wmId)
{
case IDC_BUTTON:
MessageBox(hWnd, _T("Hello,World!"), _T("Message"), MB_OK
[解决办法]
MB_ICONINFORMATION);
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
break;
[解决办法]
hMenu就是控件ID
[解决办法]
WM_LBUTTONDBLCLK