锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产福利电影一区二区三区久久久久成人精品综合 ,国产精品一区二区久久不卡,久久只有这里有精品4http://www.shnenglu.com/aaxron/category/16223.html鎶婂墤瑙傛缽嫻?絎戣璇濅漢鐢?/description>zh-cnWed, 14 Mar 2012 10:13:02 GMTWed, 14 Mar 2012 10:13:02 GMT60WTL涓彧浣跨敤ATL::CStringhttp://www.shnenglu.com/aaxron/archive/2012/03/13/167786.html澶╀笅澶╀笅Tue, 13 Mar 2012 08:57:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/03/13/167786.htmlhttp://www.shnenglu.com/aaxron/comments/167786.htmlhttp://www.shnenglu.com/aaxron/archive/2012/03/13/167786.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/167786.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/167786.html鍦╯tdafx.h涓?br />//鏀懼湪鏈鍓嶉潰
#define _WTL_NO_CSTRING
#include <atlstr.h> //榪欎釜蹇呴』鏀懼湪 #include <atlapp.h>


鍥犱負ATL::CString鏄疢FC涓嶢TL鍏叡綾?



澶╀笅 2012-03-13 16:57 鍙戣〃璇勮
]]>
WTL涓獥鍙g被鐨勪竴浜涚壒孌婂鐞?/title><link>http://www.shnenglu.com/aaxron/archive/2012/02/21/166112.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Tue, 21 Feb 2012 02:26:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/02/21/166112.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/166112.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/02/21/166112.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/166112.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/166112.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">WTL涓獥鍙g被鐨勪竴浜涚壒孌婂鐞?/span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    <br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> CWndClassInfo<br />{<br />    WNDCLASSEX m_wc;<br />    LPCSTR m_lpszOrigName;<br />    WNDPROC pWndProc;<br />    LPCSTR m_lpszCursorID;<br />    BOOL m_bSystemCursor;<br />    ATOM m_atom;<br />    CHAR m_szAutoName[</span><span style="color: #000000; ">5</span><span style="color: #000000; ">+</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">*</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">CHAR_BIT];<br />};<br />榪欎釜緇撴瀯涓湁涓や釜鏈閲嶈鐨勬垚鍛橈細m_wc鍜宮_atom銆俶_wc鏄獥鍙g被鐨勭粨鏋勶紝鎯寵鎵嬪姩娉ㄥ唽綾繪椂鎵浣跨敤鐨勭粨鏋勩俶_atom鐢ㄤ簬紜畾榪欎釜綾繪槸鍚﹀凡緇忔敞鍐岋紝鍦ㄨ繕娌℃湁娉ㄥ唽綾諱箣鍓嶏紝淇敼m_wc榪樻槸鏈夋晥鏋滅殑銆?br /><br />typedef </span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> {<br />    UINT cbSize;<br />    UINT style;<br />    WNDPROC lpfnWndProc;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> cbClsExtra;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> cbWndExtra;<br />    HINSTANCE hInstance;<br />    HICON hIcon;<br />    HCURSOR hCursor;<br />    HBRUSH hbrBackground;<br />    LPCTSTR lpszMenuName;<br />    LPCTSTR lpszClassName;<br />    HICON hIconSm;<br />} WNDCLASSEX;<br /><br />ATL::CWndClassInfo wc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> <br />{ <br />    { </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(WNDCLASSEX), style, StartWindowProc, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, NULL, NULL, NULL, (HBRUSH)(bkgnd </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">), NULL, WndClassName, NULL }, </span><span style="color: #008000; ">//</span><span style="color: #008000; ">WNDCLASSEX</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    NULL,        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">m_lpszOrigName</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    NULL,         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">pWndProc</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    IDC_ARROW,    </span><span style="color: #008000; ">//</span><span style="color: #008000; ">m_lpszCursorID</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    TRUE,         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">m_bSystemCursor</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    </span><span style="color: #000000; ">0</span><span style="color: #000000; ">,             </span><span style="color: #008000; ">//</span><span style="color: #008000; ">m_atom</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">    _T(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">)         </span><span style="color: #008000; ">//</span><span style="color: #008000; ">m_szAutoName</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">}; <br /><br /><br /><br /><br /><br /><br /></span><span style="color: #808080; ">///////////////////////////////////////////////////////////////////////////</span><span style="color: #008000; ">//</span><span style="color: #808080; "><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; "> CWndClassInfo - Manages Windows class information</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> DECLARE_WND_CLASS(WndClassName) \</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo</span><span style="color: #000000; ">&</span><span style="color: #000000; "> GetWndClassInfo() \<br />{ \<br />    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo wc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> \<br />    { \<br />        { </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(WNDCLASSEX), CS_HREDRAW </span><span style="color: #000000; ">|</span><span style="color: #000000; "> CS_VREDRAW </span><span style="color: #000000; ">|</span><span style="color: #000000; "> CS_DBLCLKS, StartWindowProc, \<br />          </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, NULL, NULL, NULL, (HBRUSH)(COLOR_WINDOW </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">), NULL, WndClassName, NULL }, \<br />        NULL, NULL, IDC_ARROW, TRUE, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, _T(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">) \<br />    }; \<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> wc; \<br />}<br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> DECLARE_WND_CLASS_EX(WndClassName, style, bkgnd) \</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo</span><span style="color: #000000; ">&</span><span style="color: #000000; "> GetWndClassInfo() \<br />{ \<br />    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo wc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> \<br />    { \<br />        { </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(WNDCLASSEX), style, StartWindowProc, \<br />          </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, NULL, NULL, NULL, (HBRUSH)(bkgnd </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">), NULL, WndClassName, NULL }, \<br />        NULL, NULL, IDC_ARROW, TRUE, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, _T(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">) \<br />    }; \<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> wc; \<br />}<br /><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> DECLARE_WND_SUPERCLASS(WndClassName, OrigWndClassName) \</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo</span><span style="color: #000000; ">&</span><span style="color: #000000; "> GetWndClassInfo() \<br />{ \<br />    </span><span style="color: #0000FF; ">static</span><span style="color: #000000; "> ATL::CWndClassInfo wc </span><span style="color: #000000; ">=</span><span style="color: #000000; "> \<br />    { \<br />        { </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(WNDCLASSEX), </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, StartWindowProc, \<br />          </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, NULL, NULL, NULL, NULL, NULL, WndClassName, NULL }, \<br />        OrigWndClassName, NULL, NULL, TRUE, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, _T(</span><span style="color: #000000; ">""</span><span style="color: #000000; ">) \<br />    }; \<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> wc; \<br />}</span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/166112.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-02-21 10:26 <a href="http://www.shnenglu.com/aaxron/archive/2012/02/21/166112.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綆鍗曠殑CInfoTip綾?/title><link>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html</link><dc:creator>澶╀笅</dc:creator><author>澶╀笅</author><pubDate>Sat, 18 Feb 2012 09:36:00 GMT</pubDate><guid>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html</guid><wfw:comment>http://www.shnenglu.com/aaxron/comments/165921.html</wfw:comment><comments>http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/aaxron/comments/commentRss/165921.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/aaxron/services/trackbacks/165921.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">file:InfoTip.h</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">#pragma once<br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">atlwin.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> CInfoTip : <br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; "> ATL::CWindowImpl</span><span style="color: #000000; "><</span><span style="color: #000000; ">CInfoTip</span><span style="color: #000000; ">></span><span style="color: #000000; "> <br />{ <br /></span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">: <br />    DECLARE_WND_CLASS_EX(NULL, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, COLOR_3DFACE) <br /><br />    LPCTSTR m_lpstrInfo; <br /><br />    </span><span style="color: #0000FF; ">enum</span><span style="color: #000000; "> { m_nToolTipID </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1313</span><span style="color: #000000; "> }; <br />    WTL::CToolTipCtrl m_tooltip; <br /><br /><br />    CInfoTip():m_lpstrInfo(NULL) <br />    { } <br /><br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> Init(HWND hWnd, LPCTSTR lpstrName) <br />    { <br />        ATLASSERT(::IsWindow(hWnd)); <br />        SubclassWindow(hWnd); <br /><br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Set tooltip </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        m_tooltip.Create(m_hWnd); <br />        ATLASSERT(m_tooltip.IsWindow()); <br />        RECT rect; <br />        GetClientRect(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">rect); <br />        CToolInfo ti(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">, m_hWnd, m_nToolTipID, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">rect, NULL); <br />        m_tooltip.AddTool(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">ti); <br /><br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> set text </span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        m_lpstrInfo </span><span style="color: #000000; ">=</span><span style="color: #000000; "> lpstrName; <br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m_lpstrInfo </span><span style="color: #000000; ">==</span><span style="color: #000000; "> NULL) <br />            </span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">; <br /><br />        m_tooltip.UpdateTipText(m_lpstrInfo, m_hWnd, m_nToolTipID); <br />        m_tooltip.Activate(</span><span style="color: #0000FF; ">true</span><span style="color: #000000; ">); <br />    } <br /><br />    BEGIN_MSG_MAP(CInfoTip) <br />        MESSAGE_RANGE_HANDLER(WM_MOUSEFIRST, WM_MOUSELAST,OnMouseMessage) <br />    END_MSG_MAP() <br /><br />    LRESULT OnMouseMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL</span><span style="color: #000000; ">&</span><span style="color: #000000; "> bHandled) <br />    { <br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(m_tooltip.IsWindow()) <br />        { <br />            MSG msg </span><span style="color: #000000; ">=</span><span style="color: #000000; "> { m_hWnd, uMsg, wParam, lParam }; <br />            m_tooltip.RelayEvent(</span><span style="color: #000000; ">&</span><span style="color: #000000; ">msg); <br />        } <br />        bHandled </span><span style="color: #000000; ">=</span><span style="color: #000000; "> FALSE; <br />        </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; <br />    } <br />}; <br /><br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">浣跨敤:</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />    CInfoTip m_InfoTipEdit;<br />    m_InfoTipEdit.Init(   GetDlgItem(   IDOK   ),   </span><span style="color: #000000; ">"</span><span style="color: #000000; ">杈撳叆瀵嗙爜 </span><span style="color: #000000; ">"</span><span style="color: #000000; ">     ); </span></div><img src ="http://www.shnenglu.com/aaxron/aggbug/165921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/aaxron/" target="_blank">澶╀笅</a> 2012-02-18 17:36 <a href="http://www.shnenglu.com/aaxron/archive/2012/02/18/165921.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>How to move a dialog which does not have a caption(闈炴爣棰樻爮縐誨姩瀵硅瘽妗?http://www.shnenglu.com/aaxron/archive/2012/02/16/165724.html澶╀笅澶╀笅Thu, 16 Feb 2012 02:24:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/16/165724.htmlhttp://www.shnenglu.com/aaxron/comments/165724.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/16/165724.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165724.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165724.html
How to move a dialog which does not have a caption
Introduction
This article is aimed at beginners, and presents two ways to move a dialog which does not have a caption by dragging its client area.
1. WM_SYSCOMMAND message
Sending the WM_SYSCOMMAND message starts the move operation. Add the following code to handle the mouse down event:
BEGIN_MSG_MAP(CMainDlg)
    
