Windows基础

一、API应用程序接口

Windows API是Windows提供给开发者的函数集,提供了应用程序访问底层代码的捷径,方便开发


二、SDK,软件开发包

像win32 SDK,主要包括了API函数,帮助文档,辅助工具等。


三、数据类型

UINT              unsigned int

INT32             signed int

DWORD         unsigned long

WORD            unsigned short


UINT_PTR      WPARAM(UINT)

LONG_PTR    LPARAM(LONG)

一般用于参数,并且一般是回调函数的参数


Unicode和ASCII编码:

Unicode用两个字节存储一个字符,这个字符可以用来表示任何文字(包括英文,汉字,其他国家文字)。

ASCII  一个字符用一个字节来表示(一个字节8位) 但是非字母和英文符号就需要两个字节表示a =

一个汉字是一个字符 包括任何国家的字,一个就一个字符

现在编程主流对unicode比较推荐

所以微软目前SDK中保留了2API,用来适应不同的编码。


单字节字符和双字节字符:

char c=a;         //单字节字符变量

wchar_t wc=La;         //双字节字符变量(宽字符 unicode


windows编程中的字符和字符串类型:

CHAR(char)  WCHAR(wchar_t)  TCHAR

LPSTR(char*)  LPWSTR(wcahr_t*)  LPTSTR(根据字符集不同而意义不一样)

LPCSTR(const char*)  LPCWSTR(const wchar_t*)  LPCTSTR

MessageBoxA()    MessageBoxW()        MessageBox()   相当于-->MessageBoxT

_T() 自适应编码


_In_

_Out_

_In_opt_

_Out_opt_

只是起一个提示的作用


四、windows窗口介绍:

窗口是windows操作系统应用程序的重要元素

是系统和用户交互的接口

每个windows应用程序至少拥有一个窗口,成为主窗口

串口一般包括:标题栏、最小化框、客户区等


五、句柄

windows编程中  句柄可以认为是一个资源ID,标识了某个资源,包括窗口、图标、菜单等


六、windows消息机制

windows程序是基于事件驱动的程序设计。

windows程序和操作系统的通信都是通过消息来完成。

消息机制:

每个应用程序都有一个消息队列

线程中的时间都是以一个消息的形式存在被放在消息队列中,程序要通过循环不停地从消息队列中取得消息进行相应的响应操作。

操作系统和应用程序消息交互:

用户有某个动作,操作系统捕获了这个动作,构造要给消息(MSG结构体)加入到应用程序中,其实就是加入到应用程序的消息队列中,应用程序不停地(死循环)从这个消息队列中拿出消息来处理。


七、windows窗口创建

a>> 设计窗口类、注册窗口类

b>> 创建窗口、显示窗口、更新窗口

c>> 消息循环

d>> 消息处理

回调函数:(WndProc)

说的比较抽象,不用用户自己调用,系统自动调用。

 

系统:不是用户自己实现的代码

系统会根据特定的情况调用我们传入的函数;


八、游戏类型的消息循环

while(msg.message != WM_QUTI)
{
    if(PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    else
    {
        //想干嘛就干嘛,一般是更新渲染
    }
}

九、消息类型
windows程序中分为很多消息,不同消息可能属于不同的类型
a>> 窗口消息:与窗口相关的消息
b>> 命令消息:用于处理用户请求,以WM_COMMAND表示的消息
c>> 控件通知消息:统一由WM_NOTIFI表示。
d>> 用户自定义消息,可以传递更复杂的消息。WM_USER


十、SendMessage()和PostMessage()
两个都是把消息放到消息队列。
SendMessage是阻塞的,它会等发送的这个消息处理完成才返回。
PostMessage是非阻塞的,只管把消息发送出去,处不处理都立即返回。


十一、DestroyWindow(hWnd);                //关闭窗口


十二、PostQuitMessage(0);


十三、MoveWindow(hWnd, 0, 0, 400, 800,TRUE);       //改变窗口大小

十四、手动创建菜单

HMENU hMenu = CreateMenu();    //菜单句柄
HMENU hPopMenu = CreatePopupMenu();    //创建一个弹出菜单
AppendMenu(hMenu, MF_POPUP, (UINT_PTR)hPopMenu, L”test”);   //菜单项
AppendMenu(hPopMenu, MF_STRING, 2525, L”弹出个对话框”);     //子菜单项

十五、控件
windows程序中,一个控件就相当于是一个window, 所以可以通过创建窗口的形式创建控件
常用控件:
按钮(button)、文本框(Edit)、下拉列表(ComboBox)、列表框(ListBox)等。
windows标准控件其实也是一个窗口。

//创建按钮

HWND hBtn = CreateWindow(_T(“Button”),
                          _T(“text”),
                          WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
                          100, 100, 50,
                          hWnd, /*id*/1024,
                          hInstance, NULL);

//创建文本框

HWND hEdit = CreateWindow(_T(“Edit”),
                          _T(“This is a edit text”),
                          WS_CHILD | WS_VISIBLE | ES_MULTILINE,
                          100, 200, 300,
                          hWnd, (HMENU)111,
                          hInstance, NULL);


十六、SetWindowText();    //设置文本框文字

十七、GetWindowText();    //获取文本框内容;

十八、LoadAccelerators(hInstance, MAKEINTRSOURCE(IDC_RESID);   //调入加速键表。该函数调入指定的加速键表


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值