當前位置:編程學習大全網 - 編程語言 - c++不用vc 6.0中mfc能不能寫出圖形界面程序

c++不用vc 6.0中mfc能不能寫出圖形界面程序

完全可以不用。MFC僅僅是對?Windows?API?的壹次面向C++語言的封裝,可用可不用。只不過那樣是自找麻煩罷了。我就舉個不用MFC編寫圖形用戶界面的例子,就是所謂?Windows?SDK?編程。

以下代碼不含絲毫MFC,在Visual?C++?6.0測試通過,能夠出現壹個正規的Windows窗口。

#include?<tchar.h>

#include?<windows.h>

/*?這個函數由Windows內部函數DispatchMessage()調用?*/?

LRESULT?CALLBACK?WindowProcedure?(HWND?hWnd,?UINT?message,?WPARAM?wParam,?LPARAM?lParam)

{

HDC?hdc;

PAINTSTRUCT?ps;

RECT?rect;

switch?(message)/*?處理信息?*/

{

case?WM_DESTROY:?

PostQuitMessage?(0);?/*?發送WM_QUIT到消息隊列?*/

break;

case?WM_PAINT:

hdc?=?BeginPaint?(hWnd,?&ps);

GetClientRect?(hWnd,?&rect);

DrawText?(hdc,?TEXT("Hello,?Windows?NT!"),?-1,?&rect,?DT_SINGLELINE?|?DT_CENTER?|?DT_VCENTER);

EndPaint?(hWnd,?&ps);

break;

default:?/*?不處理的消息?*/?

return?DefWindowProc?(hWnd,?message,?wParam,?lParam);

}

return?0;

}

/*?下面是主函數?*/

int?WINAPI?_tWinMain(HINSTANCE?hThisInstance,?HINSTANCE?hPrevInstance,?LPTSTR?lpCmdLine,?int?nFunsterStil)

{

HWND?hWnd;?/*?這是窗口的句柄?*/

MSG?messages;?/*?應用程序的消息保存在這裏?*/

WNDCLASSEX?wincl;?/*?窗口類的數據結構?*/

TCHAR?szClassName[?]?=?TEXT("WindowsApp");?/*?窗口類的類名?*/

/*?窗口結構?*/

wincl.hInstance?=?hThisInstance;

wincl.lpszClassName?=?szClassName;

wincl.lpfnWndProc?=?WindowProcedure;/*?這個函數由Windows操作系統調用?*/

wincl.style?=?CS_DBLCLKS;?/*?獲取雙擊指令?*/

wincl.cbSize?=?sizeof?(WNDCLASSEX);

/*?使用默認圖標和鼠標指針?*/

wincl.hIcon?=?LoadIcon?(NULL,?IDI_APPLICATION);

wincl.hIconSm?=?LoadIcon?(NULL,?IDI_APPLICATION);

wincl.hCursor?=?LoadCursor?(NULL,?IDC_ARROW);

wincl.lpszMenuName?=?NULL;?/*?沒有菜單?*/

wincl.cbClsExtra?=?0;/*?窗口類後面沒有多余的字節?*/

wincl.cbWndExtra?=?0;/*?結構或者窗口實例?*/

/*?使用窗口的默認顏色作為窗口的背景色?*/

wincl.hbrBackground?=?(HBRUSH)?COLOR_BACKGROUND;

/*?註冊窗口類。如果註冊失敗,那麽就退出程序?*/

if?(!RegisterClassEx?(&wincl))

return?0;

/*?窗口類已被註冊。創建它的程序?*/

hWnd?=?CreateWindowEx?(

0,

szClassName,/*?類名?*/

TEXT("Windows?App"),/*?窗口標題欄的文字?*/

WS_OVERLAPPEDWINDOW,?/*?默認窗口?*/

CW_USEDEFAULT,?/*?窗口左上角的位置?*/

CW_USEDEFAULT,?/*?窗口右下角的位置?*/

544,?/*?窗口寬度(以“像素”位單位)?*/

375,?/*?窗口高度(以“像素”位單位)?*/

HWND_DESKTOP,?/*?窗口是桌面的子窗口?*/

NULL,/*?該窗口無菜單?*/

hThisInstance,?/*?程序實例的句柄?*/

NULL?/*?沒有窗口創建的數據?*/

);

/*?顯示窗口?*/

ShowWindow?(hWnd,?nFunsterStil);

/*?重繪窗口?*/

UpdateWindow(hWnd);

/*?運行消息循環。循環到GetMessage()函數返回0?*/

while?(GetMessage?(&messages,?NULL,?0,?0))

{

/*?把虛擬信息翻譯成字符信息?*/

TranslateMessage(&messages);

/*?發送信息到窗口過程?*/

DispatchMessage(&messages);

}

/*?返回PostQuitMessage()函數的返回值?*/

return?messages.wParam;

}

運行結果如下:

  • 上一篇:select的詳細介紹
  • 下一篇:世界公認5大天才科學家:霍金第5,愛因斯坦第4,第壹為什麽無人知曉?
  • copyright 2024編程學習大全網