//...
    MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
END_MSG_MAP()

LRESULT OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
{
    SendMessage(WM_SYSCOMMAND, SC_MOVE
|HTCAPTION);
    
return 0;
}


2. WM_NCHITTEST message
The idea is to handle the WM_NCHITTEST message to return HTCAPTION instead of HTCLIENT when the mouse is in the client area, to trick Windows to start moving the dialog.
BEGIN_MSG_MAP(CMainDlg)
    
//...
    MESSAGE_HANDLER(WM_NCHITTEST, OnNcHitTest)
END_MSG_MAP()

LRESULT OnNcHitTest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
{
    
if (::DefWindowProc(m_hWnd, uMsg, wParam, lParam) == 
        HTCLIENT 
&& ::GetAsyncKeyState(MK_LBUTTON) < 0)
      
return HTCAPTION;

    
return 0;
}

//For MFC
//Devil for ever supplied the MFC solution that is shown below (thanks!). The idea is the same - to handle the WM_NCHITTEST message.
UINT OnNcHitTest(CPoint point)
{
    UINT nHit 
= CDialog::OnNcHitTest(point);
    
return (nHit == HTCLIENT ? HTCAPTION : nHit);
}


澶╀笅 2012-02-16 10:24 鍙戣〃璇勮
]]>
WTL::CFileDialoghttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.html澶╀笅澶╀笅Mon, 13 Feb 2012 03:09:00 GMThttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.htmlhttp://www.shnenglu.com/aaxron/comments/165467.htmlhttp://www.shnenglu.com/aaxron/archive/2012/02/13/165467.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/165467.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/165467.html//MFC
CFileDialog dlg(TRUE,NULL,NULL,NULL,"鏁版嵁鏂囨。(*.dat)|*.dat|妯℃澘鏂囦歡(*.fpmb)|*.fpmb||"); 

