现在的位置: 首页 > 综合 > 正文

視窗:簡單程式-擊鍵文字改色(一)

2012年02月25日 ⁄ 综合 ⁄ 共 2458字 ⁄ 字号 评论关闭

簡單程式:擊鍵文字改色

先來看程序運行效果:

擊鍵後變成如下效果:

文件 | 新建 | Win32 Application | 工程 “擊鍵變色” | An empty project | 完成 | 確定,

文件 | 新建 | C++ Source File | 文件 “main”,然後將如下代碼貼到main.cpp文件中,再編譯 | 構建 “擊鍵變色”即可。

下面是代碼:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////                             main.cpp                             /////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <windows.h>

//被用作窗口類名被註冊
LPCTSTR lpszAppName = TEXT("MyApp");

//窗口標題
LPCTSTR lpszTitle = TEXT("My Application");

//窗口處理函數

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

//主函數,程式入口處

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{

//消息結構聲明
 MSG msg;

//窗口句柄
 HWND hWnd;

//窗口類聲明及填充
 WNDCLASS wc;

 wc.style = CS_HREDRAW | CS_VREDRAW;
 wc.lpfnWndProc = (WNDPROC)WndProc;
 wc.cbClsExtra = 0;
 wc.cbWndExtra = 0;
 wc.hInstance = hInstance;
 wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
 wc.hCursor = LoadCursor(NULL, IDC_ARROW);
 wc.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
 wc.lpszMenuName = lpszAppName;
 wc.lpszClassName = lpszAppName;
 

//窗口類註冊
 if(!RegisterClass(&wc))
  return(FALSE);

//以窗口類“wc”為參數新建一標題為“My Application”之窗口

hWnd = CreateWindow(lpszAppName, lpszTitle, WS_OVERLAPPEDWINDOW,
                  CW_USEDEFAULT,0, CW_USEDEFAULT, 0, NULL,
      NULL, hInstance, NULL);

 if(!hWnd)
  return(FALSE);

//顯示此窗口 

ShowWindow(hWnd, nCmdShow);

//更新此窗口
 UpdateWindow(hWnd);

//進入消息循環

while(GetMessage(&msg, NULL, 0, 0))
 {
  TranslateMessage(&msg);
  DispatchMessage(&msg);
 }

 return(msg.wParam);
}

//窗口處理函數

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{

//矩形結構
 RECT rect;

//顯示設備句柄
 HDC hdc;
 PAINTSTRUCT ps;

//三原色變量
 static int uRed = 0,uGreen = 0,uBlue = 0;

//消息處理

 switch(uMsg)
 {
 

//窗口重繪
  case WM_PAINT :
  
   hdc = BeginPaint(hWnd, &ps);
   GetClientRect(hWnd, &rect);
   SetTextColor(hdc, RGB(uRed, uGreen, uBlue));
   DrawText(hdc, TEXT("你好!"), -1, &rect,
         DT_SINGLELINE | DT_CENTER | DT_VCENTER);
   EndPaint(hWnd, &ps);
  
   break;

//鍵盤如有鍵按下  

case WM_KEYDOWN :

//調色
   uRed = rand() % 255;
   uGreen = rand() % 255;
   uBlue = rand() % 255;

   //強制重繪

   InvalidateRect(hWnd, NULL, TRUE);

   break;

//窗口銷毀

case WM_DESTROY :
   PostQuitMessage(0);

   break;

//默認消息處理  

default :
   return DefWindowProc(hWnd, uMsg, wParam, lParam);
 }

 return(0);

////////////////////////////////////////////////////           eof              ///////////////////////////////////////////////////////////////////

抱歉!评论已关闭.