Win32API学习笔记第五章(三)

编辑类

这个类就相当于一个简易的文本编辑器,这个文本编辑器的窗口又绝大部分文本编辑器的特性:可以Ctrl+c,+v+x进行复制粘贴剪切等基本操作
声明方法:

hWnd = CreateWindow(TEXT("edit"),NULL,WS_CHILD|WS_VISIBLE|...,0,0,0,0,hWndPar,(HMENU)ID,hInstance,NULL)

其中窗口大小要通过MoveWindow进行修改,中间的…是可选项,这里可选项很多,就不一一例举了,并且可以通过像向这个窗口SendMessage加上相应的消息就可以让其返回一些需要的东西:
EM_GETLINECOUNT,得到行数(最后两个参数为0就好)
EM_LINELENGTH,得到一行的文本长度(wParam需要获得所需要的行的号)
EM_GETLINE,得到一整行的内容到缓冲区(wParam为行号,lParam为缓冲区指针)
同样的,可以通过SetWindowLong来设置一个额外的窗口过程来增加其消息特性(窗口子类化)


列表框

列表框就是类似于一个列表里面是可供选定的文本串
创建方法:

hWnd = CreateWindow(TEXT("lisybox"),NULL,WS_CHILD|WV_VISIBLE...,x,y,Width,Height,hWndPar,(HMENU)ID,hInstance,NULL);

现在来整理几个这个窗口类的几个特殊的消息:
LB_ADDSTRING,LB_INSTERSTRING前者是当有LBS_SORT风格时插入字符串的方法(SendMessage(hWnd,….,0.(LPARAM)szString)后者是没有的,并且,这个插入将返回一个值,当返回为LB_ERRSPACE时表示超过了可用的内存空间,LB_ERR表示其他的原因,返回0表示正确
LB_DELETESTRING,LB_RESETCONTEXT前者是删除一行wParam就是行数,后者是删除所有


下面是一个有意义的例子:

/*---------------------------------------------
   HEAD.C -- Displays beginning (head) of file
             (c) Charles Petzold, 1998
  ---------------------------------------------*/

#include <windows.h>

#define ID_LIST     1
#define ID_TEXT     2

#define MAXREAD     8192
#define DIRATTR     (DDL_READWRITE | DDL_READONLY | DDL_HIDDEN | DDL_SYSTEM | \
                     DDL_DIRECTORY | DDL_ARCHIVE  | DDL_DRIVES)
#define DTFLAGS     (DT_WORDBREAK | DT_EXPANDTABS | DT_NOCLIP | DT_NOPREFIX)

LRESULT CALLBACK WndProc  (HWND, UINT, WPARAM, LPARAM) ;
LRESULT CALLBACK ListProc (HWND, UINT, WPARAM, LPARAM) ;

WNDPROC OldList ;

int WINAPI WinMain (HINSTANCE hInstance, 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值