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;
}
執行結果如圖:
相關文章
- KafKa Java程式設計例項KafkaJava程式設計
- 設計模式例項程式碼設計模式
- Jmeter beanshell程式設計例項JMeterBean程式設計
- Matlab學習-視覺化和程式設計Matlab視覺化程式設計
- Mac音樂視覺化程式設計軟體Mac視覺化程式設計
- VC++程式設計環境下的除錯步驟C++程式設計除錯
- 視覺化程式碼跟蹤除錯與STM32應用設計視覺化除錯
- VC++ MFC程式設計版本資訊控制C++C程式程式設計
- Cycling 74 Max音樂視覺化程式設計軟體視覺化程式設計
- 用低程式碼平臺視覺化設計表單視覺化
- 面向研發的低程式碼、程式碼視覺化設計編排視覺化
- shell script程式設計小結——附帶例項程式設計
- Spark程式設計環境搭建及WordCount例項Spark程式設計
- Cycling 74 Max for Mac(音樂視覺化程式設計軟體)Mac視覺化程式設計
- Rust 程式設計視訊教程(進階)——010_2Box 使用例項Rust程式設計
- 第一個想取代程式設計師的AI程式設計師,失敗了?程式設計師AI
- 程式設計注意事項程式設計
- [翻譯]返回導向程式設計例項入門程式設計
- VC++程式設計師成長--之必看書籍C++程式設計師
- 視覺化搭建 - 容器元件設計視覺化元件
- 零程式設計開發資料視覺化大屏須知程式設計視覺化
- 關於視覺化程式設計分類的民間智慧 – drossbucket視覺化程式設計ROS
- Linux下第一個程式設計,hello world!Linux程式設計
- 好程式設計師Java培訓之類的例項化步驟程式設計師Java
- C++設計模式+例項視訊教程C++設計模式
- 資料視覺化設計的25個小技巧視覺化
- 6個程式設計實戰網站,想學程式設計的你不能錯過!程式設計網站
- LINUX Shell指令碼程式設計例項詳解(一)上Linux指令碼程式設計
- 微控制器C程式設計例項指導pdfC程式程式設計
- makefile--偽目標語法與程式設計例項程式設計
- 不需要程式設計的任何視覺化工具?程式設計視覺化
- 視覺化介面編輯器設計視覺化
- 視覺化編輯器的設計視覺化
- .net視覺化表單設計工具視覺化
- 老程式設計師的10個程式設計小技巧,教你寫出高質量程式碼!程式設計師
- 深入淺出Win32多執行緒程式設計--之綜合例項Win32執行緒程式設計
- 好程式設計師web前端分享在HTML中使用JavaScript例項程式碼程式設計師Web前端HTMLJavaScript
- Spring程式設計式和宣告式事務例項講解Spring程式設計