目錄
- 引出
- 環境準備,參考文檔
- 第一講 初步入門
- 鍵盤按下的消息
- 鼠標左鍵按下
- 報錯
- 源碼
- 新建一個工程
- 總結
引出
VC++學習(1)——環境準備,參考文檔等,初步入門VC++
C++是一門編程語言,他的語法標準和語言特性是全球統一的
VC++是微軟在C++語言基礎上加入了自己公司擴展的一些東西
VC++是基于微軟開發的編譯器系統(例如Visual C++ 6.0編譯系統,visual studio)和windows操作系統,也就是說你離開微軟的編譯環境是沒有辦法進行VC++開發的
VC++可以簡單的視為 :
C++語言+微軟擴展的語法規則+微軟擴展的功能特性+微軟自己開發的編譯環境+windows操作系統 的一個混雜的復合體
環境準備,參考文檔
安裝好的VC++
msdn參考文檔
選擇SDK
教材對應的視頻和源代碼
flash文件打不開問題
https://github.com/Mzying2001/CefFlashBrowser/releases
https://www.bilibili.com/list/ml847383748?oid=31626251&bvid=BV1AW411y7ad&p=3
第一講 初步入門
比如加入一個程序變量
設置一個斷點,鼠標右鍵,加入斷點
采用調試運行F5快捷鍵,或者點擊圖示圖標
程序運行的時候,接收到了命令行參數
點擊圖示按鈕,可以停止程序調試
程序的圖標
去掉最小化窗口的按鈕
WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX
關于窗體的位置
鍵盤按下的消息
鼠標左鍵按下
報錯
LINK : fatal error LNK1168: cannot open Debug/WinMain.exe for writing
源碼
#include <windows.h>
#include <stdio.h>LRESULT CALLBACK WinSunProc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameterLPARAM lParam // second message parameter
);int WINAPI WinMain(HINSTANCE hInstance, // handle to current instanceHINSTANCE hPrevInstance, // handle to previous instanceLPSTR lpCmdLine, // command lineint nCmdShow // show state
)
{// 1.設置了一個窗口,定義窗口的一些信息WNDCLASS wndcls; // 窗口實例wndcls.cbClsExtra=0; // 窗口附加內存空間,通常設置為0wndcls.cbWndExtra=0; // 通常用不上,設置為0即可// 進行強制類型轉換wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); // 窗口的背景顏色wndcls.hCursor=LoadCursor(NULL,IDC_CROSS); // 光標句柄,這里光標就是十字 crosswndcls.hIcon=LoadIcon(NULL,IDI_ERROR); // 圖標句柄,這里就是一個errorwndcls.hInstance=hInstance; // 代表當前應用程序的實例號wndcls.lpfnWndProc=WinSunProc; // 回調函數wndcls.lpszClassName="sunxin2006"; // 類的名字wndcls.lpszMenuName=NULL; // 沒有菜單wndcls.style=CS_HREDRAW | CS_VREDRAW; // 水平和垂直坐標變化,窗口重畫RegisterClass(&wndcls); // 注冊窗口類,把窗口類的指針給他HWND hwnd; // 窗口的句柄// 注冊的類名,WS_OVERLAPPEDWINDOW同時有了最大化,最小化按鈕等hwnd=CreateWindow("sunxin2006","跟著大佬學習VC++",WS_OVERLAPPEDWINDOW & ~WS_MINIMIZEBOX /*& ~WS_MINIMIZEBOX */,0,0,600,400,NULL,NULL,hInstance,NULL);// 顯示窗口,正常顯示normalShowWindow(hwnd,SW_SHOWNORMAL);UpdateWindow(hwnd);// 消息隊列MSG msg;while(GetMessage(&msg,NULL,0,0)) // 0表示所有信息都感興趣{// 按鍵的按下和抬起,轉化成WM_CHAR,放到消息隊列中TranslateMessage(&msg);// 將消息路由給操作系統,操作系統給wndcls.lpfnWndProc=WinSunProc; // 回調函數進行處理DispatchMessage(&msg);}return msg.wParam;
}// 回調函數
LRESULT CALLBACK WinSunProc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameter 都是整數LPARAM lParam // second message parameter
)
{switch(uMsg){case WM_CHAR: // 用戶按下了按鍵char szChar[20];// sprintf,格式化文本放到字符數組中sprintf(szChar,"char code is %d",wParam);MessageBox(hwnd,szChar,"char",MB_YESNO);break;case WM_LBUTTONDOWN:MessageBox(hwnd,"mouse clicked","message",0);HDC hdc;// 在哪里畫圖hdc=GetDC(hwnd);// 參數:在哪里,位置,輸入文字,文字長度TextOut(hdc,0,50,"程序員之家",strlen("程序員之家"));// 釋放DC,ReleaseDC(hwnd,hdc);break;// 窗口大小發生變化case WM_PAINT:HDC hDC;PAINTSTRUCT ps;// BeginPaint 和 EndPaint 是一對,只能用在WM_PAINT中hDC=BeginPaint(hwnd,&ps);TextOut(hDC,0,0,"http://www.sunxin.org",strlen("http://www.sunxin.org"));EndPaint(hwnd,&ps);break;// 窗口關閉的時候的消息case WM_CLOSE:if(IDYES==MessageBox(hwnd,"是否真的結束?","message",MB_YESNO)){DestroyWindow(hwnd);}break;case WM_DESTROY:PostQuitMessage(0);break;default:// 對其不感興趣的進行缺省處理return DefWindowProc(hwnd,uMsg,wParam,lParam);}return 0;
}
新建一個工程
總結
VC++學習(1)——環境準備,參考文檔等,初步入門VC++