.


:




:

































 

 

 

 





GetMenu hwnd:

 

HMENU GetMenu(HWND hwnd);

 

, NULL. GetSubMenu , nPos hmenu:

 

HMENU GetSubMenu(HMENU hmenu, int nPos);

 

hmenu nPos. GetSubMenu NULL, hmenu nPos .

IsMenu , hmenu , :

 

BOOL IsMenu(HMENU hmenu);

 

GetMenuItemCount hmenu:

 

int GetMenuItemCount(HMENU hmenu);

 

-1.

. "" 4.3, . 0 ("").

4.4.

#include <windows.h>

#include <tchar.h>

 

BOOL RegClass(WNDPROC, LPCTSTR, UINT);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

 

HINSTANCE hInstance;

TCHAR szClass[] = TEXT("GetMenuInfo");

 

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpszCmdLine, int nCmdShow)

{

MSG msg;

HWND hwnd;

hInstance = hInst;

if (!RegClass(WndProc, szClass, COLOR_WINDOW)) return FALSE;

hwnd = CreateWindow(szClass, TEXT(" "),

WS_OVERLAPPEDWINDOW | WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, hInstance, NULL);

if (!hwnd) return FALSE;

while(GetMessage(&msg, 0, 0, 0))

{ TranslateMessage(&msg); DispatchMessage(&msg); }

return msg.wParam;

}

 

BOOL RegClass(WNDPROC Proc, LPCTSTR szName, UINT brBackground)

{

WNDCLASS wc;

wc.style = wc.cbClsExtra = wc.cbWndExtra = 0;

wc.lpfnWndProc = Proc;

wc.hInstance = hInstance;

wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);

wc.hCursor = LoadCursor(NULL, IDC_ARROW);

wc.hbrBackground = (HBRUSH)(brBackground +1);

wc.lpszMenuName = NULL;

wc.lpszClassName = szName;

return (RegisterClass(&wc)!= 0);

}

 

UINT GetMenuItem(HMENU hMenu, UINT uIns)

{

MENUITEMINFO mii;

mii.cbSize = sizeof(MENUITEMINFO);

mii.fMask = MIIM_ID;

GetMenuItemInfo(hMenu, uIns, 1, &mii);

return mii.wID;

}

 

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)

{

static HMENU hMainMenu, hFiles;

static HWND hOther;

switch (msg)

{

case WM_CREATE:

{

hOther = FindWindow(TEXT("SetMenuInfo"), TEXT(" "));

if (!hOther)

{ MessageBox(hwnd, TEXT(" "), TEXT(""), MB_OK); return 0; }

hMainMenu = GetMenu(hOther);

if (!hMainMenu)

{ MessageBox(hwnd, TEXT("OKHo "), TEXT(""), MB_OK); return 0; }

hFiles = GetSubMenu(hMainMenu, 0);

if (!hFiles)

{ MessageBox(hwnd, TEXT("HeT "), TEXT(""), MB_OK); return 0; }

int items = GetMenuItemCount(hFiles);

TCHAR str[50]={0};

_itow(items, str, 10);

_tcscat(str, TEXT(" '' "));

MessageBox(hwnd, str, TEXT(""), MB_OK);

return 0;

}

case WM_LBUTTONDOWN:

{

UINT uCom = GetMenuItem(hFiles, 0);

if (!uCom)

MessageBox(hwnd, TEXT(" "), TEXT(""), MB_OK);

SendMessage(hOther, WM_COMMAND, uCom, 0L);

return 0;

}

case WM_DESTROY: { PostQuitMessage(0); return 0; }

}

return DefWindowProc(hwnd, msg, wParam, lParam);

}

 

4.3.

, .

WM_CREATE.

:

1. , " SetMenuInfo " " ":

 

hOther=FindWindow("SetMenuInfo", " ");

 

2. :

 

hMainMenu = GetMenu(hOther);

 

3. 0:

 

hFiles = GetSubMenu(hMainMenu, 0);

 

4. hFiles:

 

int items = GetMenuItemCount(hFiles);

 

5. :

 

char str[50];

itoa(items, str, 10);

strcat(str, " '' ");

MessageBox(hwnd, str, "", _);

 

:

1. hFiles:

 

UINT uCom=GetMenuItem(hFiles, 0);

 

, GetMenuItem :

 

UINT GetMenuItem(HMENU hMenu, UINT uIns)

{

MENUITEMINFO mii;

mii.cbSize = sizeof(MENUITEMINFO);

mii.fMask = MIIM_ID;

GetMenuItemInfo(hMenu, uIns, 1, &mii);

return mii.wID;

}

 

. , GetMenuItem(hFiles, 0) hFiles.

2. WM_COMMAND uCom:

 

SendMessage(hOther, WM_COMMAND, uCom, 0L);

 

, 4.3 WM_COMMAND wParam, CM_FILE_OPEN.

4.3 . ; " " ( ).

WM_COMMAND uCom . " " " ". , , . , .

, SetMenu.

WM_INITMENU

WM_INITMENU . wParam . WM_INITMENU , 0. .





:


: 2016-09-06; !; : 234 |


:

:

.
==> ...

2115 - | 1967 -


© 2015-2024 lektsii.org - -

: 0.017 .