|
¸ð´ú ´ÙÀ̾ó·Î±×¿¡¼µµ ¸ð´Þ¸®½º ´ÙÀ̾ó·Î±×¿¡¼µµ pop-up
menu ¾ÆÀÌÅÛÀÇ UI°»½Å Çڵ鷯¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¡¡¾Æ·¡¿¡ ³ªÅ¸³»´Â °ÍÀº Áö±Ý±îÁö ÀÛ¼ºÇÑ ´ÙÀ̾ó·Î±×¿¡ pop-up menu ¾ÆÀÌÅÛÀÇ UI°»½Å Çڵ鷯¸¦ Ãß°¡ÇÏ´Â ¼ø¼ÀÔ´Ï´Ù. ¿©±â¿¡¼´Â ´ÙÀ̾ó·Î±×¿¡ µµ±¸¸ðÀ½À» Ãß°¡ÇØ [Ç×»ó ¾Õ¿¡ Ç¥½Ã]¶ó°í ÇÏ´Â ¸Þ´º ¾ÆÀÌÅÛÀ» ÀÛ¼ºÇØ ¸Þ´º ¾ÆÀÌÅÛÀÌ ¼±ÅÃµÉ ¶§¸¶´Ù UI °»½Å
Çڵ鷯¿¡ ÀÇÇØ ¸Þ´º ¾ÆÀÌÅÛÀÇ Ã¼Å© ¸¶Å©ÀÇ ºÎ°¡¿Í ¼Ò°Å¸¦ ¹Ýº¹Çϵµ·Ï ÇÕ´Ï´Ù. µ¡ºÙ¿© ¿©±â °¡¸®Å°´Â ¼ø¼´Â ¸ð´ú ´ÙÀ̾ó·Î±× , ¸ð´Þ¸®½º ´ÙÀ̾ó·Î±×ÀÇ ¾î´À ÂÊ¿¡µµ µé¾î ¸ÂÀ¾´Ï´Ù.

¡¡¿ì¼±Àº ÇÁ·ÎÁ§Æ®¿¡ IDR_MENU_MAIN¶ó°í ÇÏ´ÂIDÀÇ ¸Þ´º ÀÚ¿øÀ» Ãß°¡ÇØ [Ç×»ó ¾Õ¿¡ Ç¥½Ã]¶ó°í ÇÏ´Â ¸Þ´º ¾ÆÀÌÅÛÀ» ÀÛ¼ºÇØ °Å±â¿¡ID_MENUITEM_TOPMOST¶ó°í ÇÏ´ÂID¸¦ ¼³Á¤ÇÕ´Ï´Ù. ´ÙÀ½¿¡ ´ÙÀ̾ó·Î±×ÀÇ ÇÁ·ÎÆÛƼ¸¦ ¿¾î ¸Þ´º·Î¼IDR_MENU_MAIN¸¦ ÁöÁ¤ÇÕ´Ï´Ù. À̰ÍÀ¸·Î ´ÙÀ̾ó·Î±×¿¡ ¸Þ´º°¡ Ãß°¡µË´Ï´Ù.

