1、定义字符串

  在资源新建String table,增加新字符串;

  (win32加载)

  TCHAR tcIDName[255]=_T("");
  LoadString(hInstance,IDS_NAME,tcIDName,255);

2、窗口居中

  在WM_CREATE消息中增加如下代码: 

int scrWidth,scrHeight;
    RECT rect;
    //获得屏幕尺寸
    scrWidth = GetSystemMetrics(SM_CXSCREEN);
    scrHeight = GetSystemMetrics(SM_CYSCREEN);
    //取得窗口尺寸
    GetWindowRect(hwnd,&rect);
    //重新设置rect里的值
    rect.left = (scrWidth-rect.right)/2;
    rect.top = (scrHeight-rect.bottom)/2;
    //移动窗口到指定的位置
    SetWindowPos(hwnd,HWND_TOP,rect.left,rect.top,rect.right,rect.bottom,SWP_SHOWWINDOW);

 

3、TChar字符串格式化

    TCHAR tcText[255] = _T("");

   _stprintf(tcText,_T("数字为%d"),1111);  

 

4、键盘字符捕捉

case WM_KEYDOWN:
        switch (wParam) 
        {
            case VK_CONTROL:break;
        }
        break;

 注意:如果点击按钮之后,或者其他控件,焦点就会被夺走,此时则需要通过SetFocus函数重新设置该窗口焦点。

5、创建按钮步骤(创建控件的方法)

  (1)、定义资源ID,#define ID_BUTTON_CLOSE 100001

  (2)、在WM_COMMAND消息中,添加以下代码:     

    HWND hButton = CreateWindow(_T("button"),
    _T("退出"),//按钮上显示的字符
    WS_CHILD | WS_VISIBLE,
    50,100,70,30, //按钮在界面上出现的位置
    hwnd,(HMENU)ID_BUTTON_CLOSE, //设置按钮IDIDC_BUTTON_CONTINUE = 131自己定义ID
    ((LPCREATESTRUCT)lParam)->hInstance,NULL);

  (3)、在WM_CREATE消息中处理对子控件的点击处理

    WORD wID = LOWORD(wParam);
    WORD wEvent = HIWORD(wParam);
    switch(wID)
    {
      case ID_BUTTON_CLOSE:
      PostQuitMessage(0);
      break;
    }

6、加载资源图标

  LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON_APP));

 

7、绘制矩形并填充颜色

  HBRUSH hbrush = CreateSolidBrush (RGB());
  HBRUSH oldhBrush = (HBRUSH)SelectObject(hdc,hbrush);
  Rectangle(hdc,lx,ty,rx,by);
  SelectObject(hdc,oldhBrush);

  DeleteObject(hbrush);

 8、设置static文本背景颜色

case WM_CTLCOLORSTATIC:
{
    if ((HWND)lParam == GetDlgItem(hwnd,ID_TEXT_SORCE))//获得指定标签句柄用来对比
    {
        SetTextColor((HDC)wParam,RGB(255,0,0));//设置文本颜色
        SetBkMode((HDC)wParam,TRANSPARENT);//设置背景透明
    }
    return (INT_PTR)GetStockObject((NULL_BRUSH));//返回一个空画刷(必须)
}
break;        

 

9、设置win32窗口一直在最上面

  SetWindowPos函数第二个参数设置为HWND_TOPMOST;

 

10、获得透明画刷

  HBRUSH hBrush = (HBRUSH)GetStockObject(NULL_BRUSH);

  其返回的是一个标识,所以不需要delete或者release。

 

11、在win32中使用GDI+

  1、头文件中加入以下内容,宏可以改变

#ifndef   AFXSTD_H 
#define   AFXSTD_H 
#include <comdef.h>
#include <Windows.h>  // must be inluded before gdiplus.h, otherwise compile error   
#include <gdiplus.h>   
#pragma comment(lib, "gdiplus.lib") 
#endif 

  2、定义变量  ULONG_PTR m_gdiplusToken;

  3、初始化

Gdiplus::GdiplusStartupInput gdiplusStartupInput;
Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);  

  4、使用(根据具体情况而定)

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd,&ps);
Gdiplus::Graphics graphics(hdc);
Gdiplus::Pen myPen(Gdiplus::Color(255,255,0,0),50);
graphics.DrawEllipse(&myPen,30,30,50,50);
graphics.DrawLine(&myPen, 0, 50, 400, 150);  
EndPaint(hwnd,&ps);

  5、释放GDI+  Gdiplus::GdiplusShutdown(m_gdiplusToken);