青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

glxhyt

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  15 隨筆 :: 0 文章 :: 4 評論 :: 0 Trackbacks
 

          日記 2010-4-5

關于MFC中的文本的編程:

簡單是:

1,在CTestView中定義兩個變量一個為CPointm_ptOrigin并設置為0;和

CString m_strLine的并設置為“”,在CTextView中。Cpp設置。

2,在CTestView中建立windows WM_CREAT中創建OnCreate

中編輯    //CClientDC dc(this);

//     TEXTMETRIC tm;

//     dc.GetTextMetrics(&tm);

       //CreateSolidCaret(20,100);

//     CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);

//     ShowCaret();

        //CBitmap bitmap;

        bitmap.LoadBitmap(IDB_BITMAP1);

        CreateCaret(&bitmap);//注意變量

        ShowCaret();

      

3,在OnDraw中編輯

CTextDoc* pDoc = GetDocument();

       ASSERT_VALID(pDoc);

       CString str("我愛你,你愛我嗎?");

       pDC->TextOut(50,50,str);

 

       CSize sz=pDC->GetTextExtent(str);

 

       str.LoadString(IDS_STRING61446);

       pDC->TextOut(0,200,str);

       pDC->BeginPath();

       pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);

       pDC->EndPath();

 

       pDC->SelectClipPath(RGN_AND);

      

       for(int i=0;i<300;i+=10)

       {

 

              pDC->MoveTo(0,i);

              pDC->LineTo(300,i);

              pDC->MoveTo(i,0);

              pDC->LineTo(i,300);

       }

4,

OnLButton

SetCaretPos(point);

       m_strLine.Empty();

       m_ptOrigin=point;

5,在OnChar中:

       CClientDC dc(this);

       m_strLine+=nChar;

       dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);

參見書中的152頁。

注意幾個函數:

1.dc.GetTextExtent可以得到字符串寬度、

  CSize sz=dc.GetTextExtent(m_strLine);

 

2.GetTextMetrics 是為了獲得當前字體的度量信息

3.捉迷藏:#include<stdio.h>

4.void main()

5.{

6. 

7.    int a[10]={11,11,11,11,11,11,11,11,11,11};

8.    int i=0;

9.    for(int j=0;j<1000;j++)

10.   {

11.       i=(i+j+1)%10;

12.      a[i]=i;

13.   }

14.   for(int k=0;k<10;k++)

15.   {

16. 

17.          if(a[k]==11)

18.                 printf("%d\n",k);

19.   }

20. 

21.}

22.另一種做法:鏈表法:

23.#include<iostream>

24.using namespace std;

25. 

26.typedef struct node

27.{

28. int data;

29. node *next;

30.}node;

31. 

32.node *node_create(int n);

33.node *node_create(int n)

34.{

35. node *pRet=NULL;

36. if(0!=n)

37. {

38.   int n_idx=1;

39.   node *p_node=NULL;

40. 

41.   p_node= new node[n];

42.   /*if(NULL==p_node)

43.   {

44.     return NULL;

45.   }

46.   else

47.   {

48.     memset(p_node,0,n*sizeof(node));

49. 

50.   }*/

51.   pRet=p_node;

52.   while(n_idx<n)

53.   {

54.     p_node->data=n_idx;

55.   p_node->next=p_node+1;

56.   p_node=p_node->next;

57.   n_idx++;

58.   }

59. 

60.   p_node->data=n;

61.   p_node->next=pRet;

62. 

63. }

64. return pRet;

65.}

66. 

67. int main()

68. {

69.   node *pList=NULL;

70.   node *pIter=NULL;

71.   int n=10;

72.   //int m=6;

73. 

74.   pList=node_create(n);

75. 

76.   pIter=pList;

77.   //m%=n;

78. //while(pIter!=pIter->next)

79. // {

80.     int a[10]={0};

81.      a[(pIter->data)-1]=pIter->data;

82.   for(int j=2;j<1000;j++)

83.   {

84.    for(int i=1;i<=j;i++)

85.    {

86.        pIter=pIter->next;

87.    }

88.    printf("%d",pIter->data);

89.    printf(" ");

90.    a[(pIter->data)-1]=pIter->data;

91.  

92.  

93.  

94.      //printf("%d\n",pIter->next->data);

95.   // pIter->next=pIter->next->next;

96.   // pIter=pIter->next;

97.   }

98.   printf("他隱藏的洞為:");

99.        for(int k=0;k<10;k++)

100.        {

101.            if(a[k]==0)

102.                      printf("%d   ",k+1);

103.        }

104. 

105. 

106. 

107. // }

108.   //printf("%d\n",pIter->data);

109.   delete[] pList;

110.   return 0;

111. }

112. 

113. 

114. 

115. 

116. 

117. 

 

關于文本編輯時的光標的移動:

CSize sz = dc.GetTextExtent(m_strLine);

       CPoint pt;

       pt.x=m_ptOrigin.x+sz.cx;

       pt.y=m_ptOrigin.y;

       SetCaretPos(pt);