¡¡´ÙÀ½¿¡ UI°»½Å Çڵ鷯¸¦ »ç¿ëÇϱâ À§Çؼ´ÂCUpdateUIŬ·¡½º°¡ ÇÊ¿äÇÏ°Ô µÇ±â ¶§¹®¿¡ atlframe.hÇì´õ¸¦ ÀÎŬ·çµå ÇÕ´Ï´Ù.
|
// stdafx.h³»
#include <atlbase.h>
#include <atlapp.h>
extern CAppModule _Module;
#include <atlwin.h>
#include <atlcrack.h>
#include <atlmisc.h>
#include <atlframe.h>
|
¡¡´ÙÀ½¿¡ CUpdateUI Ŭ·¡½º¸¦ ´ÙÀ̾ó·Î±× Ŭ·¡½ºÀÎ CMainDlgŬ·¡½ºÀÇ base class·Î ÇÕ´Ï´Ù.
|
class CMainDlg : public CDialogImpl<CMainDlg>,
public CUpdateUI<CMainDlg>
|
¡¡CMainDlg Ŭ·¡½º ³»¿¡¼´Â UI°»½Å Çڵ鷯 ¸Ê¿¡ID_MENUITEM_TOPMOST ¿ë¹«ÀÇ ¿£Æ®¸®¸¦ Ãß°¡ÇÕ´Ï´Ù. ÇÑÃþ ´õ ¸Þ¼¼Áö ¸Ê¿¡´ÂID_MENUITEM_TOPMOST
¿ë¹«ÀÇ Ä¿¸àµå Çڵ鷯 ¿£Æ®¸®¿Í CUpdateUIŬ·¡½º¿¡ÀÇ
üÀÎÀ» Ãß°¡ÇÕ´Ï´Ù.
|
class CMainDlg : public CDialogImpl<CMainDlg>,
public CUpdateUI<CMainDlg>
{
public:
enum { IDD =
IDD_DIALOG1 };
// UI°»½Å Çڵ鷯 ¸Ê
BEGIN_UPDATE_UI_MAP(CMainDlg)
UPDATE_ELEMENT(ID_MENUITEM_TOPMOST, UPDUI_MENUPOPUP)
END_UPDATE_UI_MAP()
// ¸Þ¼¼Áö ¸Ê
BEGIN_MSG_MAP_EX(CMainDlg)
MSG_WM_INITDIALOG(OnInitDialog)
COMMAND_ID_HANDLER_EX(ID_MENUITEM_TOPMOST, OnMenuTopmost) // [Ç×»ó ¾Õ¿¡ Ç¥½Ã]
...
...
CHAIN_MSG_MAP(CUpdateUI<CMainDlg>)
//
CUpdateUIŬ·¡½º¿¡ÀÇ Ã¼ÀÎ
END_MSG_MAP()
...
|
¡¡´ÙÀ½¿¡ CMainDlg Ŭ·¡½º¿¡ID_MENUITEM_TOPMOSTÀÇ Ä¿¸àµå ¸Þ¼¼Áö Çڵ鷯¸¦ Ãß°¡ÇÕ´Ï´Ù.
|
class CMainDlg : public CDialogImpl<CMainDlg>,
public CUpdateUI<CMainDlg>
{
...
...
void OnMenuTopmost(UINT
uNotifyCode, int nID, HWND hWndCtl){
bool bTopmost =
!(UIGetState(nID) & UPDUI_CHECKED);
SetWindowPos(bTopmost
? HWND_TOPMOST : HWND_NOTOPMOST,
0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
UISetCheck(nID,
bTopmost);
}
...
|
À̰ÍÀ¸·Î pop-up
menu ¾ÆÀÌÅÛ¿ëÀÇ UI°»½Å Çڵ鷯°¡ ¿òÁ÷ÀÌ°Ô µË´Ï´Ù. ¿ì¼± ´ÙÀ̾ó·Î±×¿¡ ¸Þ´º¸¦ Ãß°¡ÇÏ´Â °ÍÀ¸·Î ¸Þ´º°¡ Ç¥½ÃµÉ ¶§ WM_INITMENUPOPUP ¸Þ¼¼Áö°¡ ´ÙÀ̾ó·Î±×¿¡ º¸³»Á® ¿À°Ô µË´Ï´Ù. CMainDlg Ŭ·¡½ºÀÇ ¸Þ½ÃÁö ¸Ê¿¡¼´Â WM_INITMENUPOPUP ¸Þ¼¼Áö¸¦
ó¸®ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÌ ¸Þ¼¼Áö´Â üÀÎóÀÇ CUpdateUIŬ·¡½º¿¡ º¸³»Áý´Ï´Ù. CUpdateUI Ŭ·¡½ºÀÇ base class ÀÌ·Á¸é CUpdateUIBase WM_INITMENUPOPUP ¸Þ¼¼Áö Çڵ鷯°¡ ÁغñµÇ¾î ÀÖ¾î pop-up menu ¾ÆÀÌÅÛÀÌ °»½ÅµË´Ï´Ù.
|