首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2013-12-22 
win32程序响应创建的按钮(用API写的).代码如下:创建了一个按钮,并且成功显示,但我要响应这个按钮,我就无从

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

热点排行