關于字體的的設置:

       CFont font;

       font.CreatePointFont(300,"華文行楷",NULL);

       CFont *pOldFont = dc.SelectObject(&font);

。。。。。。。。。。。。。

dc.SelectObject(pOldFont);

 

文件操作函數:

Fopen

Fseek

Ftell

Fread

Fclose

Rewind

Fflush

文件的操作

關于文件的打開和寫入:
FILE *pFile=fopen("1.txt","w");

Fwrite("http://www.sunxin.org",1,strlen("http://www.sunxin.org"),pFile);

關于文件的寫入:

加入:*****

     Fclose(pFile);

     Fflush(pFile):

 

1,fseek函數可以吧文件指針從當前位置移動到指定的位置

*****************

 Feek(pFile,0,SEEK_SET);

Fwrite(“ftp:”,1,strlen("ftp:"),pFile);

Fclose(pfile);

2.文件的讀取有三種方法:
第一種:

 FILE *pFile=fopen("1.txt","r");

Char ch[100];

Fread(ch,1,100,pFile);

Fclose(pFile);

MessageBox(ch);

錯誤的

應該修改為:

 第一種:

FLFE *pFile=fopen("1.txt","w"):

Char buf[20]="http://ww.sunxin.org":

Buf[21]='\0';

Fwrite(but,1,22,pFile);

Fclose(pFile);

第二種為:

FILE *pFile-fopen("1.txt","r");

Char ch[100];

Memset(ch,0,100);

Fread(ch,1,100,pFile);

Fclose(pFile_;

MessageBox(ch);

 

第三種:

FILE *pFile=fopen("1.txt","r");

Char *pBuf;

Fseek(pFile,0,SEEK_END);將文件指針移到文件末尾

Int len=ftell(pFile); *****ftell函數是為了獲得文件的長度

pBuf=new char[len+1];

Fread(pBuf,1.len,pFile);

pBuf[len]=0;

Fclose(pFile);

messageBox(pBuf);

 

注意:**********

二進制文件和文本文件,二進制文件的讀取時增加了一個rb,wb,

 

一個面試題:

 FILE *pFile=fopen("3,txt,","w");

Int i=98341;

Char ch[5];

Itoa(i,ch,10);

 

Fwrite(ch,1,5,pFile);

Fclose(pFile);

或者這樣做:

FILE *pFile=fopen("2,txt","w");

Char ch[5];

Ch[0]=9+48:

Ch[1]=8+48:

Ch[2]=3+48:

Ch[3]=4+48:

Ch[4]=1+48:

 

************

C++關于文件的操作時用的ofstreamifstream

**********注意一點是必須增加頭文件:#include<fstream.h>

**********

Win32 API 關于文件的操作:

文件的創建或打開用的CreatFile

文件的寫入時:WrieFile

文件按的讀?。?/span>ReadFile

例如:

 Void CFIleView::OnFileWrite()

{

 

定義一個句柄變量

HANDLE hFile;

創建文件:

hFile=CreateFile***********

接收實際寫入的字節數:

DWORD dwWrite;

寫入數據

WriteFile*********

關閉句柄

CloseHandlehFile );

 

 

}

參照vc++深入編程458

關于MPC對文件的操作:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   日記2010-4-6

int a; //是聲明也是定義!

extern int a; //聲明!

//int 可以省略!

extern int a = 1; //出錯

*********

char ch;

ch = “A ”;地址

char ch;

ch = ‘A’;

#include <stdio.h>

int fun(int a)

{

if(a>0)

{ printf("a>0\n");return 1;}

if(0==a)

{ printf("a=0\n");return 0; }

if(a<0)

{ printf("a<0\n");return -1; }

}

思考:存在問題

思考下面這個函數設計有什么問題

warning C4715: 'fun' : not all control paths return a valu

必須添加return 0

文件使用方式意 義

rt” 只讀打開一個文本文件,只允許讀數據

wt” 只寫打開或建立一個文本文件,只允許寫數據

at” 追加打開一個文本文件,并在文件末尾寫數據

rb” 只讀打開一個二進制文件,只允許讀數據

wb” 只寫打開或建立一個二進制文件,只允許寫數據

ab” 追加打開一個二進制文件,并在文件末尾寫數據

rt+” 讀寫打開一個文本文件,允許讀和寫

wt+” 讀寫打開或建立一個文本文件,允許讀寫

at+” 讀寫打開一個文本文件,允許讀,或在文件末追加數 據

rb+” 讀寫打開一個二進制文件,允許讀和寫

wb+” 讀寫打開或建立一個二進制文件,允許讀和寫

ab+” 讀寫打開一個二進制文件,允許讀,或在文件末追加數據

對于文件使用方式有以下幾點說明:

1. 文件使用方式由r,w,a,t,b,+六個字符拼成,各字符的含義是:

r(read):

w(write):

a(append): 追加

t(text): 文本文件,可省略不寫

b(banary): 二進制文件

+: 讀和寫

2. 凡用“r”打開一個文件時,該文件必須已經存在, 且只能從該文件讀出。

 

Getch() 是為了獲得一個字符,但是不顯示

