999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

工作提醒軟件設計研究

2008-12-31 00:00:00文昌辭楊寶華
電腦知識與技術 2008年32期

摘要:介紹了辦公室工作提醒軟件的開發背景以及在這種背景下該軟件應具有的各項功能,簡單說明了在開發過程中需要用到的編程技術,詳細說明了這些功能的具體實現原理,并對后續開發完善提出了建議。

關鍵詞:控件;消息;消息映射宏;隊列;工作記錄;編輯;定時器;打印

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)32-1116-02

Research about Designing Office Work Notice Software

WEN Chang-ci, Yang Bao-hua, JIANG Zhi

(Jingchang office of Air Force, Beijng 100041, China)

Abstract: It introduces the development background and various functions of Office Work Notice Software,describes the programming techniques which are necessary in the related development process. In the following, it elaborates the detailed theory of realizing the previous function mentioned, and makes the suggestion which aims to fulfill the software functions in the future development.

Key words: control; message; message mapping macro; queue; work record; edit; timer; print

1 引言

辦公室的工作內容比較雜且比較多,大部分需要保密,所以要辦理的手續很多。有的任務需要馬上處理;有的任務相對而言可以緩一緩;有的任務目前無法完成,需要定時檢查是否滿足條件,滿足后馬上辦理;有的任務可能剛進行到一半,領導又決定取消了。在這樣一種工作內容高度交叉、時刻都可能有新的任務并且經常被中斷、中斷完成之后還得繼續處理的情況下,為了防止工作太忙而忘記某些事項,借助于可視化開發工具VC++開發了“工作提醒”軟件,利用計算機來規劃安排工作、提醒自己關于工作的進展情況。

2 編輯功能

2.1 錄入

借助于CEdit類文本框實現該功能。用鼠標雙擊選中欲修改的或還沒有填入內容的記錄欄,在鼠標附近出現一個CEdit類文本框控件,CEdit類文本框控件內顯示記錄欄的當前內容。編輯相應的文本內容,當焦點離開CEdit類文本框控件時,發送的EN_KILLFOCUS消息通過消息映射宏ON_EN_KILLFOCUS(IDC_EDIT, OnKillfocusEdit)來調用CWorkNoticeView::OnKillfocusEdit()函數,促使記錄欄中的內容更改為CEdit類文本框控件的文本內容,同時CEdit類文本框控件從界面上消失。關鍵代碼如下:

m_Edit.GetWindowText(temp);

m_MSFlexGrid.SetTextMatrix(save_row,save_col,temp);

2.2 刪除、添加、清空

通過右鍵點擊選中某項記錄,彈出彈出式菜單,選擇相應的選項,系統自動發送的COMMAND消息通過ON_COMMAND(Delete,OnDelete)、ON_COMMAND(Add,OnAdd)、ON_COMMAND(clear, OnCLear) 消息映射宏映射到相應函數實現。

2.3 刪除記錄

點擊菜單“刪除數據庫記錄”,系統自動發送COMMAND消息,該消息通過消息映射宏ON_COMMAND(DeleteAll, OnDeleteAll)調用執行CWorkNoticeView::OnDeleteAll()函數,該函數實現刪除界面上所有記錄的功能。關鍵代碼如下:

do{m_ContentSet.Delete( );m_ContentSet.MoveNext();}

while(!m_ContentSet.IsEOF( ));

2.4 設置、記錄時間

用鼠標雙擊選中時間記錄欄,在鼠標附近出現一個CDateTimeCtrl類控件,通過微調按鈕調整CDateTimeCtrl類控件的時間設置,當焦點離開CDateTimeCtrl類控件時,發送的NM_KILLFOCUS消息通過消息映射宏ON_NOTIFY(NM_KILLFOCUS, IDC_DATETIMEPICKER1, OnKillfocusDatetimepicker1)調用OnKillfocusDatetimepicker1()函數,借助于CDateTime、CTime、CDateTimeCtrl這三個類將時間記錄欄中的內容更改為CDateTimeCtrl類控件的時間設置,同時CDateTimeCtrl類控件從界面上消失。關鍵代碼如下:

m_DateTime.GetTime(timeDest);

