zoukankan      html  css  js  c++  java
  • 2 窗口与消息

    案例代码

    #include <Windows.h>
    LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam){
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rect;
        switch(message){
        case WM_CREATE:
            PlaySound(TEXT("hellowin.wav"),NULL,SND_FILENAME|SND_ASYNC);
            return 0;
        case WM_PAINT:
            hdc = BeginPaint(hwnd,&ps);
            GetClientRect(hwnd,&rect);
         DrawText(hdc,TEXT("Hello,windows98!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
            EndPaint(hwnd,&ps);
            return 0;
        case WM_DESTROY:
            PostQuitMessage(0);
            return 0;
        } 
        return DefWindowProc(hwnd,message,wParam,lParam);
    }
    
    int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE preHinstance,PSTR cmdLine,int icmdShow){
        
        static TCHAR szAppName[] = TEXT("helloWin");
        HWND hwnd;//画布
        MSG msg;//信息
        WNDCLASS wndclass;//窗体类别
    //对wndclass进行初始化开始 //horizontal redraw //vertical redraw wndclass.style = CS_HREDRAW | CS_VREDRAW; //窗口类确定了处理窗口消息的窗口过程,实际是指向该函数的指针 wndclass.lpfnWndProc = WndProc; wndclass.cbClsExtra = 0; wndclass.cbWndExtra = 0; //当前应用程序实例句柄 wndclass.hInstance = hinstance; //加载图标,获得图标句柄以供程序使用 //针对函数LoadIcon,如果要加载本程序内的图标,需将NULL换位本程序实例的句柄 //第二个参数用于识别该图标 //IDI ID for an icon wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION); //加载鼠标光标,获得鼠标句柄以供程序使用 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW); //为该窗口的客户区指定背景色 //handle to a brush //GetStockObject,Windows API函数。该函式检索预定义的备用笔、刷子、字体或者调色板的句柄。 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wndclass.lpszMenuName = NULL; wndclass.lpszClassName = szAppName; //在创建应用程序窗口之前,必须调用函数RegisterClass来注册窗口类。 if(!RegisterClass(&wndclass))//为应用窗口注册一个窗口类 { MessageBox(NULL,TEXT("The program requires windows NT!"),szAppName,MB_ICONERROR); return 0; } //基于窗口类创建一个窗口 //handle to the window hwnd = CreateWindow(szAppName,// 窗口类名称 TEXT("The Hello program"),// 窗口标题 WS_OVERLAPPEDWINDOW,// 窗口风格 CW_USEDEFAULT,// 初始x坐标 CW_USEDEFAULT,// 初始y坐标 CW_USEDEFAULT,// 初始x方向尺寸 CW_USEDEFAULT,// 初始y方向尺寸 NULL,// 父窗口句柄 NULL,// 窗口菜单句柄 hinstance, // 窗口实例句柄 NULL); // 创建参数 //在CreateWindow完成之后只是在内存中保存了createWindow的一些信息,如果要在屏幕中显示窗口 ShowWindow(hwnd,SW_SHOWNORMAL); //指示窗口对自身进行重绘 UpdateWindow(hwnd); //从消息队列中获取信息,一直检索 //第二个参数~第四个参数均制为NULL或0表明该程序希望获取由该程序所创建的所有窗口消息 while(GetMessage(&msg,NULL,0,0)) { //翻译一些键盘消息 //将msg结构返给windows以进行某些键盘消息的转换 TranslateMessage(&msg); //将消息发送给窗口过程 DispatchMessage(&msg); } //return msg.wParam; return 0; }

    提示

    (一)如果想要调用PlaySound函数,需要为环境添加winmm.lib的引用,否则会出现如下错误:

    无法解析的外部符号 __imp__PlaySoundA@12,该符号在函数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z) 中被引用。

    具体配置步骤如下:

    ①:找到解决方案资源管理器,对自己的项目点击右键,选择属性

    ②:找到配置属性下的连接器下的输入

    ③:选择附加依赖项后的小三角

    ④:添加winmm.lib,点击确定,应用即可

    ⑤:点击运行,即可得到想要的效果

    (二)我用的是windows XP经典开机音乐代替hellowin.wav,好资源是需要分享滴,在此分享给大家:helloWin

    
    
    
  • 相关阅读:
    Vuejs的一些总结
    vue.js中$emit的理解
    Vue.js——60分钟快速入门
    [ARC096E] Everything on It
    [ARC093E] Bichrome Spanning Tree
    [ARC093F] Dark Horse
    [ARC100F] Colorful Sequences
    卡特兰数 学习笔记
    【原】图练习
    【原】图
  • 原文地址:https://www.cnblogs.com/huanbia/p/4642927.html
Copyright © 2011-2022 走看看