VC++視覺化程式設計第一個程式設計例項出錯
VC++視覺化程式設計第一個程式設計例項出錯解決方案
今年學校開設了VC++物件導向與視覺化程式設計這本書,於是這幾天開始上手,第一程式是按照清華大學出版社出版的這本書上敲的,在vs2013裡面死活執行不成功。RegisterClassex()註冊視窗類的時候老顯示“視窗註冊類失敗”,百度了好長一段時間才得到解決問題。
其實問題很簡單,用WNDCLASSEX定義了一個視窗類時候,要對它進行初始化;比如:WNDCLASSEX wcex = {0};//0寫不寫無所謂。
在建立視窗的時候程式碼執行程式如下:
RegisterClassEX(HINSTANCE hInstance)
{
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TESTWIN));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = MAKEINTRESOURCE(IDC_TESTWIN);
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
return RegisterClassEx(&wcex);
}
呼叫的時候,需要為每個成員賦值了,有些不理解的成員變數或者自己不關心的成員變數有的地方出錯,我們新手都不知道哪裡出錯了,所以如果加上WNDCLASSEX wcex = {},對於我們來說比較方便,便於以後再去深層次的研究WNDCLASSEX的成員變數。
成功執行的程式碼如下:
#include<Windows.h>
#include<tchar.h>
#define WINDOW_WIDTH 800 //視窗寬度
#define WINDOW_HEIGHT 600
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hprevinstance, LPSTR lpcmdline, int ncmdshow){
WNDCLASSEX wcex = {};
HWND hwnd;
MSG msg;
TCHAR szwindowsclass[] = L"視窗例項";
TCHAR sztitle[] = L"my windows";
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbWndExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szwindowsclass;
wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_APPLICATION));
if (!RegisterClassEx(&wcex)){
MessageBox(NULL, _T("視窗類註冊失敗!"), _T("視窗註冊"), NULL);
return 1;
}
hwnd = CreateWindow(
szwindowsclass,
sztitle,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
WINDOW_WIDTH, WINDOW_HEIGHT,
NULL,
NULL,
hInstance,
NULL
);
if (!hwnd){
MessageBox(NULL, L"建立視窗失敗", _T("建立視窗"), NULL);
return 1;
}
ShowWindow(hwnd, ncmdshow);
UpdateWindow(hwnd);
while (GetMessage(&msg, NULL, 0, 0)){
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return(int)msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam){
switch (message)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd,message,wparam,lparam);
break;
}
return 0;
}
執行結果如圖:
相關文章
- Jmeter beanshell程式設計例項JMeterBean程式設計
- 設計模式例項程式碼設計模式
- KafKa Java程式設計例項KafkaJava程式設計
- Matlab學習-視覺化和程式設計Matlab視覺化程式設計
- 視覺化程式設計工具Blockly 1.0簡介視覺化程式設計BloC
- Shell程式設計入門例項程式設計
- Qt 中Socket程式設計例項QT程式設計
- android socket程式設計例項Android程式設計
- The MySQL C API程式設計例項MySqlAPI程式設計
- XML程式設計例項(二) (轉)XML程式設計
- Java&CORBA程式設計例項JavaORB程式設計
- corba程式設計簡單例項ORB程式設計單例
- Java XML程式設計例項解析JavaXML程式設計
- 第一個shell程式設計,輸出hello world!程式設計
- 視覺化程式碼跟蹤除錯與STM32應用設計視覺化除錯
- AnyviewC程式設計作業系統——支援程式視覺化執行、除錯和測評ViewC程式程式設計作業系統視覺化除錯
- [C++]C++程式設計例項C++程式設計
- shell程式設計例項--實現累加程式設計
- 【Akka】Akka入門程式設計例項程式設計
- Delphi趣味程式設計例項三則程式設計
- 用低程式碼平臺視覺化設計表單視覺化
- VC++程式設計環境下的除錯步驟C++程式設計除錯
- dns安全視覺化 設計DNS視覺化
- 高效的設計視覺化視覺化
- 面向研發的低程式碼、程式碼視覺化設計編排視覺化
- VC++ MFC程式設計版本資訊控制C++C程式程式設計
- 用程式設計工具實現資料視覺化的幾個選擇程式設計視覺化
- OpenCV計算機視覺程式設計攻略(第2版)程式碼OpenCV計算機視覺程式設計
- 多程式程式設計函式posix_spawn例項程式設計函式
- linux下bluetooth程式設計(六)L2CAP層程式設計例項Linux程式設計
- iOS 開發視覺化程式設計之Xib 簡述iOS視覺化程式設計
- 同學們,一起來視覺化程式設計吧視覺化程式設計
- Oracle PL/SQL 程式設計基礎 例項OracleSQL程式設計
- MapReduce程式設計例項之倒排索引 1程式設計索引
- MapReduce程式設計例項之自定義排序程式設計排序
- 視覺化搭建 - 容器元件設計視覺化元件
- 程式設計師程式設計生涯中會犯的7個錯誤程式設計師
- Mac音樂視覺化程式設計軟體Mac視覺化程式設計