Windows應用程式的物件導向特性 之 封裝

2021-07-10 20:10:04 字數 2983 閱讀 4676

在早期的程式設計生涯中,程式設計師採用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提供視覺化的面板 重試操作並且其可以寄宿在各種宿主應用程式中。但是專案是要定時獲取其他系統資料到本系統,功能簡單,所以為了不引入太複雜的框架和增加學習成本的考慮,使用微軟提供...