Getchar() 是為了獲得一個字符 ,ch=getchar();

Getche() 是為了獲得一個字符ASCII

 

 

 

 

[10.1]讀入文件e10-1.c,在屏幕上輸出。

#include<stdio.h>

main()

{

FILE *fp;

char ch;

if((fp=fopen("e10_1.c","rt"))==NULL)

{

printf("Cannot open file strike any key exit!");

Generated by Foxit PDF Creator © Foxit Software

http://www.foxitsoftware.com For evaluation only.

getch();

exit(1);

}

ch=fgetc(fp);//是從文件中讀取一個字符;

while (ch!=EOF) EOF表示是-1

{

putchar(ch);//輸出字符串

ch=fgetc(fp);

}

fclose(fp);

}

關于結構體:#include"stdio.h"

#define NUM 3

struct mem

{

char name[20];

char phone[10];

};

void main()

{

struct mem man[NUM];

int i;

for(i=0;i<NUM;i++)

{

printf("input name:\n");

gets(man[i].name);

printf("input phone:\n");

gets(man[i].phone);

}

printf("name\t\t\tphone\n\n");

for(i=0;i<NUM;i++)

printf("%s\t\t\t%s\n",man[i].name,man[i].phone);}

 

[7.7]用指針變量輸出結構數組。

struct stu

{

int num;

char *name;

char sex;

float score;

}boy[5]={

{101,"Zhou ping",'M',45},

{102,"Zhang ping",'M',62.5},

{103,"Liou fang",'F',92.5},

{104,"Cheng ling",'F',87},

{105,"Wang ming",'M',58},

};

main()

{

struct stu *ps;

printf("No\tName\t\t\tSex\tScore\t\n");

for(ps=boy;ps<boy+5;ps++)

printf("%d\t%s\t\t%c\t%f\t\n",ps->num,ps->name,ps->sex,ps->

score);

}

“聯合”與“結構”有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的內存空間,一個結構變量的總長度是

各成員長度之和。而在“聯合”中,各成員共享一段內存空間,一個聯合變量的長度等于各成員中最長的長度。應該說明的是, 這

里所謂的共享不是指把多個成員同時裝入一個聯合變量內,而是指該聯合變量可被賦予任一成員值,但每次只能賦一種值, 賦入

新值則沖去舊值。如前面介紹的“單位”變量, 如定義為一個可裝入“班級”或“教研室”的聯合后,就允許賦予整型值(班級)

或字符串(教研室)。要么賦予整型值,要么賦予字符串,不能把兩者同時賦予它。聯合類型的定義和聯合變量的說明一個聯合類型

必須經過定義之后, 才能把變量說明為該聯合類型

2010 4 8 日記:

#include <windows.h>

WINDOWS.H是主要的含入文件,它包含了其它Windows表頭文件,這些表頭文件的某些也包含了其它表頭文件。這些表頭文件中最重要的和最基本的是:

WINDEF.H 基本型態定義。

WINNT.H 支持Unicode的型態定義。

WINBASE.H Kernel函數。

WINUSER.H 使用者接口函數。

WINGDI.H 圖形設備接口函數。

 

#include <windows.h>

 

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

{

MessageBox (NULL, TEXT ("Hello, Windows 98!"), TEXT ("HelloMsg"), 0);

return 0 ;

}

 

 

int

WINAPI

WinMain

HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nShowCmd

;

WinMain的第一個參數被稱作「執行實體句柄」。在Windows程序設計中,句柄僅是一個應用程序用來識別某些東西的數字。在這種情況下,該句柄唯一地標識該程序,還需要它在其它Windows函數呼叫中作為參數。Windows的早期版本中,當同時運行同一程序多次時,您便創建了該程序的「多個執行實體(multiple instances)」。同一應用程序的所有執行實體共享程序和只讀的內存(通常是例如菜單和對話框模板的資源)。程序通過檢查hPrevInstance參數就能夠確定自身的其它執行實體是否正在運行。然后它可以略過一些繁雜的工作并從前面的執行實體將某些數據移到自己的數據區域。

32Windows版本中,該概念已被拋棄。傳給WinMain的第二個參數總是NULL(定義為0)。

WinMain的第三個參數是用于執行程序的命令列。某些Windows應用程序利用它在程序啟動時將文件加載內存。WinMain的第四個參數指出程序最初顯示的方式,可以是正常的或者是最大化地充滿整個畫面,或者是最小化顯示在工作列中。我們將在第三章中介紹使用該參數的方法。

 

 

MessageBox函數用于顯示短信息。雖然,MessageBox顯示的小窗口不具有什么功能,實際上它被認為是一個對話框。

MessageBox的第一個參數通常是窗口句柄,我們將在第三章介紹其含義。第二個參數是在消息框主體中顯示的字符串,第三個參數是出現在消息框標題列上的字符串。在HELLMSG.C中,這些文字字符串的每一個都被封裝在一個TEXT宏中。通常您不必將所有字符串都封裝在TEXT宏中,但如果想將您的程序轉換為Unicode字符集,這確是一個好主意。我將在第二章詳細討論該問題。

