C++ 学习(二)

建立一个窗口程序。

eg:



#include "stdafx.h"
#include <Windows.h>
#include<MMSystem.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);


LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM IParam)
{
 HDC hdc;
 PAINTSTRUCT ps;
 RECT rect;
 switch(message)
 {
 case WM_CREATE:
  PlaySound("Wildlife.wav",NULL,SND_FILENAME|SND_ASYNC);//注意.wav这种格式,有的格式不能播放,没声音
  return 0 ;
 case WM_PAINT:
  hdc = BeginPaint(hwnd,&ps);
  GetClientRect(hwnd,&rect);
  DrawText(hdc,TEXT("Hello,Window 7 !"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER);
  EndPaint(hwnd,&ps);
  return 0;
 case WM_DESTROY:
  PostQuitMessage(0);
  return 0;
 }
 return DefWindowProc(hwnd,message,wParam,IParam);
}

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
 static TCHAR szAppName[] = TEXT("HelloWin");
 HWND hwnd;
 MSG msg;
 WNDCLASS wndclass;
 wndclass.style = CS_HREDRAW|CS_HREDRAW;
 wndclass.lpfnWndProc = WndProc;
 wndclass.cbClsExtra = 0;
 wndclass.cbWndExtra = 0;
 wndclass.hInstance = hInstance;
 wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
 wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
 wndclass.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
 wndclass.lpszMenuName = NULL;
 wndclass.lpszClassName = szAppName;

 if(!RegisterClass(&wndclass))
 {
  MessageBox(NULL,TEXT("This program requires Windows NT !"),szAppName,MB_ICONERROR);
  return 0;
 }

 hwnd = CreateWindow(szAppName,
  TEXT("The Hello Program"),
  WS_OVERLAPPEDWINDOW,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  CW_USEDEFAULT,
  NULL,
  NULL,
  hInstance,
  NULL);

 ShowWindow(hwnd,iCmdShow);
 UpdateWindow(hwnd);
 while(GetMessage(&msg,NULL,0,0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }

 return msg.wParam;
}

 

 


C++ 学习(二)
 
需要添加.lib文件库,还有头文件,运行成功。另外,在上述程序中,会出现一些简单的数值常数。前缀指示该常数所属的类别,如下表:



接着学习Windows表头文件中定义的四种数据结构,如:

然后句柄,用于不同型态的句柄:

HINSTANCE 执行实体(程序自身) 句柄 、  HWND 窗口句柄、 HDC设备内容句柄
再则注册窗口类别,窗口依照某一窗口类别建立,窗口类别用以标识处理窗口消息的窗口消息处理程序。不同窗口可以依照同一种窗口类别建立。例如,Windows中所有按钮窗口--包括按键、复选框,以及单选按钮,都是依据同一种窗口类别建立的。