CDialog與CDialogEx的區別聯絡

2021-09-07 17:30:37 字數 4667 閱讀 6219

cdialogex是vs2003之後出現的,vc++6.0沒有。

cdialogex = cdialog extend

extend的意思是擴充套件,即擴充套件的cdialog!

這個類是cdialog的擴充套件類,基類就是cdialog,具備基類全部功能,並根據新系統需要增加了一些介面美化的功能。

比如修改對話方塊的背景顏色,標題欄的顏色,標題欄的點陣圖,標題欄字型的位置和顏色,包括啟用和非啟用狀態,對話方塊邊界的顏色,對話方塊字型等。

如果使用的是vs2005之後的版本,推薦使用cdialogex,好看一些,vc++6就不要想了,老實用cdialog吧。

兩個在基礎功能上沒什麼區別,但因為版本不同,mfc嚮導生成的類模板差異較大。

cdialogex類 1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

/// cdialogex dialog

class

cdialogex : 

public

cdialog

;protected

:hbitmap            m_hbkgrbitmap;

csize              m_sizebkgrbitmap;

cbrush             m_brbkgr;

backgroundlocation m_bkgrlocation;

cdialogimpl     m_impl;

bool               m_bautodestroybmp;

// operations:

public

:void

setbackgroundcolor(colorref color, bool brepaint = true);

void

setbackgroundimage(hbitmap hbitmap, backgroundlocation location = backgr_tile, bool bautodestroy = true, bool brepaint = true);

bool setbackgroundimage(uint uibmpresid, backgroundlocation location = backgr_tile, bool brepaint = true);

// overrides

public

:virtual

bool pretranslatemessage(msg* pmsg);

protected

:virtual

bool oncommand(wparam wparam, lparam lparam);

// implementation

protected

://}afx_msg

declare_message_map()

void

setactivemenu(cmfcpopupmenu* pmenu);};

cdialog 類  1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

/// cdialog - a modal or modeless dialog

class

cdialog : 

public

cwnd

}afx_msg

declare_message_map()

};// all cmodaldialog functionality is now in cdialog

#define

cmodaldialog    cdialog

cdialogex=cdialog extendextend的意思是擴充套件,即擴充套件的cdialog

CDialog響應鍵盤事件

在網上經常有人提出cdialog中響應鍵盤訊息的onkeydown函式沒反應。結論是cdialog不響應onkeydown,相應的解決方法是 乙個簡單的辦法就是過載cwnd pretranslatemessage bool ctestdlg pretranslatemessage msg pmsg ...

C dialog 對話方塊

c winform中有兩種對話方塊 選擇檔案檔案對話方塊 openfiledialog dialog new openfiledialog 是否支援多個檔案的開啟?dialog.multiselect false 標題 dialog.title 請選擇 檔案型別 dialog.filter 或 jp...

CDialog窗體最大化

setwindowpos this m hwnd,hwnd topmost,0,0,0,0,swp nomove swp nosize centerwindow hdc hdesktopdc createdc t display null,null,null int xscrn getdevicec...