纯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,
//设置窗口起始坐标
        200200,//设置窗口宽、高
        NULL, NULL, hInstance, NULL) ;

    ShowWindow (hwnd, iCmdShow) ;
    UpdateWindow (hwnd) ;
    
while (GetMessage (&msg, NULL, 00))
    {  
        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,//样式
            1010,//相对的起始坐标
            15025,//宽,高
            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) ;
}

 

posted @ 2010-09-23 16:18  火凤凰工作室  阅读(1932)  评论(1编辑  收藏  举报