Windows 程序设计的一些API

一些API

1 得到控件句柄
hwndCtrl = GetDlgItem (hDlg, id) ;

2 得到控件ID
id = GetWindowLong (hwndCtrl, GWL_ID) ;

3 给子控件发送消息
SendDlgItemMessage (hDlg, id, iMsg, wParam, lParam) ;
等价
SendMessage (GetDlgItem (hDlg, id), iMsg, wParam, lParam) ;


4 清除 idFirst - idLast 之间的单选按钮选中标记,保留 idCheck的
CheckRadioButton (hDlg, idFirst, idLast, idCheck) ;

5   如果iCheck设定为1,那么按钮被选中;如果设定为0,那么按钮不被选中
CheckDlgButton (hDlg, idCheckbox, iCheck) ;

6  可以使用如下的方法来取得对话框中某个复选框的状态
iCheck = IsDlgButtonChecked (hDlg, idCheckbox) ;

7   当bEnable为TRUE(非0)时,它启用控件;当bEnable为FALSE(0)时,它禁用控件。在控件被禁用时,它不再接收键盘或者鼠标输入。您不能禁用一个拥有输入焦点的控件。
EnableWindow (hwndCtrl, bEnable) ;

8 模态对话框,最典型的就是MessageBox,必须关闭,才能操作本程序。非模态没有这个限制。 下面的函数,创建非模态对话框.
hDlgModeless = CreateDialog (      hInstance, szTemplate, hwndParent, DialogProc) ;
 
  
 
  
 9 这个函数判断是 hDlgModeless的消息,如果是处理它,返回真,如果不是,不处理,返回false。 
 
IsDialogMessage (hDlgModeless, &msg)

10 模态对话框销毁窗口是EndDialog, 非模态对话框的销毁窗口 DestroyWindow.

11 创建非模态对话框 使用CreateDialog

hDlgModeless = CreateDialog (hInstance, TEXT ("className"), hwnd, ColorScrDlg) ;
 CreateDialog(hInstance, (LPCTSTR)IDD_DIALOG1, 0,(DLGPROC)CallMainDlgProc);


12 按钮的按下和弹起状态设置
SendMessage (hButton, BM_SETSTATE, 1, 0) ; 按下
SendMessage (hButton, BM_SETSTATE, 0, 0) ; 弹起

13 在使用通用对话框链接库的任何C原始码文件时,您都需要含入COMMDLG.H表头文件。通用对话框的文件在/Platform SDK/User Interface Services/User Input/Common Dialog Box Library中。

14  加载快捷键表 LoadAccelerators (Hinstance,MAKEINTRESOURCE(IDD_xxx));
hAccel = LoadAccelerators (hInstance, szAppName) ;
     
     while (GetMessage (&msg, NULL, 0, 0))
     {
          if (hDlgModeless == NULL || !IsDialogMessage (hDlgModeless, &msg))
          {
               if (!TranslateAccelerator (hwnd, hAccel, &msg))
               {
                    TranslateMessage (&msg) ;
                    DispatchMessage (&msg) ;
               }
          }
     }


15 注册一个消息,下面是注册一个查找对话框消息
RegisterWindowMessage (FINDMSGSTRING) ;

16 WM_INITMENUPOPUP 菜单弹出下拉菜单的是消息响应,lparam 代表的是第几个子菜单,从0开始数,左边开始数。

17 下列是一些通用对话框
颜色对话框   结构体信息 CHOOSECOLOR       调用函数     ChooseColor
选择字体对话框       结构体信息 CHOOSEFONT     调用函数    ChooseFont
打开和保存对话框      结构体信息 OPENFILENAME 调用函数 打开 GetOpenFileName 保存  GetSaveFileName
打印对话框      结构体信息 PRINTDLG  调用函数 PrintDlg
查找和替换对话框      结构体信息 FINDREPLACE    调用函数    打开  FindText   替换   ReplaceText

 
  
 
  
18 获得剪切板所有者窗口
GetClipboardOwner 
19 注册剪切板数据格式
RegisterClipboardFormat 