MessageBox的第四個參數可以是在WINUSER.H中定義的一組以前綴MB_開始的常數的組合。您可從第一組中選擇一個常數指出希望在對話框中顯示的按鈕:

#define MB_OK           0x00000000L

#define MB_OKCANCEL   x00000001L

#define MB_ABORTRETRYIGNORE 0x00000002L

#define MB_YESNOCANCEL       0x00000003L

 

正常情況下,在編譯階段,編譯器從C原始碼文件產生一個.OBJ(目標)文件。在連結階段,連結程序結合.OBJ文件和.LIB(庫)文件以建立.EXE(可執行)文件。通過在「 Project」頁面標簽上選擇「Settings」并單擊「 Link」頁面標簽可以查看這些庫文件的列表。特別地,您會注意到KERNEL32.LIBUSER32.LIBGDI32.LIB。這些是三個主要Windows子系統的「引用鏈接庫」。它們包含了動態鏈接庫的名稱以及放進.EXE文件的引用信息。Windows使用該信息處理程序對KERNEL32.DLLUSER32.DLLGDI32.DLL動態鏈接庫中函數的呼叫。

 

2010 4 9

這個問題用幾個解決方案。我首選的方案是:

while(1)

{

?}

5. 用變量a 給出下面的定義

a) 一個整型數(An integer

b)一個指向整型數的指針( A pointer to an integer

c)一個指向指針的的指針,它指向的指針是指向一個整型數( A pointer to a pointer to an integer

d)一個有10 個整型數的數組( An array of 10 integers

e) 一個有10 個指針的數組,該指針是指向一個整型數的。(An array of 10 pointers to integers

f) 一個指向有10 個整型數數組的指針( A pointer to an array of 10 integers

g) 一個指向函數的指針,該函數有一個整型參數并返回一個整型數(A pointer to a function that takes an integer as an argument

and returns an integer

h)一個有10 個指針的數組,該指針指向一個函數,該函數有一個整型參數并返回一個整型數( An array of ten pointers to functions t

hat take an integer argument and return an integer

答案是:

a) int a; // An integer

b) int *a; // A pointer to an integer

c) int **a; // A pointer to a pointer to an integer

d) int a[10]; // An array of 10 integers

e) int *a[10]; // An array of 10 pointers to integers

f) int (*a)[10]; // A pointer to an array of 10 integers

g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer

h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

人們經常聲稱這里有幾個問題是那種要翻一下書才能回答的問題,我同意這種說法。當我寫這篇文章時,為了確定語法的正確性,我的

Static

6. 關鍵字static 的作用是什么?

這個簡單的問題很少有人能回答完全。在C 語言中,關鍵字static 有三個明顯的作用:

?; 在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。

?; 在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變

量。

?; 在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。

大多數應試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺點,因為他顯然

不懂得本地化數據和代碼范圍的好處和重要性。

 

#define BIT3 (0x1 << 3)

static int a;

void set_bit3(void) {

a |= BIT3;

}

void clear_bit3(void) {

 

a &= ~BIT3;

}

 

unsigned int compzero = ~0;

 

 

 

char * strcpy( char *strDest, const char *strSrc )

{

assert( (strDest != NULL) && (strSrc != NULL) );

char *address = strDest;

while( (*strDest++ = * strSrc++) != ‘\0’ );

return address;

}

4,21 日,

 