m_Time.Format(\"%d時%d分\",timeDest.GetHour(),timeDest.GetMinute());

m_MSFlexGrid.SetTextMatrix(save_row,save_col,m_Time);

2.5 修改屬性

用鼠標雙擊某項記錄對應的“是否公事”屬性項,對應的屬性值在“True”與“False”之間交替變動。當鼠標雙擊MSHFLEXGRID 表格控件時,系統自動發送DblClick消息,該消息通過消息映射宏ON_EVENT(CWorkNoticeView, IDC_MSHFLEXGRID1, -601, OnDblClickMshflexgrid1, VTS_NONE)調用執行CWorkNoticeView::OnDblClickMshflexgrid()函數,實現修改屬性的功能。關鍵代碼如下:

if(m_MSFlexGrid.GetText()==\"True\")m_MSFlexGrid.SetText(\"False\");

else m_MSFlexGrid.SetText(\"True\");

2.6 保存

點擊菜單“保存新記錄”,系統自動發送COMMAND消息,該消息通過消息映射宏ON_COMMAND(Save, OnSave)調用執行CWorkNoticeView::OnSave()函數,該函數將最終數據更新寫入數據庫。關鍵代碼如下:

for(int row=1;row<=m_MSFlexGrid.GetRows()-1;row++)

{m_ContentSet.AddNew( );m_ContentSet.m_column1=m_MSFlexGrid.GetTextMatrix(row,0);……}

2.7 撤銷

對之前的操作進行撤銷處理,需要設置兩個隊列,一個是Undo隊列,另一個是Redo隊列。所有正常的添加、刪除、修改操作都按序進入Undo隊列,留給Undo操作時使用;每一次Undo操作之后將剛剛進行的Undo操作放入Redo隊列,留給Redo操作時使用。UnDo操作的代碼略, ReDo操作的關鍵代碼如下:

list2[List2Num].operand=list1[List1Num].operand;

list2[List2Num++].XuHao=m_MSFlexGrid.GetTextMatrix(LineUndo,ColUndo);

m_MSFlexGrid.SetTextMatrix(LineUndo,ColUndo,list1[List1Num--].XuHao);

3 打印輸出

調用CWorkNoticeView::OnPrint()函數,該函數在執行時提示設置打印機,設置打印機后可打印界面上所有的工作記錄。關鍵代碼為:

for(int row=0;row<=m_MSFlexGrid.GetRows()-1;row++)

{pDC->TextOut(X_pos,Y_pos,m_MSFlexGrid.GetTextMatrix(row,0));……}

4 定時提醒

4.1 設置提醒

可以通過菜單實現定時器的開關,點擊選中菜單“設置”以發送COMMAND消息,COMMAND消息通過消息映射宏ON_COMMAND(AttributeReset, OnAttributeReset)調用執行CWorkNoticeView:: OnAttributeReset()函數,該函數負責對定時器的開關屬性進行設置。如果定時器狀態為開,那么定時器會周期性地發出提醒信號。關鍵代碼如下:

TimerSetDialog.DoModal();TimerInteval=TimerSetDialog.gap*1000*60;

4.2 設置間隔

通過CDialog類的派生類設置。如果設置“提醒時間間隔”為5分鐘,那么程序在運行時會每間隔5分鐘查詢一次數據庫中所有記錄,所有“完成時間記錄”為空的工作記錄將顯示在對話框界面上作為提醒。關鍵宏為:DDX_Text(pDX, IDC_EDIT1, gap);ON_BN_CLICKED(IDOK, On_TimerSetDialog_OK)

5 查詢

所有的工作記錄都存儲在數據庫中,需要查閱時,可以通過菜單中的“SQL語句查詢”輸入查找條件。借助于CDaoRecordset類實現,關鍵代碼如下:

m_DaoRecordset->Open(dbOpenDynaset,strSelect);

while (!m_DaoRecordset->IsEOF())

{COleVariant var = m_DaoRecordset->GetFieldValue(1);……}

6 格式轉換

把界面上顯示的工作記錄直接轉換成最終所需的word表格文檔,關鍵代碼如下:

創建Word實例:

oWordApp.CreateDispatch(\"Word.Application\", NULL)

創建新的word文檔:

Documents oDocs = oWordApp.GetDocuments(); Selection oSel = oWordApp.GetSelection();

添加工作記錄:

for(int row=0;row

{for(int col=0;col<6;col++)oSel.TypeText(m_MSFlexGrid.GetTextMatrix(row, col));……}

保存word文檔:

oActiveDoc.SaveAs(COleVariant(strFn), COleVariant((short)0),……);

7 結束語

辦公室的事情比較繁雜,在經費拮據的情況下如何利用現有的計算機硬件條件來幫助處理文秘類的事務,是一項很實用的研究課題。考慮到保密工作的需要,將辦公輔助軟件做成B-S結構的應用程序,同時將此工作提醒程序封裝成一個小模塊,以ActiveX控件的形式嵌入到辦公輔助軟件中,這樣所有的涉密數據均駐留在服務器上,客戶端只需有瀏覽器即可。

參考文獻:

[1] 廖進華,文昌辭,王昭順.數據結構[M].上海:上海交通大學出版社,2008:181-201.

[2] 潘愛民,王國印.Visual C++技術內幕[M].北京:清華大學出版社,1999:3-210.

[3] 薩師煊,王珊.數據庫系統概論[M].北京:高等教育出版社,2000:84-166.

[4] 文昌辭,王昭順.軟件測試自動化靜態分析研究[J].計算機工程與設計,2005(4):987-989.

主站蜘蛛池模板: 国产精品午夜福利麻豆| 日本91视频| 人妖无码第一页| 美女高潮全身流白浆福利区| 国产美女无遮挡免费视频网站 | 99精品影院| 欧美一区二区三区国产精品| 亚洲天堂2014| 国产农村妇女精品一二区| 激情网址在线观看| 亚洲成人网在线观看| 毛片免费观看视频| 欧美劲爆第一页| 经典三级久久| 先锋资源久久| 亚洲啪啪网| 免费高清自慰一区二区三区| 国产精女同一区二区三区久| AV老司机AV天堂| 亚洲无线国产观看| 麻豆精选在线| 中文字幕亚洲另类天堂| 亚洲一级毛片免费观看| 亚洲欧美不卡| 精品欧美一区二区三区久久久| 青青热久免费精品视频6| 婷婷亚洲天堂| 亚洲日韩精品综合在线一区二区| 九九久久精品国产av片囯产区| 久久鸭综合久久国产| 欧美精品v欧洲精品| 亚洲电影天堂在线国语对白| 国产91全国探花系列在线播放| 91成人免费观看在线观看| 思思热精品在线8| 日韩一区精品视频一区二区| 综合色88| 毛片免费在线视频| 91福利国产成人精品导航| 成人毛片在线播放| 午夜毛片免费看| 国产成人啪视频一区二区三区 | 久久91精品牛牛| 成人小视频在线观看免费| 国产欧美日韩专区发布| 波多野结衣亚洲一区| 欧美第二区| 毛片免费视频| 91偷拍一区| 欧美精品一二三区| 中文字幕日韩丝袜一区| 亚洲视频a| 日a本亚洲中文在线观看| 婷婷伊人五月| 亚洲成人免费在线| 久久久久亚洲av成人网人人软件| 欧美日韩一区二区三区四区在线观看 | 色婷婷啪啪| 欧美色视频在线| 亚洲区欧美区| 东京热一区二区三区无码视频| 日韩毛片免费视频| 特黄日韩免费一区二区三区| 国产精品成人观看视频国产| 久久久久久高潮白浆| 精品人妻一区二区三区蜜桃AⅤ| 九九这里只有精品视频| 亚洲成人高清无码| 国产人成乱码视频免费观看| 97国产精品视频自在拍| 国产精品黑色丝袜的老师| 国产乱视频网站| 少妇精品在线| 国产精品第一区| 国产亚洲高清视频| 91口爆吞精国产对白第三集| 国产AV无码专区亚洲A∨毛片| 欧美日韩午夜| 高潮毛片免费观看| 美女国产在线| 一级在线毛片| 亚洲—日韩aV在线|