//WTL  
WTL::CFileDialog dlg(TRUE,NULL,NULL,NULL,"鏁版嵁鏂囨。(*.dat)\0*.dat\0妯℃澘鏂囦歡(*.fpmb)\0*.fpmb\0\0");

鍏朵腑鏂囦歡榪囨護鍣?MFC浠?/span>|鍒嗛殧,鑰學TL浠0鍒嗛殧.

WTL::CFileDialog dlg(TRUE,0,0,OFN_EXPLORER,_T("Pictures (*.bmp;*.jpg;*.png)\0*.bmp;*.jpg;*.png\0All files (*.*)\0 *.*\0"),*this);




澶╀笅 2012-02-13 11:09 鍙戣〃璇勮
]]>
wtl瀛︿範絎旇(2),WTL(ATL)涓殑鍏ㄥ眬鍙橀噺http://www.shnenglu.com/aaxron/archive/2011/12/05/161488.html澶╀笅澶╀笅Mon, 05 Dec 2011 04:32:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/12/05/161488.htmlhttp://www.shnenglu.com/aaxron/comments/161488.htmlhttp://www.shnenglu.com/aaxron/archive/2011/12/05/161488.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/161488.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/161488.html//WTL(ATL)涓殑鍏ㄥ眬鍙橀噺
//鏂囦歡:externs.cpp
CAtlAllocator g_Allocator;
static const bool g_bInitialized = Init();