創建畫刷,和畫筆
HBRUSH hBrush = GetStockObject(REG(255,0,0);

呼叫selectObject 將它選進設備內容:

SelectObject (hdc, hBrush) ;

 

您也可以不定義hPen變量,而將GetStockObjectSelectObject呼叫合并成一個敘述:

SelectObject (hdc, GetStockObject (WHITE_PEN)) ;

如果想恢復到使用BLACK_PEN的狀態,可以用一個敘述取得這種畫筆的句柄,并將其選進設備內容:

SelectObject (hdc, GetStockObject (BLACK_PEN)) ;

 

Windows程序以句柄來使用畫筆。 Windows表頭文件WINDEF.H中包含一個叫做HPEN的型態定義,即畫筆的句柄,可以定義這個型態的變量(例如hPen):

HPEN hPen ;

呼叫GetStockObject,可以獲得現有畫筆的句柄。例如,假設您想使用名為WHITE_PEN的現有畫筆,可以如下取得畫筆的句柄:

hPen = GetStockObject (WHITE_PEN) ;

現在必須將畫筆選進設備內容:

SelectObject (hdc, hPen) ;   

 

 

 

 case WM_CREARE:

 

 SETIMER(null,1,6000,NULL)

 

Case WM_LBUTTON:

 要得到窗口顯示區域的設備內容句柄,可以呼叫GetDC來取得句柄,在使用完后呼叫 ReleaseDC

hdc = GetDC (hwnd) ;

使用GDI函數

ReleaseDC (hwnd, hdc) ;

 

呼叫selectObject 將它選進設備內容:

SelectObject (hdc, hBrush) ;

 

化線的幾個函數:

 MoveToEx (hdc, xBeg, yBeg, NULL) ;

LineTo (hdc, xEnd, yEnd) ;

 

Case WM_PAIN:

MoveToEx (hdc, 0, cyClient / 2, NULL) ;

LineTo (hdc, cxClient, cyClient / 2) ;

for (i = 0 ; i < NUM ; i++)

{

apt[i].x = i * cxClient / NUM ;

apt[i].y = (int) (cyClient / 2 * (1 - sin (TWOPI * i / NUM))) ;

}

Polyline (hdc, apt, NUM) ;

 

 

 

畫圓:

Ellipse

Ellipse (hdc, xLeft, yTop, xRight, yBottom) ;

 

當您要將數組中的點連接成線時,使用Polyline函數要簡單得多。下面這條敘述畫出與上面一段程序代碼相同的矩形:

Polyline (hdc, apt, 5) ;

 

畫矩形:

Rectangle (hdc, 1, 1, 5, 4) ;

 

 

如果您需要在整個程序執行期間都使用定時器,那么您將得從WinMain函數中或者在處理WM_CREATE消息時呼叫SetTimer,并在退出WinMain或響應WM_DESTROY消息時呼叫KillTimer。根據呼叫SetTimer時使用的參數,可以下列三種方法之一使用定時器。

方法一

這是最方便的一種方法,它讓WindowsWM_TIMER消息發送到應用程序的正常窗口消息處理程序中,SetTimer呼叫如下所示:

SetTimer (hwnd, 1, uiMsecInterval, NULL) ;

第一個參數是其窗口消息處理程序將接收WM_TIMER消息的窗口句柄。第二個參數是定時器ID,它是一個非0數值,在整個例子中假定為1。第三個參數是一個32位無正負號整數,以毫秒為單位指定一個時間間隔,一個60,000的值將使Windows每分鐘發送一次WM_TIMER消息。

您可以通過呼叫

KillTimer (hwnd, 1) ;

在任何時刻停止WM_TIMER消息(即使正在處理WM_TIMER消息)。此函數的第二個參數是SetTimer呼叫中所用的同一個定時器ID。在終止程序之前,您應該響應WM_DESTROY消息停止任何活動的定時器。

當您的窗口消息處理程序收到一個WM_TIMER消息時,wParam參數等于定時器的ID值(上述情形為1),lParam參數為0。如果需要設定多個定時器,那么對每個定時器都使用不同的定時器IDwParam的值將隨傳遞到窗口消息處理程序的WM_TIMER消息的不同而不同。為了使程序更具有可讀性,您可以使用#define敘述定義不同的定時器ID

 

 

WM_LBUTTONDOWN

 

里面就有 坐標的x y 的值 直接取出來

 

定義:
RECT

 

POINT

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.21        

 

   今天主要講了一下 mfc 的機制,和 簡單的畫圖:

 

1.切記 加上頭文件:#include<afxwin.H>

2. 要明白 mfc中的繼承關系

3.Cobject--ccmdtarget--cthread---cwinApp----CHellowinapp

4.Cobject---ccmdtaget--cwnd --cframewnd---

 

 

Win32 api windows編程中關于

1. 設計一個窗口類 winmain WNDCLASS wndcls;

2. 注冊一個窗口類RgeisterClass

3. 創建一個窗口類 HWND hwnd

             Hwnd = createwindow(")

4. 顯示 和 刷新窗口,ShowWindowhwnd,SW_SHOWNORMAL

                     Updatewindowhwnd

5. 定義消息結構體,開始消息循環:
        
MSG?。恚螅?/span>

6. While(getMessage(&msg,NULL,0,0)

{

   

TranslateMessage(&msg);

DispatechMessage(&msg):

}

7. 編寫窗口過程函數:
LRESULT CALLBACK WinSunProc

 

 

 

幾個輸出語句:
 sprintf

case WM_CHAR:

   Char szChar[20];

Sprintf(szChar,"char code is %d",wparam);

Messagebox(hwend, szChar,"char",0);

 

Case WM_LBUTTON:

MessageBox(hwnd Mouse clicked", "message ",0);

 

HDC hdc;

Hdc = GetDC(hwnd);

TextOut(hdc, 0, 50, "我愛你", strelen("我愛你")):

ReleaseDC(hwnd, hdc);

 

Case WM_PAINT:

 HDC hDC;

Paintstruct ps;

hDC=BeginPaint(hwnd , &ps)

 

TextOut(hdc,0,0," kkk" ,strlen("kkk"));

 

EndPaint(hwnd,&ps);

 

 

今天還了一個畫圓的例子,大概思路是

建兩個類 一個是CHellownd 繼承的事 CwinApp

 

還有一個是 CMainFrame 繼承的事 CFrame

 

注意在CMainFrameIninInstrance 中的大小寫

還有事在 設置里面加入MFC 靜態 訪問

 

注意:
CHellownd

定義了virtual一個 BOOL IninInstrance ()

Return true

 

還有事在CHellownd 的構造還是

 

m_pMainWnd = new CMainFrame;

m_pMainWnd 是在CThread 中定義的事一個Cwnd 類型的指針,他保存了了應用程序框架窗口對象的指針,也就是說,是指向CMainFrame 對象的指針

 

m_pMainWnd->ShowWindowSW_SHOW);

m_PMainWnd->UpdageWindow();

 

 

CMainFrame

ONPaint()函數 用于繪制 窗口

 

還用到一個ONLBUTTONDOWN UINT flagPOINT point)

其中POINT 指的是 當前坐標的位置;

 

主要代碼:

一種方法是:

 

ONLBUTTONDOWN中定義 一個畫筆一個化刷,創建一個矩形,調用一個ellipse函數:

CRect rect;

 

Int r = rand()%60 +1;

CClientDc   dc(this);

 

dc.Rect(point.X-r, point.Y-r, point.X+r, point.Y+r);

 

調用系統的化刷:

HBRUSH hBrush = GetStockObject(WHITE_BRUSH);

HPEN hPen = GetStockObject(NULL_HPEN):

創建一個自己的化刷和畫筆:
HBRUSH hBrush = CreateStockObject(RGB(255,0,0)):
HPen hPen = Createpen(CP_SOLID, 1, RGB(0, 0 , 255));

 

把畫筆和化刷綁定到Hdc

SelectObject(hDC, hBrush);

selectObjecthDChPen);

 

花園:

Ellipse hDC, point.X-r, point.Y-r, point.X+r, point.Y+r);

