Windows编程 - First Window

#include  " stdafx.h "

//  窗口函数的函数原形
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);

int  APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     
int        nCmdShow)
ExpandedBlockStart.gifContractedBlock.gif
{
    
char szClassName[] = "MainWClass";    
    WNDCLASSEX wndclass;
    
    
// 用描述主窗口的参数填充WNDCLASSEX结构
    wndclass.cbSize = sizeof(wndclass);    // 结构的大小
    wndclass.style = CS_HREDRAW|CS_VREDRAW;    // 指定如果大小改变就重画
    wndclass.lpfnWndProc = MainWndProc;    // 窗口函数指针
    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 = szClassName ;    // 窗口类的名称    
    wndclass.hIconSm = NULL;        // 没有类的小图标
    
    
// 注册这个窗口类
    ::RegisterClassEx(&wndclass); 
    
    
// 创建主窗口
    HWND hwnd = ::CreateWindowEx( 
        
0,            // dwExStyle,扩展样式    
        szClassName,        // lpClassName,类名            
        "My first Window!",    // lpWindowName,标题        
        WS_OVERLAPPEDWINDOW,    // dwStyle,窗口风格    
        CW_USEDEFAULT,        // X,初始 X 坐标        
        CW_USEDEFAULT,        // Y,初始 Y 坐标        
        CW_USEDEFAULT,        // nWidth,宽度            
        CW_USEDEFAULT,        // nHeight,高度            
        NULL,            // hWndParent,父窗口句柄            
        NULL,            // hMenu,菜单句柄        
        hInstance,        // hlnstance,程序实例句柄        
        NULL) ;            // lpParam,用户数据            

    
if(hwnd == NULL)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        ::MessageBox(NULL, 
"创建窗口出错!""error",  MB_OK);
        
return -1;
    }


    
// 显示窗口,刷新窗口客户区
    ::ShowWindow(hwnd, nCmdShow);
    ::UpdateWindow(hwnd);
    
    
// 从消息堆中取出消息
    MSG msg;    
    
while(::GetMessage(&msg, NULL, 00))
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
// 转化键盘消息
        ::TranslateMessage(&msg);
        
// 将消息发送到相应的窗口函数
        ::DispatchMessage(&msg);
    }


    
// 当GetMessage返回0时程序结束
    return msg.wParam;
}




LRESULT CALLBACK MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
ExpandedBlockStart.gifContractedBlock.gif
{
    
char szText[] = "最简单的窗口程序!";
    
switch (message)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{         
    
case WM_PAINT: // 窗口客户区需要重画
ExpandedSubBlockStart.gifContractedSubBlock.gif
        {
            HDC hdc;
            PAINTSTRUCT ps;

            
// 使无效的客户区变的有效,并取得设备环境句柄
            hdc = ::BeginPaint (hwnd, &ps) ;    
            
// 显示文字
            ::TextOut(hdc, 1010, szText, strlen(szText));
            ::EndPaint(hwnd, 
&ps);
            
return 0;
        }
    
    
case WM_DESTROY: // 正在销毁窗口

        
// 向消息队列投递一个WM_QUIT消息,促使GetMessage函数返回0,结束消息循环
        ::PostQuitMessage(0) ;
        
return 0 ;
    }


    
// 将我们不处理的消息交给系统做默认处理
    return ::DefWindowProc(hwnd, message, wParam, lParam);
}

转载于:https://www.cnblogs.com/answeryi/archive/2009/07/12/1522085.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值