Windoows窗口程序三

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>

HINSTANCE g_hInstance=0;

//主窗口处理函数
LRESULT WndProc(HWND hWnd,UINT nMsg,WPARAM wParam,LPARAM lParam)
{
    switch(nMsg)
    {
        case WM_DESTROY:
            PostQuitMessage(0);
            break;
        default:
            break;
    }
    return DefWindowProc(hWnd,nMsg,wParam,lParam);
}

//注册窗口类
BOOL Register(LPSTR lpClassName,WNDPROC wndproc)
{
    WNDCLASSEX wce={0};
    wce.cbSize=sizeof(wce);
    wce.cbClsExtra=0;
    wce.cbWndExtra=0;
    wce.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
    wce.hCursor=NULL;
    wce.hIcon=NULL;
    wce.hIconSm=NULL;
    wce.hInstance=g_hInstance;
    wce.lpfnWndProc=wndproc;
    wce.lpszClassName=lpClassName;
    wce.lpszMenuName=NULL;
    wce.style=CS_HREDRAW|CS_VREDRAW;
    ATOM nAtom=RegisterClassEx(&wce);
    if(nAtom==0)
    {
        return FALSE;
    }
    return TRUE;
}

//创建主窗口
HWND CreateMain(LPSTR lpClassName,LPSTR lpWndName)
{
    HWND hWnd=CreateWindowEx(0,lpClassName,lpWndName,WS_OVERLAPPEDWINDOW,    CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,g_hInstance,NULL);
    return hWnd;
}

//显示窗口
void Display(HWND hWnd)
{
    ShowWindow(hWnd,SW_SHOW);
    UpdateWindow(hWnd);
}

//消息循环
void Message()
{
    MSG nMsg={0};
    while(GetMessage(&nMsg,NULL,0,0))
    {
        TranslateMessage(&nMsg);
        DispatchMessage(&nMsg);
    }
}

int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    g_hInstance=hInstance;
    if(!Register("Main",(WNDPROC)WndProc))
    {
        MessageBox(NULL,"注册失败","error",MB_OK);
        return -1;
    }
    HWND hWnd=CreateMain("Main","window");
    Display(hWnd);
    Message();
    return 0;
}
时间: 2024-10-24 13:57:48

Windoows窗口程序三的相关文章

Windoows窗口程序五

程序执行机制 过程驱动-程序的执行过程是按照预订好的顺序执行. 事件驱动-程序的执行是无序,用户可以根据需要随机触发相应的事件. Win32窗口程序就是采用事件驱动方式执行,也就是消息机制. 当系统通知窗口工作时,就采用消息的方式派发给窗口. 消息组成: 窗口句柄 消息ID 消息的两个参数 消息产生的时间 消息产生时的鼠标位置 //消息结构体 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam

Windoows窗口程序一

编写窗口程序的步骤: 1.定义WinMain入口函数 2.定义窗口处理函数(处理消息)WindowProc 3.注册窗口类RegisterClass 4.创建窗口(在内存中创建窗口)CreateWindow 5.显示窗口(根据内存的数据将窗口绘制出来)ShowWindow/UpdateWindow 6.消息循环(提取.翻译.派发消息)GetMessage,TranslateMessage,DisptachMessage 7.消息处理

Windoows窗口程序二

WNDCLASS属性style取值: CS_GLOBALCLASS--应用程序全局窗口类 CS_BYTEALIGNCLIENT--窗口客户区的水平位置8倍数对齐 CS_BYTEALIGNWINDOW--窗口的水平位置8倍数对齐 CS_HREDRAW--当窗口水平变化时,窗口重新绘制 CS_VREDRAW--当窗口垂直变化时,窗口重新绘制 CS_CLASSDC--该类型的窗口,都是有同一个绘图(DC)设备 CS_PARENTDC--该类型的窗口,使用他的父窗口的绘图(DC)设备 CS_OWNDC-

Windoows窗口程序七

WM_QUIT--用于结束消息循环处理 wParam - PostQuitMessage函数传递的参数 lParam - 不使用 当GetMessage收到这个消息后,会返回false,结束while处理,退出消息循环. WM_QUIT不会进入消息处理函数,因为这是由PostQuitMessage函数向窗口发送的消息,GetMessage直接返回了. WM_PAINT--绘图消息 键盘消息 鼠标消息 定时器消息 GetMessage--从系统获取消息,将消息从系统中移除,阻塞函数.当系统无消息时

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首先我们知道32位汇编是可以调用Windows API的,那么今天我们就调用windowsAPI来写一个窗口程序 如果你有windows开发知识,那么就很理解了,如果没有,那么跟着我写,跟着步骤去写,那么也可以写出来 首先我们要编写一个窗口程序(使用SDKAPI编写)有几个步骤 1.设计窗口类 2.注

【C/C++学院】0723-32位与64位/调戏窗口程序/数据分离算法/内存检索/二分查找法/myVC

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并阿赫利运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. 32位与64位 地址与内存的关系 4G = 4*1024M = 4*1024*1024k = 4*1024*1024*1024 Byte字节 =

LRESULT CALLBACK WndProc 窗口程序的 重点

LRESULT CALLBACK WndProc Windows程序所作的一切,都是回应发送给窗口消息处理程序的消息.这是概念上的主要难点之一,在开始写作Windows程序之前,必须先搞清楚. 窗口消息处理程序与窗口类别相关,窗口类别是程序调用RegisterClass注册的.依据该类别建立的窗口使用这个窗口消息处理程序来处理窗口的所有消息.Windows通过调用窗口消息处理程序对窗口发送消息. 在第一次建立窗口时,Windows调用WndProc.在窗口关闭时,Windows也调用WndPro

【DirectX11-Tutorial】编写第一个窗口程序creating a window

本系列主要参考此博客的文章l,同时会加上一点个人实践过程. ========================================== 分割线 ========================================== 这篇文章主要分为三个部分,首先是看一下创建窗口完整的代码,然后了解程序运作的主要细节,最后如何修改这些代码. 接下来开始第一个窗口程序,上一个程序中使用WinMain()函数开始整个程序,这一次将结合另一个函数WinProc(),这个函数将处理程序每一个系统运

创建简单的窗口程序

#include <windows.h> /*窗口函数的函数原型*/ LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {     char szClassName[] = "MainWClass";     WND