還有一種是

 dc.Ellipse(rect);

 

第一種是在ONPAINT中實現的;

 

ONLBUTTONDOWN主要是為了獲得一個數組, 在窗口重繪的時候可以保留

CMainFrame 中定義一個數組和一個count

 

#define MAX 100

 

RECT ARRAY100】;

Int count

 

ONLBUTTONDOWN中主要操作時:

 

 

 

 

 

Static int i=0;

CRect rect;

 

Int r = rand()%60 +1;

CClientDc   dc(this);

 

dc.Rect(point.X-r, point.Y-r, point.X+r, point.Y+r);

 

ARRAY[i++] = rect;

Count = i;

還有一一個主意

 

INvalidateRectrect, 1);

是為了觸發onpaint

在那個onpaint 的函數里面主要是:

 

CPaintDC dc(this);

 

For(int j= 0; j< = count:j++)

{

 

 

為了獲得一個各種顏色的化刷,可以定義三個隨機的變量:
int x = rand()%255;

Int y = rand()% 255;

Int z -rand()%255;

 

HBRUSH hBrush = CreateStockObject(RGB(x,y,z)):

調用系統的化刷:

HBRUSH hBrush = GetStockObject(WHITE_BRUSH);

HPEN hPen = GetStockObject(NULL_HPEN):

創建一個自己的化刷和畫筆:
HBRUSH hBrush = CreateStockObject(RGB(255,0,0)):
HPen hPen = Createpen(CP_SOLID, 1, RGB(0, 0 , 255));

 

把畫筆和化刷綁定到Hdc

SelectObject(hDC, hBrush);

selectObjecthDChPen);

 

花園:

Ellipse hDC, point.X-r, point.Y-r, point.X+r, point.Y+r);這種不可以

還有一種是

 dc.Ellipse(rect);

dc.Ellipse(ARRAY[i]);

 

}

 

4.24  

 

   對話框:

模態對話框:modal

非模態對話框: modeless

 

Cobject -ccmdtarget-cmd--cdialog

 

Cproperty and cpropertyPage 是常見屬性頁,和向導對話框:

 

今天做的第一個例子 m_length * m_wight = m_area

 

 主意幾點:

 1。在創建一個對話框之后 用classwizard 創建一個new class

并添加相應的 m_length 類型是 int 初始化是在構造函數里面一般是m_length =0

添加的事m_name 類型是 CString 的 初始化一般是 m_name = _T("");

 

添加相信的 m_length 類型是 Cedit,   Cbutton 或者其他的控件,

 

注意:是在IninInstrance 中初始化的 m_length.setWindowText(" 1 ");

 

2.  創建一個子對話框 創建相應的類CDialog1

3.  在父類中 創建一個onbutton 函數,(雙擊Button控件),

     在里面

   

UpdateData();

     CDialog dll;

     M_area = m_ length * m_weighth;

   如果是在子類的對話框中顯示:在子類的中創建一個m_area1的變量

          dll.M_area1 = m_area;

     dll.DoModal ( );

    

UpdateDataFALSE);

                                  

紅色的部分一定要加上 ,切記: 在密碼,和個人信息匹配中也一定要加上:

 

 

 

 

 

 

類的更改步驟:

   1,刪除 .C .Cpp

   2. 在文件所建的目錄中招到.C .Cpp 文件進行更改;

   3, 在 .Cpp .C 中用replace 替換所有

   4,在頭文件中應該改, 在用的地方也要改

 

 

創建一個非模態的對話框,可以顯示好幾個:

基本的步驟是:
1
,常見一個 子對話框 對應的創建一個新類: CDialog1

2, 直接用:

   CDialog1 dll;

      dll.CreateIDD_IDTEST_DIALOG,

      dll.ShowWindow(SW_SHOWNORMAL);

 只會顯示一段時間;

 

