纯winapi 实现最简单的按钮

 
#include  < windows.h >

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int  WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
    PSTR szCmdLine, 
int  iCmdShow)
{
    
static  TCHAR szAppName[]  =  TEXT ( " BtnLook " ) ;
    HWND         hwnd ;
    MSG          msg ;
    WNDCLASS     wndclass ;

    wndclass.style         
=  CS_HREDRAW  |  CS_VREDRAW ;
    wndclass.lpfnWndProc   
=  WndProc ;
    wndclass.cbClsExtra    
=   0  ;
    wndclass.cbWndExtra    
=   0  ;
    wndclass.hInstance     
=  hInstance ;
    wndclass.hIcon         
=  LoadIcon (NULL, IDI_APPLICATION) ;
    wndclass.hCursor       
=  LoadCursor (NULL, IDC_ARROW) ;
    wndclass.hbrBackground 
=  (HBRUSH) GetStockObject (WHITE_BRUSH) ;
    wndclass.lpszMenuName  
=  NULL ;
    wndclass.lpszClassName 
=  szAppName ;

    
if  ( ! RegisterClass ( & wndclass))
    {
        MessageBox (NULL, TEXT (
" This program requires Windows NT! " ),
            szAppName, MB_ICONERROR) ;
        
return   0  ;
    }

    hwnd 
=  CreateWindow (szAppName, TEXT ( " Button Look " ),
        WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
// 设置窗口起始坐标
         200 200 , // 设置窗口宽、高
        NULL, NULL, hInstance, NULL) ;

    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;
    
while  (GetMessage ( & msg, NULL,  0 0 ))
    {  
        TranslateMessage (
& msg) ;
        DispatchMessage (
& msg) ;
    }
    
return  msg.wParam ;
}

LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    HWND BS_hwnd;

    
switch  (message)
    {
    
case  WM_CREATE :
        
            BS_hwnd 
=  CreateWindow ( TEXT( " button " ),  // 类别
            L " PUSHBUTTON " , // 按钮上的文本
            WS_CHILD  |  WS_VISIBLE  |  BS_PUSHBUTTON, // 样式
             10 10 , // 相对的起始坐标
             150 25 , // 宽,高
            hwnd, (HMENU)  1 , // 可以通过LOWORD (wParam)来获取,识别哪个按钮发送消息,当然还有其它方式
            ((LPCREATESTRUCT) lParam) -> hInstance, NULL) ;
        
break ;    

    
case  WM_DRAWITEM :
    
case  WM_COMMAND :
        MessageBox (hwnd, TEXT (
" Hello " ), TEXT ( " HelloMsg " ),  0 );
        
break  ;

    
case  WM_DESTROY :
        PostQuitMessage (
0 ) ;
        
return   0  ;
    }
    
return  DefWindowProc (hwnd, message, wParam, lParam) ;
}

 

转载于:https://www.cnblogs.com/fire-phoenix/archive/2010/09/23/1833400.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值