几个windows的基本函数

DefWindowProc

  函数功能:该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。该函数确保每一个消息得到处理。调用DefWindowProc函数时使用窗口过程接收的相同参数。

  函数原型:LRESULT DefWindowProcHWND hWndUINT MsgWPARAM wParamLPARAM IParam);

  参数:

  hWnd:指向接收消息的窗口过程的句柄。

  Msg:指定消息类型。

  wParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

  IParam:指定其余的、消息特定的信息。该参数的内容与Msg参数值有关。

  返回值:返回值就是消息处理结果,它与发送的消息有关。

  备注:对于Windows CE;如果MsgWM_SETTEXT那么返回0

  当DefWindowProc处理WM_DESTROY消息时,它不自动调用PostQutMessage

  速查:Windows NT 3.1以上版本;Windows95以上版本:Windows CE以上版本;头文件;winuser.h;库文件:user32.libUnicode:在Windows NT环境中以UnicodeANSI版本实现。

  =============================================================================================================================

  DefWindowProc Function

  --------------------------------------------------------------------------------

  The DefWindowProc function calls the default window procedure to provide default processing for any window messages that an application does not process. This function ensures that every message is processed. DefWindowProc is called with the same parameters received by the window procedure.

  Syntax

  LRESULT DefWindowProc( HWND hWnd,

  UINT Msg,

  WPARAM wParam,

  LPARAM lParam

  );

  Parameters

  hWnd

  [in] Handle to the window procedure that received the message.

  Msg

  [in] Specifies the message.

  wParam

  [in] Specifies additional message information. The content of this parameter depends on the value of the Msg parameter.

  lParam

  [in] Specifies additional message information. The content of this parameter depends on the value of the Msg parameter.

  Return Value

  The return value is the result of the message processing and depends on the message.

  Remarks

  Windows 95/98/Me: DefWindowProcW is supported by the Microsoft Layer for Unicode (MSLU). To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems .

  Example

  For an example, see Designing a Window Procedure.

  Function Information

  Minimum DLL Version user32.dll

  Header Declared in Winuser.h, include Windows.h

  Import library User32.lib

  Minimum operating systems Windows 95, Windows NT 3.1

  Unicode Implemented as ANSI and Unicode versions

 

PostQuitMessage

  函数功能:该函数向系统表明有个线程有终止请求。通常用来响应WM_DESTROY消息。

  函数原型:VOID PostQuitMessageint nExitCode);

  参数:

  pExitCode:指定应用程序退出代码。此值被用作消息WM_QUITwParam参数。

  返回值:无。

  备注:PostQuitMessage寄送一个WM_oUT消息给线程的消息队列并立即返回;此函数向系统表明有个线程请求在随后的某一时间终止。

  当线程从消息队列里取得WM_QUIT消息时,应当退出消息循环并将控制返回给系统。返回给系统的退出值必须是消息WM_QUITwParam参数。

  速查:Windows NT3.1及以上版本;Windows95及以上版本;Windows CE1.0及以上版本;头文件:winuser.h;输入库:user32libUhicode:在Wihdows NT环境下以UnicodeANSI方式实现。

 

TranslateMessage

  函数功能:该函数将虚拟键消息转换为字符消息。字符消息被寄送到调用线程的消息队列里,当下一次线程调用函数GetMessagePeekMessage时被读出。

  函数原型:BOOL TranslateMessageCONST MSG*lpMsg);

  参数:

  IpMsg:指向含有消息的MSG结构的指针,该结构里含有用函数GetMessagePeekMessage从调用线程的消息队列里取得的消息信息。

  返回值:如果消息被转换(即,字符消息被寄送到调用线程的消息队列里),返回非零值。如果消息是WM_kEYDOWNWM_KEYUP WM_SYSKEYDOWNWM_SYSKEYUP,返回非零值,不考虑转换。如果消息没被转换(即,字符消息没被寄送到调用线程的消息队列里),返回值是零。

  备注:此函数不修改由参数IpMsg指向的消息。

  WM_KEYDOWNWM_KEYUP组合产生一个WM_CHARWM_DEADCHAR消息。

  WM_SYSKEYDOWNWM_SYSKEYUP组合产生一个SYSWM_CHAR WM_SYSDEADCHAR消息。TtanslateMessage为那些由键盘驱动器映射为ASCll字符的键产生WM_CHAR消息。

  如果应用程序为其他用途处理虚拟键消息,不应调用TranslateMessage。例如,如果件ThranslateAccelerator返回一个非零值,应用程序不应调用TranslateMessage

  Windows CEWindows CE不支持扫描码或扩展键标志,因此,不支持由TranslateMessage产生的WM_CHAR消息中的IKeyData参数(IParam)取值16-24

  TranslateMessage只能用于转换调用GetMessagePeekMessage接收的消息。

  速查:Windows NT3.1及以上版本;Windows95及以上版本;Windows CE1.0及以上版本;头文件:winuser.h;输入库:user32.lib

 