更改:

      應該在父類 (父窗口)中創建一個子類 CDiaTest *dll;

     

IninInstrance dll = NULL;

 

OnButton

If dll == NULL

{

   Dll = new CDiaTest

}

If(! (dll->GetSateHwnd( ))

{

   dll-- >Create(IDD_ ****, this);

   Dll- >ShowWindow(SW_ SHOWNOARMAL);

Else

{

 Dll - > SHOWWIndowSW_SHOWNORMAL

}

 

     并且在父類中增加一個wind 消息響應函數:

        WM_DESATROY

CTEST::ONDESTORY )

{

 If( dll ! = NULL

 Delete dll

 Dll = NULL;

}

 

屬性頁的基類:不是CDialog而是 CPropertyPage

 

2,做一個有兩個或三個屬性頁的對話框

 先建一個主的對話框,在上面添加一個Onbutton 對應的是:個人信息;

 

 再建兩個或三個屬性頁,如:個人愛好,個人信息,是在Cdialog中選擇倒數第二個,并選擇C P A ,并建相應的類Chabby ,和Cperson,

    屬性頁的基類:不是CDialog而是 CPropertyPage

 

然后再建一CpersonSheet 繼承CPropertySheet

 

MSDN 關于添加屬性頁的是:

AddPage CPropertyPage * M)

 

1,定義兩個屬性頁的對象:

   Cperson m_person

   Chabby m_hobby

2,在狗仔函數中的第二個添加, 也可以在兩個里面都添加:

    AddPage&m_person)

AddPage(&m_hobby);

3,在OnButton

 

 CpersonSheet personinfo(“個人信息”);

 

Personinfo.DoModal();

 

3,做一個逃跑按鈕:

注意函數:

 ShowWindowSW_HIDE);

 

在一個對話框上創建兩個按鈕,m_ButtonDown m_ButtonUp 

Shuxiang 屬性:CmouseMoveBtn并添加相應的圖文件:

 

創建一個CMouseMoveBtn 的類 這個類

中定一個

           CMouseMoveBtn *m_pbtnAnother;

           IninInstrance中初始化

            指針為NULL

 

 

 

在在對話框上CDIALAGIninInstrance

 

M_ButtonDown.m_pbtnAnother = & m_ButtonUp

m_ButtonUp. m_pbtnAnother = & M_ButtonDown

 

CMouseMoveBtn 的類 中選擇WM_CMOUSEMOVE 并產生相應的函數:

 

中添加:

        This->ShowWindowSW_HIDE

 

M_pbtnAnoter->ShowWindowSW_HIDE);

M_pbtnAnoter->ShowWindowSW_HIDE);//好像是:SW_SHOW查一下書

 

創建一個個人信息,密碼的進入的對話框

步驟:

1.創建一個對話框添加相應的組件,并在兩個編輯框上創建相應兩個變量

2.CString 的類型 m_name, m_mima

3.在創建一個對話框并創建相應的類如CDialog1

4.OnButton
 

 UpdateData();

CDialog1 dll;

Static int count = 3;

 

CString t("123456");

CSring s("guolong");

 

If(m_mima ! = t)

{

 MessageBox"密碼不正確“);

 Count--;

}

If(count == 0

{

 EndDialog(IDOK);

或者CDialog::OnOK()

}

 

Ifm_name == s&& m_mima == t

{

dll.DoModal();

}

UpdateData(FALSE);}

 

 

 

 

 

 

 

 

 

 

