读书人

win32程序响应创建的旋钮(用API写的)

发布时间: 2013-12-22 15:06:55 作者: rapoo

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;
}
[解决办法]

引用:
HMENU hMenu, // handle to menu or child-window identifier


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;

[解决办法]
引用:
我要的是API写的,不是MFC。
////////////////////////////

HMENU hMenu, // handle to menu or child-window identifier
???
这句代码不理解,按钮的菜单??
hMenu就是控件ID
[解决办法]
引用:
大家等等,:

如果我要响应该按钮的 双 击 消 息 呢???



引用:
这是你的代码,我改动了一个ID(红色标注):

hwndButton = CreateWindowEx(WS_EX_WINDOWEDGE ,//附加样式
WC_BUTTON , // 窗口类
"BUTTON", // 窗口的标题
// 窗口样式 :可见,子窗口,……


WM_LBUTTONDBLCLK

读书人网 >VC/MFC

热点推荐