20 设置剪切板视图监视窗口

SetClipboardViewer

21 创建一个设备上下文句柄,那么删除一个DC是
CreateDC,DeleteDC
22 打开打印机
OpenPriner
23 关闭打印机
ClosePrinter
24 打开打印机属性对话框
PrinterProperties
25 查询指定的设备描述表信息
GetDeviceCaps
26 创建一个设备上下文句柄,不能用于绘图
CreateIC
27 枚举系统打印设备
HDC GetPrinterDC (void)
{
     DWORD            dwNeeded, dwReturned ;
     HDC              hdc ;
     PRINTER_INFO_4 * pinfo4 ;
     PRINTER_INFO_5 * pinfo5 ; 

     if (GetVersion () & 0x80000000)         // Windows 98
     {
          EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, NULL,
                        0, &dwNeeded, &dwReturned) ;

          pinfo5 = malloc (dwNeeded) ;

          EnumPrinters (PRINTER_ENUM_DEFAULT, NULL, 5, (PBYTE) pinfo5,
                        dwNeeded, &dwNeeded, &dwReturned) ;

          hdc = CreateDC (NULL, pinfo5->pPrinterName, NULL, NULL) ;

          free (pinfo5) ;
     }
     else                                    // Windows NT
     {
          EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, NULL,
                        0, &dwNeeded, &dwReturned) ;

          pinfo4 = malloc (dwNeeded) ;

          EnumPrinters (PRINTER_ENUM_LOCAL, NULL, 4, (PBYTE) pinfo4,
                        dwNeeded, &dwNeeded, &dwReturned) ;

          hdc = CreateDC (NULL, pinfo4->pPrinterName, NULL, NULL) ;

          free (pinfo4) ;
     }
     return hdc ;   
}



28 获得系统菜单
GetSystemMenu(hwnd,false);

29 获得窗口的DC,包括非客户区。
GetWindowDC

30 获得桌面的DC,对应的删除DC是 ReleaseDC(NULL,hdc);
HDC hdc = GetDC(GetDesktopWindow () );
HDC hdc = GetDC(NULL );

31 获得字符串的逻辑单位
BOOL GetTextExtentPoint32(
  HDC hdc,           // handle to DC
  LPCTSTR lpString,  // text string
  int c,      // characters in string
  LPSIZE lpSize      // string size
);

32 设置是否选中菜单
DWORD WINAPI CheckMenuItem(
    __in HMENU hMenu,
    __in UINT uIDCheckItem,
    __in UINT uCheck);

33 该函数得到显示设备的一个图形模式设备,通过对该函数一系列的调用可以得到显示设备所有的图形模式信息。

The EnumDisplaySettings function sets values for the following five DEVMODE members:

  • dmBitsPerPel 显示设备的颜色分辨率(单位:位数);416,8256,16位增强色,32位真彩色
  • dmPelsWidth 显示宽度以像素为单位
  • dmPelsHeight 显示高度以像素为单位
  • dmDisplayFlags 显示模式
  • dmDisplayFrequency 屏幕的刷新频率

BOOL EnumDisplaySettings(
  LPCTSTR lpszDeviceName,  // display device
  DWORD iModeNum,          // graphics mode
  LPDEVMODE lpDevMode      // graphics mode settings
);

34 窗口捕获鼠标, 释放鼠标
SetCapture(hwnd);
ReleaseCapture(hwnd);

35 获得屏幕DC的扩展函数
hdc = GetDCEx (hwndScr, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE) ;// 高速缓存和锁定窗口

36 客户区坐标转屏幕坐标
ClientToScreen

37 判断剪切板是否有指定的格式
IsClipboardFormatAvailable

38 设置窗口背景,图标,光标
SetClassLong

39 注册一个消息,然后发送到所以顶层窗口
UINT IMsg = RegisterWindowMessage("any string")
PostMessage (HWND_BROADCAST, IMsg, 0, 0) ;
 
 

你可能感兴趣的:(windows,控件)