找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2826|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

個(gè)人總結(jié)Windows應(yīng)用程序編程的基本點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:60076 發(fā)表于 2014-4-21 17:57 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1. WM_CLOSE 、WM_DESTROY、WM_QUIT

我用一段程序解釋:
int WinMain(…………){
…………
MSG msg;
while(GetMessage(&msg,NULL,0,0))//一開始就收到WM_QUIT消息后,立即退出循環(huán)。因?yàn)镚etMessage()在MSDN中說明:當(dāng)收到WM_QUIT消息后,會(huì)返回假,別的消息返回真。那么假即為0,while循環(huán)條件(為真)不滿足,則退出while循環(huán),主函數(shù)返回0。主函數(shù)一旦返回,程序的生命就徹底結(jié)束了
{
  TranslateMessage(&msg);
  DispatchMessage(&msg);
}
return 0;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch(message)
{
  case WM_CLOSE://按下窗口的關(guān)閉按鈕時(shí)系統(tǒng)發(fā)送WM_CLOSE消息
   DestroyWindow(hWnd);//放WM_DESTROY消息到消息隊(duì)列并銷毀窗口,注意,只是銷毀窗口,程序還活著在進(jìn)程里
   break;
  case WM_DESTROY://當(dāng)?shù)玫较惹暗腤M_DESTROY消息時(shí),說明窗口已經(jīng)被銷毀了,接下來由PostQuitMessage(0)發(fā)送WM_QUIT消息
   PostQuitMessage(0);
   break;
  default:
   return DefWindowProc(hWnd,message,wParam,lParam);
}
return 0;
}


2.
VS2005以及以后版本中const char *轉(zhuǎn)換為LPCWSTR的方法
VS2005默認(rèn)是Unicode的,在VC 6.0中編譯成功的項(xiàng)目在VS2005中常會(huì)出現(xiàn)類型錯(cuò)誤。
經(jīng)常出現(xiàn)的錯(cuò)誤是:不能從const char *轉(zhuǎn)換為L(zhǎng)PCWSTR
使用CreateDC("DISPLAY",NULL,NULL,NULL)就會(huì)報(bào)錯(cuò),如果使用強(qiáng)制轉(zhuǎn)換LPCWSTR"DISPLAY",雖然能夠通過,但是編碼會(huì)出錯(cuò)。
可行的辦法是使用 TEXT("DISPLAY")轉(zhuǎn)換,
CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL);
另一種方法是:
項(xiàng)目菜單——項(xiàng)目屬性(最后一個(gè))——配置屬性——常規(guī)——項(xiàng)目默認(rèn)值——字符集,將使用Unicode字符集改為未設(shè)置即可。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表