//鏂囦歡:atlbase.cpp
ATL::CAtlBaseModule  _AtlBaseModule;
ATL::CAtlWinModule   _AtlWinModule;
ATL::CAtlComModule  _AtlComModule;

//鏂囦歡:atlapp.h,DEBUG鐗堟湰涓墠鏈?/span>
WTL::ATL::CTraceCategory atlTraceUI(_T("atlTraceUI"));

//浣犺嚜宸辯殑搴旂敤紼嬪簭鍏ュ彛鏂囦歡,鏂囦歡涓寘鎷琖inMain()鍑芥暟
CAppModule _Module;



//鏂囦歡:atlbase.h
extern "C" IMAGE_DOS_HEADER __ImageBase;
extern CAtlComModule _AtlComModule;
extern CAtlWinModule _AtlWinModule;
__declspec(selectany) CComModule
* _pModule = NULL;
//鍏抽敭鐨勬瀯閫犲嚱鏁?璇鋒敞鎰忔垚鍛樺彉閲?m_hInst鍙妋_hInstResource,鍙橀噺:__ImageBase
CAtlBaseModule::CAtlBaseModule() throw()
{
    cbSize 
= sizeof(_ATL_BASE_MODULE);
    m_hInst 
= m_hInstResource = reinterpret_cast<HINSTANCE>(&__ImageBase);
    dwAtlBuildVer 
= _ATL_VER;
    pguidVer 
= &GUID_ATLVer70;
    
if (FAILED(m_csResource.Init()))
    {
        ATLTRACE(atlTraceGeneral, 
0, _T("ERROR : Unable to initialize critical section in CAtlBaseModule\n"));
        ATLASSERT(
0);
        CAtlBaseModule::m_bInitFailed 
= true;
    }
}