DispatchMessage

  函数功能:该函数调度一个消息给窗口程序。通常调度从GetMessage取得的消息。消息被调度到的窗口程序即是MainProc()函数。

  函数原型:LONG DispatchMessageCONST MSG*lpmsg);

  参数:

  lpmsg:指向含有消息的MSG结构的指针。

  返回值:返回值是窗口程序返回的值。尽管返回值的含义依赖于被调度的消息,但返回值通常被忽略。

  备注:MSG结构必须包含有效的消息值。如果参数lpmsg指向一个WM_TIMER消息,并且WM_TIMER消息的参数IParam不为NULL,则调用IPa1ram指向的函数,而不是调用窗口程序。

  速查:Windows NT3.1及以上版本;Windows95及以上版本;Windows CE1.0及以上版本;头文件:winuser.h;输入库:user32.libUnicode:在Windows NT环境下以UnicodeANSI方式实现。

 

GetMessage

  函数功能:该函数从调用线程的消息队列里取得一个消息并将其放于指定的结构。此函数可取得与指定窗口联系的消息和由PostThreadMesssge寄送的线程消息。此函数接收一定范围的消息值。GetMessage不接收属于其他线程或应用程序的消息。

  函数原型:BOOL GetMessageLPMSG lpMsgHWND hWndUINT wMsgFilterMinUINT wMsgFilteMax

  参数:

  lpMsg:指向MSG结构的指针,该结构从线程的消息队列里接收消息信息。

  hWnd:取得其消息的窗口的句柄。这是一个有特殊含义的值(NULL)。GetMessage为任何属于调用线程的窗口检索消息,线程消息通过PostThreadMessage寄送给调用线程。

  wMsgFilterMin:指定被检索的最小消息值的整数。

  wMsgFilterMax:指定被检索的最大消息值的整数。

  返回值:如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是_1。例如,当hWnd是无效的窗口句柄或lpMsg是无效的指针时。若想获得更多的错误信息,请调用GetLastError函数。

  备注:应用程序通常用返回值来确定是否终止主消息循环并退出程序。

  GetMesssge只接收与参数hWnd标识的窗口或子窗口相联系的消息,子窗口由函数IsChild决定,消息值的范围由参数wMsgFilterMinwMsgFilterMax给出。如果hWndNULL,则GetMessage接收属于调用线程的窗口的消息,线程消息由函数PostThreadMessage寄送给调用线程。GetMessage不接收属于其他线程或其他线程的窗口的消息,即使hWndNULL。由PostThreadMessage寄送的线程消息,其消息hWnd值为NULL。如果wMsgFilterMinwMsgFilterMax都为零,GetMessage返回所有可得的消息(即,无范围过滤)。

  常数 WM_KEYFIRSTWM_KEYAST可作为过滤值取得与键盘输入相关的所有消息:常数WM_MOUSEFIRSTWM_MOUSELST可用来接收所有的鼠标消息。如果wMsgFilterMinwMsgFilterMax都为零,GetMessage返回所有可得的消息(即,无范围过滤)。

  GetMessage不从队列里清除WM.PAINT消息。该消息将保留在队列里直到处理完毕。

  注意,此函数的返回值可非零、零或-1,应避免如下代码出现:

  whileGetMessageIpMsghwnd00))

  -1返回值的可能性表示这样的代码会导致致命的应用程序错误。

  速查:Windows NT 3.1及以上版本;Windows95及以上版本;Windows CE1.0及以上版本:头文件:winuser.h;输入库:user32.IibUnicode:在Windows NT环境下以UnicodeANSI方式实现。

  下面是使用GetMessage的例子

  unit Unit4;

  interface

  uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs,DBTables, Db, ADODB, Grids, DBGrids, StdCtrls, Buttons;

  const

  WM_OPENDATASET = WM_USER + 1;

  WM_EXECUTESQL = WM_USER + 2;

  type

  TThreadDataSet = class(TThread)

  private

  procedure WMOpenDataSet(Msg: TMsg);

  procedure WMExecSQL(Msg: TMsg);

  protected

  procedure Execute; override;

  public

  procedure Open(DataSet: TDataSet);

  procedure ExecSQL(DataSet: TDataSet);

  end;

  TForm4 = class(TForm)

  ADOTable1: TADOTable;

  ADOQuery1: TADOQuery;

  DataSource1: TDataSource;

  DBGrid1: TDBGrid;

  DBGrid2: TDBGrid;

  DataSource2: TDataSource;

  BitBtn1: TBitBtn;

  procedure FormCreate(Sender: TObject);

  procedure FormDestroy(Sender: TObject);

  procedure BitBtn1Click(Sender: TObject);

  private

  { Private declarations }

  FThread : TThreadDataSet;

  public

  { Public declarations }

  end;

  var

  Form4: TForm4;

  implementation

  {$R *.dfm}

  uses ActiveX;

  procedure TThreadDataSet.ExecSQL(DataSet: TDataSet);

  begin

  PostThreadMessage(ThreadID, WM_EXECUTESQL, Integer(DataSet), 0);

  end;

  procedure TThreadDataSet.Execute;

  var

  Msg : TMsg;

  begin

  CoInitialize(nil);

  try

  FreeOnTerminate := True;

  PeekMessage(Msg, 0, WM_USER, WM_USER, PM_NOREMOVE);

  while not Terminated do

  begin

  if GetMessage(msg,0,0,0) then

  begin

  case Msg.Message of

  WM_OPENDATASET: WMOpenDataSet(Msg);

  WM_EXECUTESQL: WMExecSQL(Msg);

  end;

  end;

  end;

  finally

  CoUninitialize;

  end;

  end;

  procedure TThreadDataSet.Open(DataSet: TDataSet);

  begin

  PostThreadMessage(ThreadID, WM_OPENDATASET, Integer(DataSet), 0);

  end;

  procedure TThreadDataSet.WMExecSQL(Msg: TMsg);

  var

  Qry : TQuery;

  begin

  try

  Qry := TQuery(Msg.wParam);

  try

  Qry.Open;

  except

  Qry.ExecSQL;

  end;

  except

  On E: Exception do

  ShowMessage(E.Message);

  end;

  end;

  procedure TThreadDataSet.WMOpenDataSet(Msg: TMsg);

  var

  Ds : TDataSet;

  begin

  try

  Ds := TDataSet(Msg.wParam);

  Ds.Open;

  except

  On E: Exception do ShowMessage(E.Message);

  end;

  end;

  procedure TForm4.FormCreate(Sender: TObject);

  begin

  FThread := TThreadDataSet.Create(False);

  end;

  procedure TForm4.FormDestroy(Sender: TObject);

  begin

  FThread.Terminate;

  end;

  procedure TForm4.BitBtn1Click(Sender: TObject);

  begin

  FThread.Open(ADOTable1); // Opening a dataset (table or query)

  FThread.ExecSQL(ADOQuery1); // Executing a SQL

  end;

  end.

ReleaseDC

  函数功能:函数释放设备上下文环境(DC)供其他应用程序使用。函数的效果与设备上下文环境类型有关。它只释放公用的和设备上下文环境,对于类或私有的则无数。
  函数原型:int ReleaseDC(HWND hWnd, HDC hdc);
  参数:
  hWnd:指向要释放的设备上下文环境所在的窗口的句柄。
  hDC:指向要释放的设备上下文环境的句柄。
  返回值:返回值说明了设备上下文环境是否释放;如果释放成功,则返回值为1;如果没有释放成功,则返回值为0。
  注释:每次调用GetWindowDC和GetDC函数检索公用设备上下文环境之后,应用程序必须调用ReleaseDC函数来释放设备上下文环境。
  应用程序不能调用ReleaseDC函数来释放由CreateDC函数创建的设备上下文环境,只能使用DeleteDC函数。
  速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:winuser.h;库文件:user32.lib。
 
//设置文本颜色 
SetTextColor(hDC,RGB(255,0,0));
//设置文本 背景颜色
SetBkColor(hDC,RGB(0,0,255));

转载于:https://www.cnblogs.com/vilyLei/articles/1356538.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值