在早期的程式設計生涯中,程式設計師採用c語言和windows api函式進行windows程式設計。 但採用這種方式進行程式開發,使得開發過程艱苦、乏味。
隨著程式設計技術的不斷發展,windows程式設計採用了物件導向的程式設計思想(object oriented programming,oop)。這種思想集抽象性、封裝性、整合性和多型性於一體,提高了程式設計的效率。
下面主要講一講應用程式主函式中類的封裝。從物件導向的思想進行分析,為了形成程式框架,應該宣告兩個類:視窗類和應用程式類。
視窗類的宣告。
在視窗類中,應該實現視窗類的設計、視窗類的註冊、視窗類的建立、視窗類的顯示和視窗類的更新等功能。
上述功能是視窗類的成員函式,為了輔助這些成員函式,還應該有乙個資料成員,hwnd型別的視窗控制代碼。
下面給出視窗類對視窗控制代碼以及視窗操作的api函式的封裝。我們將視窗類宣告為cframewnd。
class cframewnd
;//類中的函式
//registerwindow()設計視窗
int cframewnd::registerwindow()
//建立視窗
void cframewnd::create(lpctstr lpclassname,lpctstr lpwindowname)
//顯示視窗
void cframewnd::showwindow(int ncmdshow)
//註冊視窗
void cframewnd::updatewindow()
注意:在顯示視窗函式showwindow()和重新整理視窗函式updatewindow()中出現了符號「::」,大家也許知道這叫域作用符。如果出現這種符號時前面是空白,表示其後的函式是系統函式。
應用程式類的宣告。
二是呼叫成員函式run()來實現訊息迴圈。
//宣告應用程式類
;//類中的函式
//initinstance()函式
//run()函式
return msg.wparam;
}//析構函式
我們對視窗類和應用程式類進行封裝後,再來設計windows應用程式就非常方便了。
下面經過我們親手封裝過後的**:
//標頭檔案
#include "windows.h"
//定義全域性變數和函式
hinstance hinst;
hinstance hinstance;
msg msg;
char lpszclassname="hehe";
char* showtext;
//宣告訊息響應函式
lresult callback wndproc(hwnd hwnd,uint message,
wparam wparam,lparam lparam);
void onlbuttondown(hwnd hwnd,uint message,
wparam wparam,lparam lparam);
void onpaint(hwnd hwnd,uint message,
wparam wparam,lparam lparam);
void ondestory(hwnd hwnd,uint message,
wparam wparam,lparam lparam);
//宣告視窗類
class cframewnd
;//類中的函式
//registerwindow()設計視窗
int cframewnd::registerwindow()
//建立視窗
void cframewnd::create(lpctstr lpclassname,lpctstr lpwindowname)
//顯示視窗
void cframewnd::showwindow(int ncmdshow)
//註冊視窗
void cframewnd::updatewindow()
//宣告應用程式類
;//類中的函式
//initinstance()函式
//run()函式
return msg.wparam;
}//析構函式
//構造應用程式類物件
//主函式
int apientry winmain(hinstance hinstance,
hinstance hprevinstance,
lpstr lpcmdline,
int ncmdshow)
//視窗函式
lresult callback wndproc(hwnd hwnd,uint message,
wparam wparam,
lparam lparam)
return 0;
}//訊息響應函式
//響應滑鼠滑鼠單擊訊息
void onlbuttondown(hwnd hwnd,uint message,
wparam wparam,lparam lparam)
//重新整理訊息
void onpaint(hwnd hwnd,uint message,
wparam wparam,lparam lparam)
//關閉訊息
如何使用vc++6.0生成windows應用程式則參考部落格:使用api,手工生成 windows應用程式全過程(**+文字說明)
實現Web頁面向windows應用程式傳送訊息
例如,我們想在瀏覽器中輸入 mytest openmain讓winform程式開啟主視窗。我們該怎麼做呢?首先 修改winform程式為單例項模式。如果是vb.net 在 專案 選單上單擊 屬性 單擊 應用程式 選項卡。選中 生成單個例項應用程式 核取方塊。編寫 view code mytest d...
windows應用程式框架
windows作業系統是一種圖形化介面 windows程式設計是一種完全不同於傳統dos方式的程式設計方式 其內部執行原理為事件驅動的程式設計模式,主要是基於訊息的,當使用者需要完成某種功能時,呼叫作業系統的某種支援 windows api windows產生的任何資源 要占用或大或小一塊記憶體 作...
Windows服務應用程式
專案中要實現乙個定時任務的需求,目前c 定時任務的框架有很多比如hangfire quartz.net等,其中hangfire提供視覺化的面板 重試操作並且其可以寄宿在各種宿主應用程式中。但是專案是要定時獲取其他系統資料到本系統,功能簡單,所以為了不引入太複雜的框架和增加學習成本的考慮,使用微軟提供...