//鏂囦歡:crt0.c
__declspec(noinline) int __tmainCRTStartup(void)
{
#ifdef _WINMAIN_
    lpszCommandLine 
= _twincmdln();
    mainret 
= _tWinMain( (HINSTANCE)&__ImageBase, NULL,lpszCommandLine,StartupInfo.dwFlags & STARTF_USESHOWWINDOW? StartupInfo.wShowWindow : SW_SHOWDEFAULT );
#else
    _tinitenv 
= _tenviron;
    mainret 
= _tmain(__argc, _targv, _tenviron);
#endif
}


澶╀笅 2011-12-05 12:32 鍙戣〃璇勮
]]>
wtl瀛︿範絎旇(1),紿楀彛綾葷殑娉ㄥ唽http://www.shnenglu.com/aaxron/archive/2011/12/03/161348.html澶╀笅澶╀笅Sat, 03 Dec 2011 03:54:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/12/03/161348.htmlhttp://www.shnenglu.com/aaxron/comments/161348.htmlhttp://www.shnenglu.com/aaxron/archive/2011/12/03/161348.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/161348.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/161348.html 

浠諱綍闈炲璇濇紿楀彛閮芥槸鏉ヨ嚜CWindowImpl媧劇敓
瀵硅瘽妗嗙獥鍙i兘鏄潵鑷狢DialogImpl媧劇敓    
瀹氫箟涓涓獥鍙g殑瀹炵幇
浣犵殑鏂扮獥鍙g被闇瑕佸寘鍚笁浠朵簨鎯咃細
涓銆佷竴涓獥鍙g被鐨勫畾涔?濡?
    榛樿鐢辯埗綾籆WindowImpl鐨凞ECLARE_WND_CLASS(NULL) 瀹屾垚紿楀彛WNDCLASS緇撴瀯浣撶殑瀹氫箟.
    涔熷彲浠ヨ嚜宸遍氳繃DECLARE_WND_CLASS(_T(
"My Window Class")) 瀹屾垚紿楀彛WNDCLASS緇撴瀯浣撶殑瀹氫箟.
    
浜屻佹坊鍔犳秷鎭槧灝勯摼
    鍏朵腑紲栧厛綾籆WindowImplRoot緇ф壙鑷狢MessageMap
涓夈佺獥鍙d嬌鐢ㄧ殑榛樿紿楀彛綾誨瀷錛岀О涓虹О涓簑indow traits
棰勫畾涔夌殑window traits:
typedef CWinTraits
<WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0> CControlWinTraits;
typedef CWinTraits
<WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_APPWINDOW | WS_EX_WINDOWEDGE> CFrameWinTraits;
typedef CWinTraits
<WS_OVERLAPPEDWINDOW | WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_MDICHILD>    CMDIChildWinTraits;
typedef CWinTraits
<00> CNullTraits;


綾葷戶鎵垮叧緋?
template 
<class T, class TBase /* = CWindow */class TWinTraits /* = CControlWinTraits */>
class ATL_NO_VTABLE CWindowImpl : public CWindowImplBaseT< TBase, TWinTraits >
{
};

template 
<class TBase = CWindow, class TWinTraits = CControlWinTraits>
class ATL_NO_VTABLE CWindowImplBaseT : public CWindowImplRoot< TBase >
{
public:
    WNDPROC m_pfnSuperWindowProc;

    CWindowImplBaseT() : m_pfnSuperWindowProc(::DefWindowProc)
    {}    
};

