Win32 应用界面构造

来源:互联网 发布:什么是爱情 知乎 编辑:程序博客网 时间:2024/06/06 07:42
 最近想学多一点,所以拿win32来玩了一下。
 最初很纳闷win32怎样摆控件的,看了很多程序,明白了,除了系统已经设定好的系统控件button,edit,list box等,所有的控件都得在这几个基本控件上靠自己组合写成新的控件。

普通界面
        首先,生成界面,肯定要用RegisterClassEx注册一个界面类,这个类里面包含了一些控件界面的基本信息,然后在调用CreateWindow把控件生成出来,如果想生成一个Windows窗口界面,则跟着还需要调用 ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
来显示Windows窗口界面。
         hWnd为此窗口的全局句柄,所有的子控件都得依附其用CreateWindow生成,举个生成button的例子:
hWndStartbutton = CreateWindow(_T("button"),_T("开始"),WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON,
  2,2,100,25,hWnd,(HMENU)1,((LPCREATESTRUCT)lParam)->hInstance, NULL);参数分别为:在系统里注册控件的名(如果是系统控件,系统默认就给其注册了),控件界面所显示的文字,控件样式,位置x,位置y,宽,高,Windows界面句柄,控件的ID,整个进程的句柄。
        如果想改变控件字体,则首先通过CreateFontIndirect生成一个字体结构,具体如:
LOGFONT   logfont; 
  ZeroMemory(&logfont,sizeof(LOGFONT));  
  logfont.lfCharSet =  GB2312_CHARSET;  
  logfont.lfHeight  =  -12;  
  _tcscpy(logfont.lfFaceName,_T("宋体"));  
  hFont = CreateFontIndirect(&logfont);
然后用 SendMessage(hWndStartbutton, WM_SETFONT, (WPARAM)hFont, MAKELPARAM(TRUE,0) )发消息到控件上,改变控件的字体。

自定义控件
     
注册一个控件类,绑定好处理消息函数,在消息处理函数中,处理WM_PAINT时绘画控件,处理WM_COMMAND时,根据用户传来的不同的WPARAM wParam, LPARAM lParam值,作出相应的操作处理。

使用控件的注意:
1、CEdit或Edit Control中获取其文本信息,LRESULT lret =  SendMessage(tccHWND->hwndEdit, EM_GETLINE , (WPARAM)NULL,  (LPARAM)_filterip);在_filterip这个获取文本数组的第一位_filterip[0]必须要设置为数组的长度才能获取文本信息。

2、在Combox Control中必须要按下下拉按钮把下拉范围拉大才能看见你加进去的内容。