控件,按钮

1:关于窗口过程函数中的WM_CREATE中调用CreateWindow的问题
里面有个参数hinstance,由于
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)函数的传入参数中没有hInstance这一参数,所以要用相关的函数获取HInstance的值
方法一:GetWindowLong (hwnd, GWL_HINSTANCE)
方法二:((LPCREATESTRUCT)lParam)->hInstance
方法三:设hInstance为全局变量,因为通过调试发现,主窗口的hInstance和子窗口的是同一个hInstance,所以完全可以通过全局变量法。
2:子窗口的消息
当点击子窗口,子窗口就会想父窗口发送一个WM_COMMAND消息,消息的格式为:
LOWORD(wParam):子窗口ID,HIWORD(wParam):通知吗,lParam:子窗口句柄
3:窗口和句柄之间的相互获得
ID=GetWindowLong(hwndChild,GWL_ID);
ID=GetDlgCtrlID(hwndChild);
hwndChild=GetDlgItem(hwndParent,ID);
4:
//获取对话框的长和宽,依此作为按键的大小
  case   WM_CREATE :
                  cxChar = LOWORD (GetDialogBaseUnits ()) ;
                  cyChar = HIWORD (GetDialogBaseUnits ()) ;
//移动窗口函数
  MoveWindow(HWND hwnd,int x,int y,int nWidth,int nHeight,BOOL bRepaint)
//DrawItemStruct
typedef struct tagDRAWITEMSTRUCT { 
  UINT CtlType; 
  UINT CtlID; 
  UINT itemID; 
  UINT itemAction; 
  UINT itemState; 
  HWND hwndItem; 
  HDC hDC; 
  RECT rcItem; 
  ULONG_PTR itemData; 
} DRAWITEMSTRUCT; 
//FramRect,画矩形框架函数
int FrameRect(
  HDC hDC,           // handle to DC
  CONST RECT *lprc,   // rectangle
  HBRUSH hbr         // handle to brush
);
5:BS_OWNERDRAW
//使用BS_OWNERDRAW风格的按钮,当按钮被建立,按下,释放时都会发送一个WM_DRAWITEM的消息,此时按钮都会被重绘。
6:滚动条控件窗口类型
SBS_(TYPE)
7:窗口子类别化
OldScroll[i] = (WNDPROC) SetWindowLong (hwndScroll[i], GWL_WNDPROC,(LONG) ScrollProc)) ;
给窗口定义挂钩一个新的窗口过程函数。
在有子窗口的程序中,我们为子窗口指定一个子窗口的窗口过程函数,当子窗口获取焦点时,这时处理子窗口消息的就是子窗口的过程函数。
8:WM_CTLCOLORSCROLLBAR
wParam :HDC,lParam :HWND
注意:如果应用程序处理这个消息,它必须返回一个画刷的句柄,应用程序利用这个画刷来绘制滚动条背景。
发送条件:这个消息是发送到滚动条的父窗口,当滚动条需要重新绘制的时候。
9:WM_CTLCOLORSTATIC
wParam :HDC,lParam :HWND
注意:如果应用程序处理这个消息,它必须返回一个画刷的句柄,应用程序利用这个画刷来绘制静态窗口背景。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值