template 
<class TBase /* = CWindow */>
class ATL_NO_VTABLE CWindowImplRoot : public TBase, public CMessageMap 
{
};


//紿楀彛綾葷殑娉ㄥ唽,瀹?DECLARE_WND_CLASS
#define DECLARE_WND_CLASS(WndClassName) \
static ATL::CWndClassInfo& GetWndClassInfo() \
{ \
    
static ATL::CWndClassInfo wc = \
    { \
        { 
sizeof(WNDCLASSEX), CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS, StartWindowProc, \
          
00, NULL, NULL, NULL, (HBRUSH)(COLOR_WINDOW + 1), NULL, WndClassName, NULL }, \
        NULL, NULL, IDC_ARROW, TRUE, 
0, _T("") \
    }; \
    
return wc; \
}




鍏ㄥ眬鍙橀噺:_AtlWinModule,_AtlBaseModule
extern CAtlWinModule _AtlWinModule;
extern CAtlBaseModule _AtlBaseModule;

//紿楀彛綾籛NDCLASS緇撴瀯浣撶殑濉厖
struct _ATL_WNDCLASSINFOA
{
    WNDCLASSEXA m_wc;
    LPCSTR m_lpszOrigName;
    WNDPROC pWndProc;
    LPCSTR m_lpszCursorID;
    BOOL m_bSystemCursor;
    ATOM m_atom;
    CHAR m_szAutoName[
5+sizeof(void*)*CHAR_BIT];
    ATOM Register(WNDPROC
* p)
    {
        
return AtlWinModuleRegisterWndClassInfoA(&_AtlWinModule, &_AtlBaseModule, this, p);
    }
};    
typedef _ATL_WNDCLASSINFOA CWndClassInfoA;

紿楀彛娉ㄥ唽榪囩▼
CMainFrame wndMain;
CFrameWindowImpl::Create()
ATOM atom 
= T::GetWndClassInfo().Register(&m_pfnSuperWindowProc);
//妯℃澘灞曞紑鍚?br />//ATOM atom = CMainFrame::GetWndClassInfo().Register(&m_pfnSuperWindowProc);
//榪欓噷鐨凾灝辨槸綾?nbsp;CMainFrame
//鐒跺悗閫氳繃濡備笅浠g爜,榪斿洖涓涓潤鎬佸彉閲?nbsp;static WTL::CFrameWndClassInfo wc;

CFrameWndClassInfo::Register(
&m_pfnSuperWindowProc);
//CWindowImplBaseT::m_pfnSuperWindowProc
//CWindowImplBaseT() : m_pfnSuperWindowProc(::DefWindowProc){}





 

#include <atlbase.h>
#include 
<atlwin.h>


//鍙夌殑娑堟伅澶勭悊綾?/span>
template <typename T>
class CPaintBkgnd : public CMessageMap
{
public:
    BEGIN_MSG_MAP(CPaintBkgnd)
        MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
    END_MSG_MAP()

    LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
    {
        T
*   pT = static_cast<T*>(this);
        HDC  dc 
= (HDC)wParam;
        RECT rcClient;
        pT
->GetClientRect ( &rcClient );
        ::FillRect(dc, 
&rcClient, CreateSolidBrush(RGB(0xff,0x66,0x99)) );
        
return 1
    }
};

class CMyWindow : 
    
public CWindowImpl<CMyWindow, CWindow,CFrameWinTraits>,
    
public CPaintBkgnd<CMyWindow>
                    
{
public:
    
//DECLARE_WND_CLASS(_T("abc"))
    BEGIN_MSG_MAP(CMyWindow)
        MESSAGE_HANDLER(WM_CREATE, OnCreate)
        MESSAGE_HANDLER(WM_CLOSE, OnClose)
        
//CHAIN_MSG_MAP(CPaintBkgnd)
        MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
    END_MSG_MAP()

    LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
    {
        ATLTRACE(
"WM_CREATE==0x0001,MSG ID:0x%u\n",uMsg);
        
return 0;
    }
    LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
    {
        DestroyWindow();
        PostQuitMessage(
0);
        
return 0;
    }
    LRESULT OnEraseBkgnd(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL
& bHandled)
    {
        HDC  dc 
= (HDC) wParam;
        RECT rcClient;
        
this->GetClientRect ( &rcClient );
        ::FillRect(dc, 
&rcClient, CreateSolidBrush(RGB(0xff,0x66,0x00)) );
        
return 1
    }
};