posted on 2010-08-21 17:27 郭龍 閱讀(1132) 評論(0)  編輯 收藏 引用
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美亚洲一级片| 久久精品2019中文字幕| 欧美成人性网| 久久亚洲私人国产精品va| 国产日韩欧美| 久久综合五月| 美女国产精品| 亚洲视频精品在线| 亚洲天堂av高清| 国产亚洲精品bt天堂精选| 久久精品人人爽| 久色婷婷小香蕉久久| 亚洲精品资源| 一区二区三区视频在线观看| 国产精品入口麻豆原神| 久久人体大胆视频| 欧美黄色免费网站| 香蕉国产精品偷在线观看不卡 | 国产一区二区三区精品欧美日韩一区二区三区| 亚洲欧美资源在线| 久久久精品动漫| 日韩一级片网址| 亚洲免费视频成人| 在线看片第一页欧美| 亚洲精品一区在线| 国模精品一区二区三区色天香| 美国成人毛片| 欧美色一级片| 美女主播精品视频一二三四| 欧美日韩国产精品专区| 久久婷婷国产麻豆91天堂| 欧美精品在线极品| 久久久噜噜噜久久人人看| 欧美日韩国产一区二区| 欧美一区二区三区在线免费观看| 老司机凹凸av亚洲导航| 香蕉av777xxx色综合一区| 欧美成人日韩| 久久综合久久综合这里只有精品| 欧美午夜精品一区二区三区| 欧美成人免费在线观看| 亚洲欧美影音先锋| 欧美成人dvd在线视频| 亚洲欧美日韩精品久久久| 免费成人在线观看视频| 久久国产精品久久国产精品| 欧美成人免费一级人片100| 久久精品三级| 国产伦精品一区二区三区在线观看 | 欧美激情视频给我| 久久免费99精品久久久久久| 国产精品扒开腿爽爽爽视频| 亚洲国产精品一区制服丝袜| 国产精品美女| 国产精品99久久99久久久二8| 亚洲精品一线二线三线无人区| 久久久99精品免费观看不卡| 欧美在线视频一区| 国产精品一区二区在线观看不卡| 亚洲免费精彩视频| 99精品视频免费观看| 老司机一区二区| 欧美va亚洲va日韩∨a综合色| 国产亚洲激情| 欧美一区=区| 久久精品99国产精品日本| 国产精品伦一区| 中文亚洲免费| 亚洲欧美电影在线观看| 国产精品va在线| av成人老司机| 亚洲在线一区二区| 国产精品久久久久久五月尺| 9i看片成人免费高清| 亚洲综合电影| 国产精品推荐精品| 久久成人免费| 欧美a级片网站| 亚洲精品久久久久久久久久久久 | 亚洲国产精品黑人久久久| 在线观看亚洲精品| 欧美.www| 亚洲肉体裸体xxxx137| 在线视频免费在线观看一区二区| 欧美日韩中文字幕| 亚洲综合视频网| 免费在线亚洲| 亚洲精品视频在线播放| 欧美日韩一区在线观看| 亚洲尤物在线视频观看| 久久阴道视频| 亚洲伦伦在线| 国产精品亚洲综合色区韩国| 欧美在线999| 亚洲风情在线资源站| 亚洲少妇最新在线视频| 国产亚洲欧美aaaa| 欧美国产第二页| 亚洲免费一在线| 欧美成人三级在线| 亚洲欧美国产精品桃花| 韩国亚洲精品| 欧美三区在线| 国产精品v一区二区三区| 久久久久国产一区二区三区| 欧美一区二区大片| 欧美3dxxxxhd| 亚洲综合清纯丝袜自拍| 国产真实乱子伦精品视频| 欧美黄色免费| 欧美怡红院视频一区二区三区| 欧美成人一区二区在线| 午夜电影亚洲| 最新成人av网站| 国产欧美日韩亚洲| 欧美二区在线播放| 欧美影院在线| 亚洲一区二区三区高清不卡| 欧美承认网站| 久久久噜噜噜久久中文字幕色伊伊 | 狂野欧美一区| 亚洲一二三四久久| 亚洲国产国产亚洲一二三| 国产精品毛片va一区二区三区 | 欧美亚洲一区二区在线观看| 亚洲国产精品成人精品| 久久精品欧洲| 小黄鸭精品aⅴ导航网站入口| 亚洲精品日产精品乱码不卡| 国产在线国偷精品产拍免费yy| 欧美日韩在线播放三区| 欧美www视频在线观看| 欧美伊人久久久久久午夜久久久久 | 亚洲视频一区二区在线观看 | 国产精品素人视频| 国产精品a久久久久| 欧美高清成人| 欧美成人国产一区二区| 久久九九精品| 久久久久国产精品麻豆ai换脸| 亚洲一区二三| 一区二区三区你懂的| 亚洲毛片av| 99国产麻豆精品| 91久久精品一区二区三区| 欧美激情一区二区三区在线| 欧美成年人网站| 欧美国内亚洲| 亚洲国产精品v| 91久久精品国产91久久性色tv| 亚洲国产高清在线| 亚洲黄色在线观看| 亚洲精品资源| aa级大片欧美三级| 亚洲一区二区三区影院| 亚洲综合丁香| 久久狠狠婷婷| 久久久国产精品一区| 久久综合伊人77777蜜臀| 欧美3dxxxxhd| 欧美日韩成人在线播放| 欧美午夜视频| 国产日韩欧美不卡在线| 国外成人免费视频| 久久久伊人欧美| 欧美 日韩 国产一区二区在线视频| 欧美a级片网站| 欧美日韩免费高清| 国产精品一区二区在线观看| 激情一区二区三区| 亚洲精品欧美极品| 亚洲欧美日韩精品在线| 久久亚洲影音av资源网| 亚洲第一精品影视| 亚洲男人天堂2024| 久久在线免费观看| 欧美日韩中字| 国产综合视频在线观看| 日韩视频在线一区二区三区| 亚洲欧美日韩国产| 欧美超级免费视 在线| 一区二区欧美激情| 久久久久综合一区二区三区| 欧美色精品天天在线观看视频| 国产日韩欧美日韩| 亚洲每日更新| 久久综合成人精品亚洲另类欧美| 最新国产成人在线观看| 欧美一区二区网站| 欧美日韩国产不卡在线看| 极品中文字幕一区| 亚洲一区二区在线免费观看视频| 久久久人成影片一区二区三区观看| 宅男噜噜噜66国产日韩在线观看| 亚洲六月丁香色婷婷综合久久| 亚洲欧美国产制服动漫| 免费日本视频一区| 国产精品日韩| 亚洲免费av电影| 久久久五月天|