一、傳送訊息的函式
例項**:
#include#include二、windows各種訊息//自定義訊息
#define wm_aaa wm_user+1hwnd hwnd;
hwnd hwnd2;
//自定義的視窗過程
lresult callback mywindowproc(hwnd hwnd, uint msg,
wparam wparam, lparam lparam)
return
defwindowproc(hwnd, msg, wparam, lparam);
}int
winapi winmain(hinstance hinstance, hinstance hprevinstance,
lpstr lpcmdline,
intnshowcmd)
if (msg.message ==wm_aaa)
translatemessage(&msg);//
翻譯訊息
dispatchmessage(&msg);//
分發訊息到視窗過程
}}
三、響應視窗建立和刪除
**例項
#include#include四、wm_paint訊息//自定義的視窗過程
lresult callback mywindowproc(hwnd hwnd, uint msg,
wparam wparam, lparam lparam)
///////////////////////////
銷毀視窗
//////////////////////////////
/ case
wm_close:
sprintf(str,
"wm_close訊息:%p!\n
", hwnd);
outputdebugstringa(str);
destroywindow(hwnd);
//銷毀視窗,發出wm_destroy訊息
return0;
case
wm_destroy:
sprintf(str,
"wm_destroy訊息:%p!\n
", hwnd);
outputdebugstringa(str);
postquitmessage(
0);//
可以使getmessage返回0
return0;
case
wm_ncdestroy:
sprintf(str,
"wm_ncdestroy訊息:%p!\n
", hwnd);
outputdebugstringa(str);
return0;
}return
defwindowproc(hwnd, msg, wparam, lparam);
}int
winapi winmain(hinstance hinstance, hinstance hprevinstance,
lpstr lpcmdline,
intnshowcmd)
}
1)以下操作會觸發wm_paint訊息
注:
**例項:
#include#include五、wm_erasebkgnd訊息//自定義的視窗過程
lresult callback mywindowproc(hwnd hwnd, uint msg,
wparam wparam, lparam lparam)
case
wm_paint:
case
wm_lbuttondown:
//invalidaterect(hwnd, null, true);
//新增更新區域
//updatewindow(hwnd);
//更新區域不為空,則馬上發出wm_paint訊息
//不管視窗的任何部分是否無效,都會導致wm_paint訊息被發布到視窗。
redrawwindow(hwnd, null, null, rdw_internalpaint);
break
;
case wm_ncpaint://
自定義繪製非客戶區
hdc hdc =getwindowdc(hwnd);
rect r;
r.left = 0
; r.top = 0
; r.right = 300
; r.bottom = 30
; hbrush brh = createsolidbrush(rgb(255, 0, 0
)); fillrect(hdc, &r, brh);
setbkmode(hdc, transparent);
textouta(hdc,
5, 5, "
自定義視窗標題
", 14);//
最後乙個引數為字串長度
deleteobject(brh);
releasedc(hwnd, hdc);
return
true
;
//break;
}
return
defwindowproc(hwnd, msg, wparam, lparam);
}
intwinapi winmain(hinstance hinstance, hinstance hprevinstance,
lpstr lpcmdline,
intnshowcmd)
}
**例項:見上面wm_paint的**例項。
六、更新視窗的函式
**例項:見上面wm_paint的**例項。
七、wm_ncpaint訊息
**例項:見上面wm_paint的**例項。
八、視窗滑鼠鍵盤訊息
**例項:
#include#include注:wnd.style = cs_hredraw | cs_dblclks;//視窗類、樣式,只有新增cs_dblclks才能響應雙擊訊息//自定義的視窗過程
lresult callback mywindowproc(hwnd hwnd, uint msg,
wparam wparam, lparam lparam)
return
defwindowproc(hwnd, msg, wparam, lparam);
}int
winapi winmain(hinstance hinstance, hinstance hprevinstance,
lpstr lpcmdline,
intnshowcmd)
}
WIN32 API程式設計之 透明static
createwindow可以直接建立乙個staitc,但這個static是不透明的,如果我們把視窗背景設定為gray brush,則static會很明顯的有乙個白色背景,一般來說這樣肯定很難看。可以先給 static設定乙個ws ex transparent的擴充套件屬性,然後在訊息 函式中攔截 w...
VC 串列埠程式設計之基於Win32 API
1 api描述 在win32 api中,串列埠使用檔案方式進行訪問,其操作的api基本上與檔案操作的api一致。開啟串列埠 win32 中用於開啟串列埠的api 函式為createfile,其原型為 例如,以下程式用於以同步讀寫方式開啟串列埠com1 handle hcom dword dwerro...
學習win32API 訊息處理
訊息佇列與訊息迴圈 摘自win32api參考 var msg tmsg begin while processmessage msg do end 程式通過簡單地建立乙個迴圈來實現自己的訊息迴圈,通過呼叫下邊四個函式實現.以下參考delphi幫助,自己翻譯的,理解也許有錯誤,不過這正是我需要的,等回...