int _tWinMain(HINSTANCE hInstance, HINSTANCE /*hPrevInstance*/, LPTSTR lpstrCmdLine, int nCmdShow)
{
    CMyWindow wndMain;
    HWND hWnd 
= wndMain.Create(NULL,NULL,"good luck Aaron");
    
if (hWnd==NULL)
    {
        ::MessageBox(NULL,
"鍒涘緩紿楀彛澶辮觸","鎻愮ず",MB_OK);
    }
    wndMain.ShowWindow(nCmdShow);
    wndMain.UpdateWindow();

    MSG msg;
    
while ( GetMessage ( &msg, NULL, 00 ) > 0 )
    {
        TranslateMessage ( 
&msg );
        DispatchMessage ( 
&msg );
    }
    
return 0;
}

 



澶╀笅 2011-12-03 11:54 鍙戣〃璇勮
]]>
WTL璧勬簮http://www.shnenglu.com/aaxron/archive/2011/08/19/153845.html澶╀笅澶╀笅Fri, 19 Aug 2011 05:36:00 GMThttp://www.shnenglu.com/aaxron/archive/2011/08/19/153845.htmlhttp://www.shnenglu.com/aaxron/comments/153845.htmlhttp://www.shnenglu.com/aaxron/archive/2011/08/19/153845.html#Feedback0http://www.shnenglu.com/aaxron/comments/commentRss/153845.htmlhttp://www.shnenglu.com/aaxron/services/trackbacks/153845.htmlWTL
http://wtl.sourceforge.net/

VISUALFC
http://code.google.com/p/visualfc/downloads/list


WTLHELPER
Sourceforge 涓婄殑欏圭洰宸茬粡寤虹珛璧鋒潵浜? 緗戝潃鏄?   
http://sourceforge.net/projects/wtlhelper9


http://www.codeproject.com/KB/macros/wtlhelper.aspx

澶╀笅 2011-08-19 13:36 鍙戣〃璇勮
]]>
99久久人妻无码精品系列| 精品久久久久久无码不卡| 久久精品国产久精国产思思| 久久综合给合久久国产免费| 久久精品国产亚洲AV香蕉| 久久精品国产99国产精偷| 国产精品无码久久综合网| 怡红院日本一道日本久久 | 亚洲中文字幕伊人久久无码| 久久久久亚洲AV无码专区首JN| 伊人久久大香线蕉无码麻豆| 无码人妻久久一区二区三区免费丨| 性高湖久久久久久久久| 日本久久久精品中文字幕| 久久亚洲精品无码aⅴ大香| 国产产无码乱码精品久久鸭| 久久影视综合亚洲| 99久久成人国产精品免费| 一个色综合久久| 国产精品欧美久久久久无广告| 久久精品国产2020| 国产精品午夜久久| 国产91色综合久久免费| 国产精品久久婷婷六月丁香| 人人狠狠综合久久亚洲婷婷| 精品久久久久中文字幕日本| 久久国产亚洲精品| 久久婷婷五月综合色99啪ak| 欧美综合天天夜夜久久| 日韩人妻无码一区二区三区久久 | 99久久精品免费看国产一区二区三区 | 久久夜色精品国产亚洲| 麻豆成人久久精品二区三区免费| 久久久久久久亚洲精品| 亚洲国产精品久久久久| 青青草原综合久久大伊人精品| 久久男人Av资源网站无码软件| 99久久夜色精品国产网站 | 久久丝袜精品中文字幕| 久久精品无码免费不卡| 国产精品免费久久久久影院|