Time of Update: 2018-12-03
畫線函數有以下七種:1LIneto 畫直線2Polyline和PolylineTo 畫一條由多條首尾相連的直線構成的折線3PolyPolyline 畫多條折線4Arc
Time of Update: 2018-12-03
繪製填充地區:Windows提供了7個函數:函數名稱圖形Rectangle直角矩形Ellipse橢圓RoundRect圓角矩形Chord一個弓形Pie扇形Polygon多邊形PolyPolygon多個多邊形使用畫刷的方法很多,下面羅列一些常見的:方法1HBRUSH
Time of Update: 2018-12-03
Polygon函數和多邊形填充模式:LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam){ static int cxChar,cxCaps,cyChar,cxClient,cyClient; TCHAR szBuffer[10]; HDC hdc; int i; RECT rect; PAINTSTRUCT ps; TEXTMETRIC tm; HPEN hPen; HPEN
Time of Update: 2018-12-03
隨機變數的分布函數的作用挺不好理解,,在網上找了一段: 定義2.1.2
Time of Update: 2018-12-03
下面這個程式,在單擊每個按鈕時,該按鈕會向其父視窗發送WM_COMMAND訊息,這個視窗過程就是我們所熟悉的WindowProc,函數將在客戶區的右側顯示這個訊息的wParam和lParam參數建立子視窗的參數如下類名TEXT("button")視窗文本button[i].szText視窗樣式WS_CHILD|WS_VISIBLE|button[i].iStyleX座標cxCharY座標cyChar*(1+2*i)寬度20*xChar高度7*yChar/4父視窗hwnd子視窗ID(HMUNE)i
Time of Update: 2018-12-03
通知碼進一步給出每條訊息的意思,下面是按鈕的通知碼的可能值。按鈕通知碼標識符值 BN_CLICKED0BN_PAINT1BN_HILITE或BN_PUSHED2BN_DISABLE3BN_DISABLE4BN_DOUBLECLICKED或BN_DBLCLK5BN_SETFOCUS6BN_KILLFOCUS7每個子視窗有一個控制代碼和唯一的ID,知道其中一個就可以找到另一個,如果知道了子視窗控制代碼,可以通過一下函數擷取IDid=GetWindowLong(hwndChlid,GWL_ID);也可
Time of Update: 2018-12-03
跟畫刷,地區一樣,字型是GDI其中的一個對象,可以使用SelectObject來添加到HDC環境中。建立字型有兩種方法1CreateFont BOOL CreateFont( int nHeight, //字型的高度 int nWidth, //字型的寬度
Time of Update: 2018-12-03
建立一個線程的API函數叫做CreateThreadhThread=CreateThread(&security_attributee,dwStackSize,ThreadProc,pParam,dwFlags,&idThread);大部分的Windows程式員都會傾向於使用C的執行階段程式庫函數_beginthread()(在標頭檔process.h中)hThread=_beginthread(ThreadProc,uiStackSize,pParam);下面看一個程式(來自W
Time of Update: 2018-12-03
使用鍵盤模仿滑鼠操作:ShowCursor(TRUE);//顯示座標ShowCursor(FALSE);//隱藏座標GetCursorPos(&pt);//擷取滑鼠座標SetCursorPos(x,y);//設定滑鼠座標下面是一個簡單的程式,利用四個方向鍵控制滑鼠的移動,是滑鼠(2)的升級版程式如下:#include<windows.h>#include<windowsx.h>#define DIVISIONS 5LRESULT CALLBACK
Time of Update: 2018-12-03
建立一個有四個視窗的多線程程式,第一個視窗顯示一個遞增的數列,第二個視窗顯示一個遞增的質數數列,第三個視窗顯示一個遞增的斐波那契數列,第四個視窗顯示一些隨機產生大小不一的圓一個可能的方案是使用WM_TIMER訊息中處理多個更新,但是沒有人圓心根據電腦速度來寫程式;看看多線程的解決方案:程式有點長,思路卻很清晰#include<windows.h>#include<math.h>#include<process.h>typedef struct {HWND
Time of Update: 2018-12-03
上篇寫到了一個案頭上的浮動動畫對話方塊,並且只有一個退出按鍵有效“~”,這篇是一段很短的調用上個程式的代碼,建立一個新的案頭,啟動新進程,按退出後返回原來案頭。運行期間類似於密碼屏保,有什麼用途各自發揮吧。#define DESKTOPNAME TEXT("RunOnce")#define EXEFILEPATH TEXT("RunOnceF.exe")int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE
Time of Update: 2018-12-03
多線程通常被用於需要長時間運行任務的程式,我們把這種任務稱為“大任務”,也就是已耗用時間超過1/10秒的任務,常見的有Word裡的拼字檢查,資料庫中的檔案排序或索引,試算表的計算,列印,複製的繪製。下面這個兩個程式效果是一樣的,主要測試的是:點擊左鍵,該程式進行一百萬次的計算,在電腦過程中,點擊右鍵可以終止,如果不終止,運算完後顯示計算時間代碼如下:#include<windows.h>#include<math.h>#include<process.h>#d
Time of Update: 2018-12-03
學習中遇到一個問題,OnDraw與OnPaint有什麼區別?上網搜尋了一下,又查了一下MSDN和MFC的一些源檔案,現整理如下。OnPaint是WM_PAINT訊息的訊息處理函數,在OnPaint中調用OnDraw,一般來說,使用者自己的繪圖代碼應放在OnDraw中。OnPaint()是CWnd的類成員,負責響應WM_PAINT訊息。OnDraw()是CVIEW的成員函數,沒有響應訊息的功能.當視圖變得無效時(包括大小的改變,移動,被遮蓋等等),Windows發送WM_PAINT訊息。該視圖的O
Time of Update: 2018-12-03
通過可變參數列表實現的一個通用日誌類,類似於printf函數,本來想傳代碼上來,結果總是失敗,只好發在這裡。h檔案:// Log.h: interface for the CLog class.///**///////////////////////////////////////////////////////////////////////#include <windows.h>#include <stdio.h>#include <tchar.h>#if
Time of Update: 2018-12-03
這不是一個噱頭,看代碼,雖然很長,但卻很經典,可以實現鍵盤,滾輪滑動捲軸。下面是標頭檔,是儲存的資料。#define NUMLINES ((int) (sizeof sysmetrics / sizeof sysmetrics [0]))struct{ int iIndex ; TCHAR * szLabel ; TCHAR * szDesc ;}sysmetrics [] ={ SM_CXSCREEN, TEXT
Time of Update: 2018-12-03
看看這個簡單的程式(還需要改進)#include<windows.h>#include<windowsx.h>#define DIVISIONS 5LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam
Time of Update: 2018-12-03
今天測試了一下windows32的PlaySound函數,路徑沒錯,運行也不報錯,但是卻聽不到歌曲的聲音,啟動並執行時候聽到一聲“咚”。加個迴圈的話就發出“咚咚咚”的響聲,求幫忙,其中wav檔案是由mp3檔案修改尾碼而成的,無論是絕對路徑還是相對路徑,都沒有聽到音樂的效果,還有一定,PlaySound()寫的路徑正確與否都不會報錯,求幫忙?(論壇已求助,無人問津)代碼如下:#include<windows.h>#pragma
Time of Update: 2018-12-03
為windows32表單加入捲軸,代碼如下:#include<windows.h>LRESULT CALLBACK WindowProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter);int
Time of Update: 2018-12-03
有個壞訊息,windows程式中不能使用printf函數好訊息是,仍然可以使用sptrinf和系列的其他函數來顯示文本下面觀察printf和sprintf的定義int printf(const char* szFormat,...);int sprintf(char * szBuffer,const char* szFormat,...);在console下,你可以這樣輸出:#include<iostream>#include<string>using
Time of Update: 2018-12-03
Windows定義了8中映射模式,她們在WINGDI.H中定義的標識符如下:映射模式邏輯單位X軸Y軸MM_TEXT像素右下MM_LOENGLISH0.1mm右上MM_HIMETRIC0.01mm右上MM_LOENGLISH0.01in右上MM_HIENGLISH0.001in右上MM_TWIPS1/1440in右上MM_ISOTROPIC任意(x=y)可選可選MM_ANISOTROPIC任意(x!=y)可選可選映射模式視口範圍(x,y)視窗範圍(x,y)MM_LOMETRIC(96,96)(25